본문 바로가기

Infrastructure/Network

[HTTP] 메시지 구조

HTTP 메시지의 구조에 대해서 알아본다.

HTTP 메시지 구조는 아래와 같은 규칙을 가진다.
start-line 시작 라인
header 헤더
empty line 공백 라인 (CRLF)
message body

구체적으로 HTTP 응답 메시지의 구조에 대해서 알아보자.

공식 스펙(https://datatracker.ietf.org/doc/html/rfc7230#section-3)에 나와있는 규칙과 규칙을 따르는 예시다.

공식 스펙
HTTP-message = start-line
               *( header-field CRLF )
               CRLF
               [ message-body ]
예시 HTTP 요청 메시지
GET /ranking/read?oid=112&aid=0003447803 HTTP/1.1
Host: www.entertain.naver.com
  • 요청 메시지
    • 시작 라인(start-line)
    • start-line = request-line / status-line
    • request-line = method SP(공백) request-target SP HTTP-version CRLF(엔터)
    • HTTP 메서드 (GET: 조회)
      • 종류: GET, POST, PUT, PATCH, DELETE ...
      • 서버가 수행해야 할 동작 지정
    • 요청 대상(/ranking/read?oid=112&aid=0003447803)
      • absolute-path[?query](절대경로(?쿼리))
      • 절대경로="/"로 시작하는 경로
    • HTTP Version(1.1)
예시 HTTP 응답 메시지
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423

<html><body>...</body></html>
  • 응답 메시지
    • 시작 라인(start-line)
    • start-line = request-line / status-line
    • status-line = HTTP-version SP status-code SP reason-phrase CRLF
    • HTTP Version
    • HTTP 상태 코드: 요청 성공, 실패를 표시
      • 200, 400, 500 등
    • 이유 문구: 직관적인 상태 코드 설명 글
HTTP 헤더
  • header 규칙 = field-name":" OWS field-value OWS (OWS: 띄어쓰기 허용)
  • header 용도 = HTTP 전송에 필요한 모든 부가 정보(메시지 바디의 내용, 메시지 바디의 크기 등)
HTTP 바디
  • body 용도 = 실제 전송할 데이터

이번 장에서는 HTTP 헤더와 HTTP 바디에 대해서는 상당히 간략하게 알아보았다.

이어지는 장에서 좀 더 자세하게 알아보도록 한다.

'Infrastructure > Network' 카테고리의 다른 글

[HTTP] 메서드 - 2 (종류)  (0) 2021.06.23
[HTTP] 메서드 - 1 (API URI 설계)  (0) 2021.06.23
[HTTP] 기본  (0) 2021.06.22
[URI] URI와 WebBrowser  (0) 2021.06.22
[Protocol] 인터넷 통신  (0) 2021.06.21