Hyper Text Transfer Protocol : www상에서 정보를 주고 받을 수 있는 프로토콜.
HTTP를 통해 HTML문서를 전달
GET
메소드로만 요청을 수행했다.GET /mypage.html
응답 : <HTML> hello </HTML>
Status code
가 응답의 시작에 붙어 전송되어 성공, 실패를 알 수 있고 이 결과에 대한 동작을 할 수 있게 되었다. -> 200, 404에 따른 분기처리Content-Type
으로 HTML 파일 외 다른 문서 전송 가능
X-Content-Type-Options: nosniff
를 통해 auto casting을 제지하고 사용자가 이에 따라 동작을 정의할 수 있다.GET /mypage.html HTTP/1.0 //start line
User-Agent: NCSA_Mosaic/2.0 (Windows 3.1) //Header
HOST: developer.mozilla.org
//요청의 실제 메시지/내용
GET /myimage.gif HTTP/1.0
User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)
200 OK
Date: Tue, 15 Nov 1994 08:12:31 GMT
Server: CERN/3.0 libwww/2.17
Content-Type: text/html //headers
<HTML> //body
A page with an image
<IMG SRC="/myimage.gif">
</HTML>
대표적으로 추가된 것Persistent Connection(Keep-alive) 도입Pipelining 기법 도입(HTTP요청, 응답 병렬처리)
웹에 있는 컨텐츠의 양이 많아지면서 기존의 1콘텐츠 1TCP connect, disconnect의 방법이 부담이 커졌다.
그래서 TCP연결 재사용이 필요해졌는데 이때 등장한 것이 Persistent Connection기술이다. (짧게 keep-alive라고도 한다)
HTTP요청, 응답을 병렬로 처리하는 파이프라이닝을 사용하기 위해선 "반드시" 지원되어야함.
Connection: keep-alive
를 추가한다.1.1에서는 기본적으로 지원하기에 굳이 추가하지 않아도 된다.
keep-alive
속성에 기록된 timeout에 따라 일정시간 연결을 유지한다.Connection
헤더를 1.1에서 사용할 때는 keep-alive
하지 않을때이다.
HOL
문제가 발생할 수 있다. (Head-Of-Line)
=> 파이프라이닝, keep-alive를 사용해도 사양상 한계로 인해 HOL blocking이 발생한다.
이를 방지하는 개념이 2.0에서 등장.
HOL Blocking 방지
중복제거, 헤더압축
Server Push
1.1이랑 효율성 90%이상 차이난다.
기존 TCP연결방식의 성능을 개선하고자 UDP방식을 채택했다.
속도개선, 커넥션 수 최소화, 패킷혼잡을 피하는 것이 주요 특징
암호화가 프로토콜 기능으로 포함.
CDN들은 HTTP/3를 지원하고 있음.