Home HTTP - 03. HTTP 메시지
Post
Cancel

HTTP - 03. HTTP 메시지

책 “HTTP 완벽 가이드”를 읽고 정리한 글입니다.

메시지의 흐름

HTTP 메시지는 HTTP 애플리케이션 사이를 이동하는 데이터 블럭이다. 메시지는 클라이언트, 서버, 프록시 사이를 오간다.

메시지는 원 서버를 인바운드로 송신된다

Untitled

메시지는 원(original) 서버를 인바운드로 송신됐다가, 처리가 끝나면 사용자에게 (아웃바운드로) 송신된다.

  • 인바운드(inbound) : 메시지가 클라이언트에서 서버로 이동하는 것
    • inbound : 오는
  • 아웃바운드(outbound) : 메시지가 서버에서 클라이언트로 이동하는 것
    • outbound : 떠나는

메시지는 다운스트림으로 흐른다

Untitled

메시지를 받는 쪽이 다운스트림, 메시지를 보내는 쪽이 업스트림이다.

메시지의 구성

Untitled

HTTP 메시지는 데이터의 구조화된 블록이다.

메시지의 구성은 다음과 같다.

  • 시작줄
    • 메시지의 종류를 나타냄
  • 헤더
    • 속성을 나타냄
  • 본문
    • 데이터를 담고있음

메시지 문법

요청 메시지의 형식은 다음과 같다.

1
2
3
4
<메서드> <요청 URL> <버전>
<헤더>

<엔터티 본문>

응답 메시지의 형식은 다음과 같다.

1
2
3
4
<버전> <상태 코드> <사유 구절>
<헤더>

<엔터티 본문>
  • 메서드
    • 클라이너트 측에서 서버가 리소스에 대해 수행해주길 바라는 동작
    • GET, HEAD, POST 등이 있다.
  • 요청 URL
    • 요청 대상이 되는 리소스를 지칭하는 URL의 경로 구성요소
  • 버전
    • 메시지에서 사용중인 HTTP 버전
    • HTTP/<메이저>.<마이너>
  • 상태 코드
    • 요청 중에 무슨 일이 일어났는지를 나타내는 세 자리 수
    • 첫 번째 자리수는 상태의 대분류이다. (2: 성공, 4,5: 에러)
  • 사유 구절(reason-phrase)
    • 상태 코드를 사람들이 이해할 수 있도록 설명해주는 문구
  • 헤더들
    • <이름>: <값> \r\n 순서로 나타낸다.
  • 엔터티 본문
    • 임의의 데이터 블록
    • 없을 수도 있다.

시작줄

무엇을 해야하는지를 알려준다.

요청에서

서버가 리소스에 무엇을 할지를 요청한다.

응답에서

상태 정보결과 데이터를 담아 클라이언트에게 돌려준다.

메서드

서버가 무엇을 해야하는지를 시작줄의 맨 앞에 적는다.

다음은 자주 쓰이는 메소드의 종류이다.

메소드설명메시지 본문 존재 여부
GET서버에서 어떤 문서를 가져온다.N
HEAD서버에서 어떤 문서에 대해 헤더만 가져온다.N
POST서버가 처리해야 할 데이터를 보낸다.Y
PUT서버에 요청 메시지의 본문을 저장한다.Y
TRACE메시지가 프록시를 거쳐 서버에 도달하는 과정을 추적한다.N
OPTIONS서버가 어떤 메서드를 수행할 수 있는지를 확인한다.N
DELETE서버에서 문서를 제거한다.N

상태 코드

다음은 상태 코드의 종류이다.

전체 범위정의된 범위분류
100-199100-101정보
200-299200-206성공
300-399300-305리다이렉션
400-499400-415클라이언트 에러
500-599500-505서버 에러

많이 쓰이는 상태 코드는 다음과 같다.

상태 코드사유 구절의미
200OK성공. 요청한 모든 데이터는 응답 본문에 들어있다.
401Unauthorized사용자 이름과 비밀번호를 입력해야 한다.
404Not Found서버가 요청받은 URL에 해당하는 리소스를 찾을 수 없다.

헤더

헤더 필드는 요청/응답 메시지에 추가 정보를 더해준다.

이름/값 쌍으로 된 목록의 형태이다.

1
2
3
4
Content-Type: text/html; charset=UTF-8
Referrer-Policy: no-referrer
Content-Length: 1555
Date: Wed, 15 Mar 2023 11:34:02 GMT

엔터티 본문

HTTP 메시지는 이미지, 비디오, HTML 문서 등 다양한 데이터를 담을 수 있는데, 이러한 데이터는 엔터티 본문에 담겨진다.

참고

HTTP 메시지 - HTTP | MDN

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

HTTP - 02. URL과 리소스

HTTP - 04. 커넥션 관리