alt
Home HTTP 완벽가이드 3장 - 1. HTTP 메시지
Post
Cancel

HTTP 완벽가이드 3장 - 1. HTTP 메시지

: HTTP가 인터넷 배달원이라면, HTTP 메시지는 실제 보내지는 배달물


메시지의 흐름

  • 방향: 인바운드, 아웃바운드, 업스트림, 다운스트림
    • 인바운드: 클라이언트(사용자 에이전트) -> 원 서버. 서버(파드) 입장에서 볼 때 들어오는 것
    • 아웃바운드: 원 서버 -> 사용자 에이전트(클라이언트). 서버(파드) 입장에서 볼 때 나가는 것
    • 업스트림, 다운스트림: 메시지는 항상 다운스트림으로 흐른다. 발송자는 수신자 입장에서 업스트림
  • 서버 <-> 프락시 <-> 클라이언트 사이를 흐른다.



메시지의 구조


시작줄, 헤더, 본문

e.g ) 응답메시지 예.

시작줄 : HTTP/1.1 201 CREATED
헤더 :   Content-type: text/plain
        Content-length: 19
빈줄
본문 :   Hello world!
  • 시작줄헤더에는 캐리지 리턴(Carriage Return. \r), 개행문자(Line Feed. \n)로 끝난다.(CRLF)
    • 항상 CRLF는 아니다(LF - 윈도우에서)
      • \r (캐리지 리턴) : 커서를 맨 앞으로 이동
      • \n (라인 피드) : 커서를 아래로 이동.
      • 둘을 함께 사용하면(CRLF) - 다음줄의 가장 앞으로 커서를 이동
    • 본문이 없는 경우에도 CRLF로 끝나야 함. 그러나, 휴먼에러 방지를 위해 마지막 CRLF 없이도 메시지를 잘 받아들일 수 있어야 한다.
    • 헤더는 여러 줄 가능.
  • 빈줄 : 헤더와 본문 구분
  • 본문 : 메시지(데이터) 덩어리
    • 엔터티 본문


요청 메시지와는 시작줄의 문법만 다르다.

e.g) 요청 메시지 시작 줄

1
<메서드> <요청 URL> <버전>
  • 요청 URL에 host, port가 생략되어있어도 서버는 자신을 가리키는 것으로 간주

e.g) 응답 메시지 시작 줄

1
<버전> <상태 코드> <사유 구절>
  • 버전: HTTP/<메이저>.<마이너>
    • 소수라고 헷갈리지 말 것 : HTTP/2.22는 HTTP2.3보다 큰 버전(22는 3보다 크니까)
  • 사유 구절: 사람에게 읽히기 위한 목적으로 설명하는 문구.
    • HTTP1.0 200 NOT OKHTTP1.0 200 OK는 둘다 성공을 의미하는 것으로 처리되어야 한다.
    • 상태코드와 일대일 대응



Reference)

HTTP 완벽가이드

This post is licensed under CC BY 4.0 by the author.