HTTP/0.9 HTTP/1.0 HTTP/1.1 HTTP/2 차이
HTTP (HyperText Transfer Protocol Version)
TCP 연결 기반 위에서 동작하는 프로토콜
비연결성 프로토콜 - 한 번 연결로 한 번의 요청과 응답만 -> 연결을 끊어버림
1. HTTP/0.9
- in 1991
- 단순한 GET 통신 가능
- 초기 버전에는 '버전 정보가 없었다. (나중에 구분을 위해 0.9라고 불리게됨)
- http header가 없어서 HTML 문서만 가능 (다른 유형은 전송 불가)
- 상태 or 오류 코드가 없음 - 문제 상황 시 해당 파일 내부에 문제에 대한 설명을 추가하여 보냄
2. HTTP/1.0
- in 1996
- POST, HEAD 추가됨
- 상태코드가 응답 첫 줄에 포함되어 요청에대한 성공 / 실패를 바로 확인할 수 있음
- http header 추가 (요청, 응답) ->프로토콜 확장 가능
=> header의 'Content-Type' 기능으로 HTML 파일 이외의 다른 문서도 전송 가능
3. HTTP/1.1
- in 1999
- Method : OPTIONS, PUT, DELETE, TRACE 추가됨
- Header 몇가지 기능 추가
* Via : 중계서버(프록시, 게이트웨이 등)의 지원 프로토이름
* Accept : ex. application/json, text/plain, */* ...
- Keep-alive 기능 추가
=> Client Server <-> SERVER 사이의 연결을 일정 기간동안 기억해서 반복적으로 일어나는 통신의 연결 횟수를 줄였다.
- 파이프라이닝(Pipe Lining) 기능 추가
* Pipe Lining 이란?
일반적으로 http request는 연속적으로 발생할 경우, 순차적으로 가장 처음의 요청의 '응답, response' 을 완전히 받고 나서 다음 요청(req)이 진행된다. http/1.1 은 다수의 http request들이 1개의 socket에 함께 write 되고 (response를 기다리지 않음) 브라우저는 전달된 request에 대한 response를 순차적으로 기다리는 매커니즘을 제공한다. 'SERVER'의 메커니즘보다 'CLIENT'의 메커니즘에 의존하는 경향이 강하다.
Pipe Lining은 TCP/IP의 Packet 수를 상당히 줄일 수 있다. typical MSS(Maximum Segment Size)는 보통 536에서 1,460byte까지 가능한데 몇 개의 http request들을 하나의 TCP/IP packet으로 packing하는 것이 가능하다.
* Latency란?
Latency is the time it takes for data to be transferred between its original source and its destination, measured in milliseconds. Internet latency and network latency affect satellite internet connections, cable internet connections, as well as some WiFi connections.
4. HTTP/2
- in 2015
- www에서 쓰이는 http 프로토콜의 두 번째 버전 ( HTTP/1.1과 호환성 유지 )
* SPDY [스피디] : 웹 콘텐츠를 전송할 목적으로 구글이 개발한 비표준 개방형 네트워크 프로토콜
- HTTP/2 는 이진 프로토콜 (HTTP/1.1 - 텍스트 프로토콜)
- Stream, 스트림을 사용, 한 번의 커넥션으로 동시에 여러개의 데이터를 주고 받을 수 있다. (TCP 연결 하나로 여러 요청을 다중화 처리) => HTTP/1.x 에서의 이미지 스프라이트, 도메인 분할 같은 임시방편 사용을 안해도 된다.
- HTTP Header 데이터 압축 기능
=> HPACK 압축형식 사용 - 요청 및 응답 헤더 메타데이터를 압축하는데 이때, 중복된 요청이 있다면 중복되는 Header 값을 색인값으로 처리
==> 웹 브라우저의 페이지 로드 속도 개선
- The biggest difference between HTTP 1.1 and HTTP/2 is the ability to send several requests in rapid succession on the same TCP connection, eliminating the need for multiple connections between the client and the server.
http/1 vs https(http/2) 속도 직관적으로 볼 수 있는 사이트 !
HTTP/1.1 is compared against encrypted HTTP/2 HTTPS on a non-caching, nginx server with a direct, non-proxied connection.
References:
https://lalwr.blogspot.com/2019/01/http1-vs-http2.html
https://ko.wikipedia.org/wiki/HTTP/2
https://m.blog.naver.com/fleshmeat/120041927614