JUST WRITE

HTTP 1.1 vs HTTP 2.0 본문

Network

HTTP 1.1 vs HTTP 2.0

천재보단범재 2022. 1. 7. 16:04

HTTP 1.1 vs HTTP 2.0

HTTP/1.1

HTTP는 1996년에 1.0 버전을 공식적으로 도입하였다.(RFC1945)

1997년에 1.1 버전을 공식적으로 출시하였다.

1.1 버전에 개선과 업데이트는 1999년에 출시하였다.(RFC2616)

개선이 되기는 하였지만 느리고 비효율적이었다.

아래와 같은 단점이 있다.

  • HOL(Head of Line) Blocking
  • RTT(Round Trip Time) 증가
  • 무거운 Header 구조

HOL Blocking

Head of Line BlockingHTTP/1.1에서는 보통 Connection 1개당 1개의 Request를 처리할 수 있다.

이러한 부분을 개선하기 위해 pipelining 기법이 존재한다.

이 기법으로 Connection 1개당 다수의 파일을 Request 할 수 있다.

대신 1개의 파일에 대한 Response가 완료되야 다음 파일의 Response가 진행 가능하다.

완료될 때까지 대기해야 하는 현상을 HTTP HOL Blocking이라고 한다.

RTT 증가

Round Trip Time 증가

HTTP/1.1에서는 보통 Connection 1개당 1개의 Request를 처리할 수 있다.

매 Request마다 Connection을 만들고 3-way Handshake가 반복적으로 일어난다.

이렇게 불필요한 RTT 증가, 네트워크 지연으로 성능 저하하게 된다.

무거운 Header 구조

HTTP/1.1의 Header에서는 많은 Meta 정보가 저장되어 있다.

Web Page 방문 시 다수의 HTTP Request 발생, Request마다 중복된 Header값을 전송한다.

(별도의 domain sharding을 하지 않은 경우)

각 domain에 설정된 Cookie 정보 Request마다 Header에 전송된다.

HTTP/2.0

HTTP/2.0은 2015년에 공개되었다.(RFC7540)

SPDY에 기반하고 있으며 IETF에서 개발되고 있다.

새로 작성한 것이 아닌 HTTP/1.1을 개선한 것이다.

성능 개선에 초점을 둔 것이다.

주요 특징은 아래와 같다.

  • Multiplexed Streams
  • Stream Prioritization
  • Server Push
  • Header Compression

Multiplexed Streams

1개의 Connection에 다수의 Message를 주고받을 수 있다.

Response를 순서에 상관없이 stream으로 주고받는다.

HTTP/1.1의 Connection Keep-Alive, Pipelining의 개선이라 볼 수 있다.

Stream Prioritization

HTTP/2.0에서는 Resouce 간의 우선순위를 설정할 수 있다.

예를 들어 요청한 HTML 문서에 CSS 파일과 Image 파일이 존재한다고 가정한다.

Image보다 CSS파일이 늦어지면 Rendering이 늦어질 수 있다.

이때, CSS 우선순위를 높여서 해결할 수 있다.

Server Push

Server가 Client에 Request 없어도 Resouce를 보낼 수 있다.

HTTP/1.1에서는 HTML 문서를 수신한 후 해석 중에 필요한 Resouce를 Request 한다.

HTTP/2.0에서는 Server Push 기법으로 미리 HTML 문서에 포함된 Resouce 미리 보내주는 것이다.

Header Compression

HTTP/2.0에서는 Header 정보를 압축하기 위해 Header TableHuffman Encoding을 사용한다.

HPACK 압축방식이라 부른다.(RFC7541)

HTTP/1.1에서는 Request에서 Header에 중복 값이 존재해서 그냥 전송한다.

HTTP/2.0에서는 Header에 중복값이 존재하면 Static/Dynamic Header Table을 이용하여 해결한다.

[참고사이트]

728x90
반응형

'Network' 카테고리의 다른 글

IP  (0) 2022.03.01
TCP  (0) 2022.02.27
Web Vitals  (0) 2021.12.29
CORS  (0) 2021.12.19
SOP  (0) 2021.12.17
Comments