본문 바로가기
Dev/Network

『Network』 HTTP(HyperText Transfer Protocol)

by 세대교체 2024. 11. 28.

HTTP(HyperText Transfer Protocol)는 월드 와이드 웹(WWW)에서 하이퍼텍스트 문서를 전송하기 위한 표준 프로토콜이다.

 

현대의 HTTP 프로토콜은 단순히 하이퍼텍스트(HTML) 문서를 전송하는 데 그치지 않고 JSON(JavaScript Object Notation), XML(eXtensible Markup Language), HTML, 파일 전송 등의 데이터 전송에 활용되고 있다.

 

클라이언트(웹 브라우저)와 서버 간의 통신을 담당하며 OSI 7 계층 중 응용 계층에 속한다.

 

하이퍼텍스트란?

하이퍼텍스트는 문서 내에서 다른 텍스트나 리소스로의 참조(링크)를 포함하는 텍스트를 의미한다.

 

 

HTTP 특징

클라이언트-서버 모델

  • 클라이언트가 요청을 보내면 서버가 응답을 반환하는 구조다.

무상태성(Stateless)

  • 각 요청 간에 상태 정보를 유지하지 않습니다. 즉, 이전 요청의 정보를 다음 요청에서 활용하지 않는다.

텍스트 기반 프로토콜

  • 사람이 읽을 수 있는 형식으로 메시지가 교환된다.

 

 

HTTP 메시지 구조

HTTP 메시지는 요청과 응답 두 가지로 나뉜다.

요청 메시지

  • Start line: POST / HTTP/1.1. 예: HTTP 메서드, URI, 그리고 HTTP 버전을 나타냄.
  • Headers: 요청과 관련된 부가 정보를 제공. 예: Host, User-Agent, Content-Type, Content-Length.
  • Empty line: 헤더와 본문을 구분.
  • Body: 요청 본문 데이터.

응답 메시지

  • Status line: HTTP/1.1 403 Forbidden. : HTTP 버전, 상태 코드, 상태 메시지를 포함.
  • Headers: 응답과 관련된 부가 정보를 제공. 예: Server, Content-Type, Content-Length.
  • Empty line: 헤더와 본문을 구분.
  • Body: HTML 문서와 같은 응답 데이터.

 

 

무상태성(Stateless)

 

HTTP는 무상태성을 가지므로 각 요청은 독립적으로 처리된다. 이는 서버가 이전 요청의 상태를 기억하지 않는다는 뜻이다.

이러한 특징서버 확장성과 단순성을 높여주지만 상태 유지를 위해서는 쿠키, 세션, 토큰 등의 추가적인 방법이 필요하다.