당연스럽게도 HTTP의 버전업이 이루어 지면서 속도
가 빨라졌습니다.
이는 HPACK 압축으로 헤더를 줄이고 응답의 우선순위를 정해 응답을 보내는 방식을 사용하는 것이 HTTP 1.1보다 더 빠른 응답속도를 기록할수 있는 이유입니다.
헤더를 줄이고..~~ 우선순위를 정하고~~ 하는 것은
결국 HTTP 1.1의 단점을 보완했다는 이야기입니다. HTTP 1.1의 단점은 아래와 같습니다.
Connection
한 개당 하나의 요청을 처리하도록 설계됨
request
와response
가 순차적으로 이루어짐HOL(Head Of Line) Blocking
이 발생할 수 있다.
HOL 블로킹이란 네트워크에서 같은 큐에있는 첫번째 패킷이 지연되므로써 성능이 저하되는 현상이다.
RTT(Round Trip Time)
증가
첫번째 단점에서 말한 특성때문에 매번 요청 별로 Connection을 만들게 되고 TCP
상에서 동작하는 HTTP의 특성상 3-way handshake
가 반복적으로 일어나서 불필요한 RTT 증가와 네트워크 지연을 초래하여 성능을 지연시킨다.
무거운 Header 구조
매 요청마다 중복된 헤더 값을 전송하게 되며, 서버 도메인에 관련된 쿠키 정보도 헤더에 함께 포함되어 전송된다. 이러한 반복적인 헤더 전송, 쿠키 정보로 인해 헤더 크기가 증가한다.
HTTP2.0
은 HTTP1.1
을 완전하게 재작성한 것이 아니라 프로토콜의 성능에 초첨을 맞춰 수정한 버전
이라고 생각하면 됩니다.
특히 지연시간이나 네트워크, 서버 리소스 사용량 등과 같은 성능 위주로 개선되었습니다.
Multiplexed Streams
: connection 한 개로 동시에 여러 개의 메시지를 주고 받을 수 있도록 개선Stream Prioritization
: 리소스 간의 의존관계에 따른 우선순위를 설정하여 리소스 로드 문제를 해결함Header Compression
: 헤더 정보를 HPACK 방식으로 압축한다.