https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP
를 참조했습니다.
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이었다.) ==> 읽거나 수정할 수 없다. 대신 최적화가 가능
- 다중화 프로토콜(순서 제약이 사라졌다.)
- 헤더 압축
'컴퓨터 상식' 카테고리의 다른 글
[Java] Boxing vs No Boxing 속도 차이 (0) | 2020.11.16 |
---|---|
가상메모리에도 불구하고 OOM(OutOfMemory)이 발생하는 이유 (0) | 2020.11.11 |
크롬(Chrome)의 각 탭은 프로세스(Thread)다. (0) | 2020.11.05 |
REST API 정리 (0) | 2020.10.28 |
Ajax는 Restful 할 수 있는가. (0) | 2020.10.22 |