강의 내용 중 하나였던 HTTP 버전 별 특징을 제대로 설명하질 못해서 다시금 복습하면서 깊게 알아보기로..
HTTP는 원드 와이드 웹에 내재된 프로토콜이다. 팀 버너스 리에 의해 1989년 부터 1991년에 발명된 HTTP는, 본래의 단순함의 대부분을 지키면서 확장하며 만들어지도록 많은 수정을 거쳐왔다.
1989년 제네바의 CERN에서 일하고 있던 팀 버너스 리는 인터넷 상의 하이퍼텍스트 시스템을 만들기 위한 제안을 작성했다. 초기에 Mesh라고 불리다가 1990년 구현 과정에서 World Wide Web으로 이름을 바꿨다. 기존의 TCP, 그리고 IP 프로토콜 상에서 만들어지면서 4개의 빌딩 블록으로 구성되었다.
HTML
HTTP
World Wide Web
이라고 불리는 첫번째 브라우저.HTTPD
의 초기 버전초기 단계에 사용된 HTTP 프로토콜은 매우 단순했고 이후 HTTP/0.9
라고 불리며 one-line 프로토콜이라고 불렸다.
GET /mypage.html
<HTML>
A very simple HTML page
</HTML>
HTTP/0.9
는 너무 제한적이라 브라우저와 서버 둘다 융통성 있게 빠르게 확장시킴.Content-Type
)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.0
구현이 동시에 진행되어 그 이듬해 HTTP/1.0
문서 출간 전까지 표준화가 진행 중이었음HTTP/1.1
은 HTTP/1.0
이 나온지 몇 달 안되어 1997년 초에 공개됨.또한 Host 헤더를 통해 동일한 IP 주소에서 서로 다른 도메인을 호스팅할 수 있는 서버 공유(Co-location) 기능도 도입됨.
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;
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.mozilla.org
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.0
은 HTTP/1.1
의 기능을 유지하면서 여러 가지 새로운 기능을 도입하여 웹 통신의 속도와 성능을 개선했다.
이진 프레임 구조.
다중화(Multiplexing)
HTTP/1.1
에서는 여러 개의 요청을 별도의 연결로 처리, HTTP/2.0
에서는 단일 연결로 처리.서버 푸시(Server Push)
헤더 압축
Quick UDP Internet Connection, UDP 상에 구현된 실험적인 다중 전송 프로토콜.
HTTP/2
의 의미론적 지원을 위해 설계되었다. 멀티플랙싱, 흐름 제어, 보안 및 혼잡 제어를 제공함.연결 설정 시간 단축
혼잡 제어 개선
Head of Line Blocking 없는 멀티플렉싱
전달 오류 수정
연결 마이그레이션
현재 여러 사이트를 참고해보니
HTTP/2.0
이 주를 이루는 것 같다. 🤔
h3
도 꽤 많이 보인다.HTTP/1.1
은 미미하다. 1-2 년만 지나도 이렇게 달라진다..!