HTTP
MDN
- HyperText Transfer Protocol, HTML과 같은 문서를 전송하기 위한 Application Layer 프로토콜
- HTTP의 특징: Stateless(무상태성), 특정 상태를 유지하지 않는 특징, 클라이언트가 HTTP messages 양식에 맞춰 요청을 보내면, 서버도 HTTP messages 양식에 맞춰 응답, HTTP가 클라이언트나 서버의 상태를 확인하지 않고, 상태를 추적하거나 저장하지도 않음
- V1,2,3까지 현재 개발됨, 버전 별로 용도가 다름.
HTTP Message
message의 구조
(start(status) line과 HTTP headers를 묶어 head, payload는 body라고 함)
-
start line(request) / status line(response)
- 항상 첫 번째 줄에 위치, 요청이나 응답의 상태
- request: 수행할 작업(POST, GET, PUT...) / 요청 대상 (보통 URL, URI, 형식은 HTTP method마다 다름 / HTTP 버전 (1.0, 1.1...)
- response: protocol의 버전(HTTP/1.1) / status code(200, 404) / status text (OK, Not Found)
-
HTTP headers: 요청을 지정하거나, 메세지의 본문을 설명하는 헤더의 집합
- request: HeaderName: value 의 기본 구조를 따름
- general headers: 메세지 전체에 적용, body와는 무관
- request headers: fetch로 가져올 리소스, 클라이언트 자체의 정보
- representation headers: (entity headers) body의 리소스의 정보(컨텐츠 길이, MIME type)
- response: request와 동일, HeaderName: value 의 기본 구조를 따름
- general headers: 메세지 전체에 적용, body와는 무관
- response headers: 위치, 서버 자체의 정보(이름,버전)와 같은 부가 정보
- representation headers: (entity headers) body의 리소스의 정보(컨텐츠 길이, MIME type)
-
empty line: header와 본문을 구분하는 빈 줄
-
body(payload):
- request
- GET,HEAD,DELETE,OPTIONS처럼 서버에 리소스 요청하는 경우에는 불필요
- POST, PUT과 같은 데이터를 업데이트하기 위해 사용
- Single-resource bodies: 2header(content type/length)로 정의된 단일 파일
- multiple-resource bodies: 여러 파트로 구성, 보통 HTML form과 관련됨
- response
- 201, 204와 같은 상태 코드를 가지는 응답에는 생략 가능
- single-resource bodies: length를 아는 경우, 2header(content type/length)로 정의 / length를 모르는 경우, Transfer-Encoding이 chunked로 설정되어 있으며, 파일은 chunk로 나뉘어 인코딩되어 있음
- multiple-resource bodies: 서로 다른 정보를 담고 있는 body