728x90

HTTP 메시지는 요청 메시지와 응답 메시지의 내용이 조금 다르다.

 

우선 HTTP 메시지의 구성을 살펴보자

     HTTP-message   = start-line
                      *( header-field CRLF )
                      CRLF
                      [ message-body ]
CRLF는 엔터를 의미

tools.ietf.org/html/rfc7230#section-3

HTTP 1.1의 공식 스펙을 확인해보면 위와 같은 형식으로 이루어진다고 기술되어 있다.

 

HTTP 요청 메시지 - <출처 : 모든 개발자를 위한 HTTP 웹 기본 지식 - 김영한>

 

HTTP 메시지 구조는 크게 4가지로 나눌 수 있다

- start-line : 시작 라인

- *( header-field CRLF ) : 헤더

- CRLF : 공백 라인

- [ message-body ] : 내용

 

 

 start-line (요청 메시지)

요청 메시지에서 start-line = request-line
request-line = method SP(공백) request-target SP HTTP-version CRLF(엔터)

CRLF는 엔터, SP는 공백(띄어쓰기)를 의미

 

  • HTTP 메서드

    • GET, POST, PUT, DELETE 등등

  • 요청 대상 (/search?q=hello&hl=ko) 

  • absolute-path[?query] (절대경로[?쿼리])

    • 절대경로= "/" 로 시작하는 경로

      (http://...?x=y 와 같이 다른 유형의 경로지정 방법도 있음)

  • HTTP Version

 

start-line (응답 메시지)

응답 메시지에서 start-line = status-line

status-line = HTTP-version SP(공백) status-code SP reason-phrase CRLF(엔터)

  • HTTP 버전

  • HTTP 상태 코드: 요청 성공, 실패를 나타냄

    • 200: 성공

    • 400: 클라이언트 요청 오류

    • 500: 서버 내부 오류

  • 이유 문구: 사람이 이해할 수 있는 짧은 상태 코드 설명 글

    • ex) OK

 

header

header-field = field-name ":" OWS field-value OWS

OWS:띄어쓰기 허용 (field-name 다음 ":"는 반드시 띄어쓰기 없이 입력 해야함. ex) Content-Length: 3423
field-name은 대소문자 구문 없음

 

  • HTTP 전송에 필요한 모든 부가정보

    • 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트(브라우저) 정보, 서버 애플리케이션 정보, 캐시 관리 정보 등등

    • 표준 헤더 정보 : en.wikipedia.org/wiki/List_of_HTTP_header_fields

    • 필요시 임의의 헤더 추가 가능

 

message-body 

  • 실제 전송할 데이터
  • HTML 문서, 이미지, 영상, JSON 등등 byte로 표현할 수 있는 모든 데이터 전송 가능
728x90

'개발 지식 > WEB 기본 지식' 카테고리의 다른 글

Stateful, Stateless (상태유지, 무상태)  (0) 2021.01.30
웹 브라우저 요청 흐름  (0) 2021.01.24
TCP, UDP  (0) 2021.01.17
IP(인터넷 프로토콜)  (0) 2021.01.13
복사했습니다!