'모든 개발자를 위한 HTTP 웹 기본 지식' 강의를 보고 정리하였습니다.
클라이언트와 서버는 HTTP 메시지로 거의 모든 형태의 데이터를 주고받을 수 있습니다.
HTTP 메시지의 구조
HTTP 메시지는 다음과 같은 구조를 가지고 있습니다.
- start-line (시작 라인)
- header (헤더)
- empty line (공백 라인, CRLF) →필수 ❗
- message body
요청 메시지 vs 응답 메시지
HTTP는 요청 메시지와 응답 메시지의 거의 비슷한 구조를 가지고 있지만, 다른 형태를 띄고 있습니다.
start-line (시작 라인)
HTTP 요청 메시지에서는 시작 라인을 request line이라고 부릅니다.
request line = method *SP request-target SP HTTP-version CRLF
ex) GET /search?q=hello&hl=ko HTTP/1.1
*SP = 공백, CRLF = 엔터
요청 메시지 start line 구성
- HTTP 메서드
- 👉🏻 method SP request-target SP HTTP-version CRLF
- 종류: GET, POST, PUT, DELETE 등
- 서버가 수행해야 할 동작을 지정합니다.
- ex) GET: 리소스 처리, POST: 요청 내역 처리, PUT: 리소스 수정, DELETE: 리소스 삭제
- 요청 대상
- method SP 👉🏻 request-target SP HTTP-version CRLF
- absolute-path[?query] → 절대경로[?쿼리]
- HTTP 버전
- method SP request-target SP 👉🏻 HTTP-version CRLF
HTTP 응답 메시지에서는 시작 라인을 status line이라고 부릅니다.
status line = HTTP-version SP status-code SP reason-phrase CRLF
ex) HTTP/1.1 200 OK
응답 메시지 start line 구성
- HTTP 버전
- 👉🏻 HTTP-version SP status-code SP reason-phrase CRLF
- HTTP 상태코드
- HTTP-version SP 👉🏻 status-code SP reason-phrase CRLF
- 클라이언트가 보낸 요청 수행 성공 혹은 실패를 나타냅니다.
- ex) 200: 성공, 400: 클라이언트 요청 오류, 500: 서버 내부 오류 등
- 이유 문구
- HTTP-version SP status-code SP 👉🏻 reason-phrase CRLF
- 사람이 이해할 수 있는 짧은 설명이 들어갑니다.
header (헤더)
헤더는 HTTP 요청 메시지와 응답 메시지 공통으로 다음과 같은 형식을 갖고 있습니다.
header-field = field-name ":" *OWS field-value OWS
헤더에는 HTTP 전송에 필요한 모든 부가정보(메시지 바지의 내용, 바디의 크기, 압축, 인증 등)가 들어있습니다.
- field-name은 대소문자를 구분하지 않습니다.
- 필요시 임의의 헤더 추가가 가능합니다.
- 표준 헤더가 굉장히 많습니다.
*OWS: 띄어쓰기 허용
body (본문)
본문에는 클라이언트와 서버가 통신하면서 실제로 전송할 데이터를 담고 있습니다.
byte로 표현할 수 있는 모든 데이터 전송이 가능합니다. (HTML 문서, 이미지, 영상, JSON 등)
다음 포스팅에서는 HTTP의 메서드에 대해 정리해 보도록 하겠습니다 😊
'HTTP' 카테고리의 다른 글
[HTTP] 4-1. HTTP API (0) | 2025.03.03 |
---|---|
[HTTP] 3-1. HTTP 기본 (0) | 2025.02.25 |
[HTTP] 2-2. 웹 브라우저 요청 흐름 (0) | 2025.02.22 |
[HTTP] 2-1. URI (0) | 2025.02.20 |
[HTTP] 1-5. DNS (0) | 2025.02.19 |