HTTP(HyperText Transfer Protocol) : 문서를 정송하기위 한 Application Layer 프로토콜.
정의: 클라이언트와 서버 사이에서 데이터가 교환되는 방식.
유형 2가지 : 요청(requests) / 응답(responses)
1. start line
-> start line & HTTP headers : head라고 부름 / payload는 body라고 함.
Start line
1. 수행할 작업(GET, PUT, POST 등)이나 방식(HEAD or OPTIONS)을 설명하는 HTTP method를 나타냅니다.
ex)
GET method는 리소스를 받음.
POST method는 데이터를 서버로 전송.
origin 형식 : ?와 쿼리 문자열이 붙는 절대 경로입니다. POST, GET, HEAD, OPTIONS 등의 method와 함께 사용합니다.
POST / HTTP 1.1
GET /background.png HTTP/1.0
HEAD /test.html?query=alibaba HTTP/1.1
OPTIONS /anypage.html HTTP/1.0
absolute 형식 : 완전한 URL 형식으로, 프록시에 연결하는 경우 대부분 GET method와 함께 사용합니다.
GET http://developer.mozilla.org/en-US/docs/Web/HTTP/Messages HTTP/1.1
authority 형식 : 도메인 이름과 포트 번호로 이루어진 URL의 authority component 입니다. HTTP 터널을 구축하는 경우, CONNECT와 함께 사용할 수 있습니다.
CONNECT developer.mozilla.org:80 HTTP/1.1
asterisk 형식 : OPTIONS
와 함께 별표(*
) 하나로 서버 전체를 표현합니다.
OPTIONS * HTTP/1.1
Headers
형태:
헤더이름(대 소문자 구분이 없는 문자열) , 콜론(:)
헤더의 종류
Genenral headers: 메세지 전체에 적용이 되는 헤더이다. (body와 관련이 없다.)
Request headers: fetch를 통해 가져올 리소스나 클라이언트의 자세한 정보를 담고 있는 헤더이다.
ex) User-Agent, Accept-Type, Accept-Language과 같은 헤더는 요청을 보다 구체화 합니다.
조건에 따라 제약을 추가 할수 있다.
Representation headers : 이전에는 Entity headers로 불렀으며, body에 담긴 리소스의 정보(컨텐츠 길이, MIME 타입 등)를 포함하는 헤더입니다.
Body
위치: HTTP messages 구조의 마지막에 위치합니다.
특징:
body의 종류:
Status line
내용:
Status line은 HTTP/1.1 404 Not Found.
처럼 생겼습니다.
Headers
요청 헤더와 동일한 구조를 가지고 있습니다.
형태:
헤더이름(대 소문자 구분이 없는 문자열) , 콜론(:)
값은 헤더에 따라 다릅니다. 요청의 헤더와 마찬가지로 몇 그룹으로 나눌 수 있습니다.
General headers : 메시지 전체에 적용되는 헤더로, body를 통해 전송되는 데이터와는 관련이 없는 헤더입니다.
Response headers : 위치 또는 서버 자체에 대한 정보(이름, 버전 등)와 같이 응답에 대한 부가적인 정보를 갖는 헤더로, Vary, Accept-Ranges와 같이 상태 줄에 넣기에는 공간이 부족했던 추가 정보를 제공합니다.
Representation headers : 이전에는 Entity headers로 불렀으며, body에 담긴 리소스의 정보(컨텐츠 길이, MIME 타입 등)를 포함하는 헤더입니다.
Body
위치:
HTTP messages 구조의 마지막에 위치합니다.
특징:
body의 종류:
Single-resource bodies(단일-리소스 본문) :
Multiple-resource bodies(다중-리소스 본문) :
클라이언트와 서버가 통신을 주고 받는중에, HTTP가 클라이언트나 서버의 상태를 확인 하지 않습니다.
HTTP는 통신 규약일 뿐이므로, 상태를 저장하지 않습니다.
지금은 Stateless(무상태성)이 HTTP의 큰 특징이라고 기억하는 것으로 충분합니다.
참고: 코드스테이츠