HTTP Version
HTTP 는 1989년 당시 제네바의 CERN에서 일하고 있던 Tim Berners-Lee는 인터넷 상의 하이퍼텍스트 시스템을 만들기 위한 제안을 작성했으며 초기에 Mesh 라고 불리던 그것은 1990년에 구현 과정에서 월드 와이드 웹 으로 이름을 바꿨습니다. 기존의 TCP 그리고 IP 프로토콜 상에서 만들어지면서 4개의 빌딩 블록으로 구성
- HTML 하이퍼텍스트 문서를 표현하기 위한 텍스트 형식의 하이퍼텍스트 마크업 언어
- HTTP 문서를 교환하기 위한 프로토콜
- Browser 문서를 디스플레이 하기 위한 클라이언트인 WWW

HTTP 0.9 (초기 버전)
차후 버전과 구별하기 위해 불러진 버전 단일 라인으로 구성되어 원-라인 프로토콜이라고도 불림
// Request
GET /mypage.html
// Response
<HTML>
A very simple HTML page
</HTML>
가능한 메서드가 GET이 유일했으며 버전정보도 없었음
HTTP 1.0
// Request
GET /mypage.html HTTP/1.0
User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)
// Response
200 OK
Date: Tue, 15 Nov 1994 08:12:31 GMT
Server: CERN/3.0 libwww/2.17
Content-Type: text/html
<HTML>
A page with an image
<IMG SRC="/myimage.gif">
</HTML>
// Request
GET /myimage.gif HTTP/1.0
User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)
// Response
200 OK
Date: Tue, 15 Nov 1994 08:12:32 GMT
Server: CERN/3.0 libwww/2.17
Content-Type: text/gif
(image content)
추가된 기능
- 버전정보
- 상태 코드
- 응답 시간
- 새로운 HTTP 헤더 기능 추가
HTTP 1.1
- 1997년 1월 RFC 2068에서 처음 공개
- 커넥션이 재사용될 수 있게 시간 절약
- 파이프라이닝을 추가하여 첫번째 요청에 대한 응답이 완전히 전송되기 이전에 두번째 요청 전송을 가능케 하여 레이턴시를 줄임
- Chunke된 응답 또한 지원
- 언어, 인코딩 혹은 타입을 포함한 컨텐츠 협상이 도입
GET /en-US/docs/Glossary/Simple_header HTTP/1.1
Host: developer.mozilla.org
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://developer.mozilla.org/en-US/docs/Glossary/Simple_header
200 OK
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Date: Wed, 20 Jul 2016 10:55:30 GMT
Etag: "547fa7e369ef56031dd3bff2ace9fc0832eb251a"
Keep-Alive: timeout=5, max=1000
Last-Modified: Tue, 19 Jul 2016 00:59:33 GMT
Server: Apache
Transfer-Encoding: chunked
Vary: Cookie, Accept-Encoding
HTTP 2
- 텍스트 프로토콜이라기 보다는 이진 프로토콜 이진 프레이밍 메커니즘(binary framing mechanism)은 사용 중인 API나 설정 파일 등을 변경하지 않아도 되도록 설계 되었기 때문에, 사용자가 보고 이해하기 쉬움.
- 전송된 데이터의 분명한 중복과 그런 데이터로부터 유발된 불필요한 오버헤드를 제거하면서, 연속된 요청 사이의 매우 유사한 내용으로 존재하는 헤더들을 압축

HTTP/3 – HTTP over QUIC
HTTP의 다음 메이저 버전인 HTTP/3에서는 전송 계층 부분에 TCP/TLS 대신 QUIC가 사용