Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Archives
Today
Total
관리 메뉴

가능세계

[Network] HTTP 메시지(HTTP Message) 구조 파헤치기 본문

Blog/Network

[Network] HTTP 메시지(HTTP Message) 구조 파헤치기

cona-tus 2023. 9. 10. 16:52

network-icon

 

HTTP 메시지클라이언트와 서버 간에 데이터가 교환되는 방식입니다.

 

메시지는 두 가지 유형이 있습니다.

 

  1. 요청(request): 클라이언트가 서버로 전송하여 서버에서 작업을 실행하도록 요청하는 메시지입니다.
  2. 응답(response): 서버가 그 요청에 대한 답변을 클라이언트에게 제공하는 메시지입니다.



1. HTTP 메시지 구조

HTTP 요청과 응답 메시지의 구조는 서로 닮았으며, 그 구조는 다음과 같습니다.

 

http-structure

 

HTTP 메시지는 위에서부터 차례대로 시작 라인(Start Line), 헤더(Header), 공백 라인(Empty Line), 바디(Message Body)로 구성되어 있습니다.

 

  1. 시작 라인
    시작 라인에는 실행되어야 할 요청, 혹은 수행에 대한 성공 여부가 기록되어 있습니다.
  2. HTTP 헤더
    요청 또는 메시지 본문에 대한 설명입니다. HTTP 전송에 필요한 모든 부가 정보를 담고 있습니다.
  3. 빈 줄
    공백은 HTTP 메시지 값을 구분하기 위한 라인이므로 반드시 포함되어야 합니다.
  4. 메시지 본문
    실제 전송할 데이터가 포함됩니다. HTTP 요청의 종류에 따라 메시지 바디가 있거나 없을 수 있습니다.

 

 

2. HTTP 요청 메시지

http-req

2-1. 시작 라인(Start Line)

  1. HTTP 메서드(Method): 서버가 수행해야 할 동작을 지정합니다.
  2. 요청 대상(Request-target): 일반적으로 URL, 프로토콜, 포트, 도메인의 절대 경로("/")를 나타냅니다. (e.g. HEAD /test.html?query=alibaba HTTP/1.1, GET /anypage.html HTTP/1.1)
  3. HTTP 버전(Version): 사용된 HTTP 버전이 들어갑니다.

 

2-2. 헤더(Header)

HTTP 요청 헤더에는 HTTP 전송에 필요한 모든 부가 정보가 들어갑니다. 예를 들어, 메시지 크기, 압축 여부, 인증 정보, 브라우저 정보, 서버 정보, 캐시 등이 있습니다.

 

필요시 임의의 헤더를 추가할 수 있습니다. (e.g. helloworld: hihi)

 

2-3. 공백 라인(Empty Line)

공백 라인은 헤더와 바디를 구분하기 위한 줄입니다.



3. HTTP 응답 메시지

http-res

3-1. 시작 라인(Status Line)

  1. HTTP 버전(HTTP Version)
  2. 상태 코드(Status Code): 클라이언트 요청의 성공 여부를 나타냅니다.
  3. 상태 메시지(Status Message): 상태 코드에 대한 설명을 짧은 글로 나타내어 사람이 쉽게 이해할 수 있도록 합니다.

 

3-2. 헤더(Header)

HTTP 응답 헤더는 요청 헤더와 동일한 구조를 가지고 있습니다.

 

3-3. 공백 라인(Empty Line)

공백 라인은 헤더와 바디를 구분하기 위한 줄입니다.

 

3-4. 메시지 바디(Message Body)

메시지 바디실제 전송할 데이터(HTML 문서, 이미지, 영상, JSON 등 byte로 표현 가능한 모든 데이터)를 담고 있습니다.

 

본문은 응답의 마지막 부분에 들어갑니다. 다만, 모든 응답에 본문이 들어가지는 않습니다.




참고