[네트워크] HTTP란? + HTTP messages (Request & Response)
HTTP? : HyperText Transfer Protocol
= Application Layer의 프로토콜 (HTML과 같은 문서들을 전송)
* 프로토콜 = 통신 규약, 체계
웹 브라우저와 웹 소통을 위해 디자인 됨
클라이언트가 HTTP messages 양식에 맞춰 요청을 보내면, 서버도 HTTP messages 양식에 맞춰 응답한다!
HTTP messages :
클라이언트와 서버 사이에서 데이터가 교환되는 방식
- 요청(Requests)
- 응답(Responses)
요청 / 응답 messages 모두 유사한 구조를 지니고 있다.
1. start line : 요청, 응답의 상태를 나타냄 (응답 : status line)
2. HTTP headers : 요청 지정, 메시지 포함 본문 설명하는 헤더의 집합
3. empty line : 헤더 ~ 본문 구분하는 빈 줄
4. body : 요청과 관련된 데이터 or 응답과 관련된 데이터, 문서 ...
1 + 2 = 헤드 (head)
4 = payload
HTTP messages의 구조
요청(Requests)
1. Start Line (사진에서는 POST / HTTP / 1.1에 해당)
(1) HTTP method (GET / POST / PUT ...)
(2) 요청 대상, 프로토콜, 포트, 도메인의 절대 경로 (1)에 따라 달라짐
(3) HTTP 버전
2. Headers
'헤더이름 : 어쩌구' 방식을 따름
값은 헤더에 따라 다르다.
헤더 종류 :
(1) Request headers : fetch를 통해 가져올 리소스, 클라이언트 자체에 대한 자세한 정보 포함
(2) General headers : 메세지 전체에 적용
(3) Representation headers : (=Entity headers) body에 담긴 리소스의 정보 포함
3. Body
* 모든 요청에 body가 필요하지는 않다.
ex) GET, HEAD, DELETE, OPTIONS.. - 서버에 리소스 요청하는 경우는 body 필요 X
Body 종류 :
(1) Single-resource bodies (단일-리소스 본문) : 헤더 두 개로 정의됨
(2) Multiple-resource bodies (다중-리소스 본문) : 여러 파트로 구성 - 각 파트마다 다른 정보 有
응답(Responses)
1. Status Line
(1) 현재 프로토콜의 버전 (HTTP/1.1)
(2) 상태 코드 - 요청의 결과 (200, 404, 500 ...)
(3) 상태 텍스트 - 상태 코드에 대한 설명
2. Headers
헤더 종류
(1) General headers : 메세지 전체에 적용되는 헤더
(2) Response headers : 위치, 서버 자체에 대한 정보(이름, 버전 등)
(3) Representation headers : (=Entity headers), body에 담긴 리소스의 정보
3. Body
* 201, 204같은 상태코드의 응답에는 본문 필요 X
바디 종류
(1) Single-resource bodies(단일-리소스 본문) : 두 개의 헤더로 정의됨
(2) Multiple-resource bodies(다중-리소스 본문) : 서로 다른 정보를 담고 있는 body
HTTP의 특징 : 무상태성(Stateless)
= 상태를 가지지 않는다!
클라이언트-서버 통신 과정에서, HTTP가 클라이언트나 서버의 상태를 확인하지 않는다.
몇 번 요청+응답을 주고받는지, 몇 번 성공했는지 등 상태를 저장하지 않음
그저 요청-응답 여부만 보여질뿐..