본문 바로가기

컴퓨터 상식

HTTP 버전 별 특징

https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP

 

HTTP의 진화

HTTP는 월드 와이드 웹에 내재된 프로토콜입니다. Tim Berners-Lee에 의해 1989년부터 1991년에 발명된 HTTP는, 본래의 단순함의 대부분을 지키면서 확장성 위에서 만들어지도록, 많은 수정을 거쳐왔습

developer.mozilla.org

를 참조했습니다.

 

HTTP 0.9

- No Version Number(0.9는 나중에 붙은 것)

- Status Code도 없었다. 파일만 덜렁 날아감. 

- 가능한 Method는 GET이 유일했다. 

- HTTP 헤더 없음

<HTML>
A very Simple HTML Page
</HTML>

 

HTTP 1.0 (RFC 1945)

- Version Number 추가

- Status Code 추가 => 전송이 성공했는지 실패했는지 알 수 있다. 

- HTTP Header (Content-Type 등) 추가 => HTML 파일 외에 다른 문서를 전송할 수 있다. 

GET /mypage.html 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
<HTML> 
A page with an image
  <IMG SRC="/myimage.gif">
</HTML>
GET /myimage.gif HTTP/1.0
User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)

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 1.1 (RFC2068)

- 표준 프로토콜

- Connection이 재사용될 수 있도록해서 Embedded Resource를 받아올 때 사용된 커넥션을 다시 연다. => 시간절약(Keep-Alive 헤더)

- 파이프라이닝 추가 => 응답을 받기 전에 요청을 함으로써 Latency를 낮췄다. 

- 추가적인 캐시 제어 메커니즘의 도입

- 컨텐츠 협상이 가능해짐

- 청크된 응답도 지원한다.

- Host 헤더가 추가돼서 동일 IP주소에 다른 도메인을 호스트하는 기능이 서버 코로케이션을 가능케한다. 

 

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

(content)


GET /static/img/header-background.png HTTP/1.1
Host: developer.cdn.mozilla.net
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: */*
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
Age: 9578461
Cache-Control: public, max-age=315360000
Connection: keep-alive
Content-Length: 3077
Content-Type: image/png
Date: Thu, 31 Mar 2016 13:34:46 GMT
Last-Modified: Wed, 21 Oct 2015 18:27:50 GMT
Server: Apache

(image content of 3077 bytes)

HTTP 2

- 구글의 SPDY 프로토콜이 근거가 되었다. 

- Binary Protocol(이전까지는 Text Protocol이었다.) ==> 읽거나 수정할 수 없다. 대신 최적화가 가능

- 다중화 프로토콜(순서 제약이 사라졌다.)

- 헤더 압축