본문 바로가기
Web

HTTP 2.0

by 밍상 2021. 11. 19.

HTTP 2.0이라고도 불리는 HTTP/2는 HTTP Version 2의 약자로 HTTP/1.1의 차기 버전이다.

 

HTTP/1.1

현재의 웹은 다량의 멀티미디어 리소스를 처리해야하고 웹페이지 하나를 구성하기 위해 다수의 비동기 요청이 발생되고 있고 이를 처리하기엔 HTTP/1.1의 스펙은 너무 느리고 비효율적이다.

 

Web환경에서 HOLB(Head Of Line Blocking - 특정 응답의 지연)은 실제로 두 종류가 존재한다.

1. HTTP의 HOL Blocking

2. TCP의 HOL Blocking

 

HTTP의 HOL Blocking이란?

이미지를 세개 요청하면 순서대로 이미지를 요청 받고, 응답하게 되는데 첫번째 요청의 응답이 지연되면 두번째, 세번째 이미지도 지연되게 되는 파이프 라이닝으로 인한 큰 문제점이다.

 

RTT 증가

HTTP는 TCP위에서 동작하게 되는데 하나의 connection마다 하나의 요청을 처리하므로 3-way Handshake가 반복적으로 일어나게 되고 또한 불필요한 RTT 증가와 네트워크 지연을 초래하여 성능을 저하시키게 된다.

 

무거운  Header 구조(특히 Cookie)

HTTP/1.1의 헤더에는 많은 메타정보들이 저장돼있다. 그런데 매 요청마다 중복된 헤더값을 전송하게 되고, 쿠키정보도 헤더에 포함되어 전송되므로 data보다 header가 더 큰 상황도 비일비재하게 된다.

 

이러한 단점들을 극복하기 위해 HTTP/2.0이 나오게 됐다.

 

Server Push

서버는 클라이언트의 요청에 대해 요청하지도 않은 리소스를 마음대로 보내줄 수도 있다. 이 방법으로 요청을 최소화해서 성능향상을 이끌어낸다. 이 방법을 통해 전송한 리소스에 대해서는 클라이언트는 요청하지 않는다.

 

Header Compression

이전 Header의 내용과 중복되는 필드를 재전송하지 않도록 하여, 데이터를 절약한다.

기존 HTTP Header는 평문이었지만 HTTP/2에서는 허프만 코딩을 사용하는 HPACK이라는 Header 압축방식을 이용하여 데이터 전송 효율을 높였다.

 

 

참고

https://velog.io/@taesunny/HTTP2HTTP-2.0-%EC%A0%95%EB%A6%AC

https://www.popit.kr/%EB%82%98%EB%A7%8C-%EB%AA%A8%EB%A5%B4%EA%B3%A0-%EC%9E%88%EB%8D%98-http2/

 

'Web' 카테고리의 다른 글

CORS란?  (0) 2022.07.26
MicroService란?  (0) 2022.05.26
쿠키와 세션  (0) 2021.11.19
Rest API  (0) 2021.08.02
Expression Language  (0) 2021.07.28