CS

HTTP/2에 대해

dltmd202 2024. 7. 1. 00:40

Http2가 필요해진 배경

  • HTTP/1.1에서 브라우저가 파이프라이닝을 잘 지원하지 않는다.
  • HTTP/1.1은 파이프라이닝 중에 먼저 온 요청이 후속요청을 블로킹한다.(HOL Blocking)
    • 브라우저는 HOL Blocking을 해결하기 위해 하나의 도메인에 대해 최대 6개까지의 TCP 커넥션을 제공한다. 6개의 요청을 병렬로 처리할 수 있는 것이다.
    • 하지만 최근에 6개도 부족하여 하위 도메인에서 처리하도록 해서 추가적인 커넥션을 확보할 수 있도록 하는 방법(domain sharding) 으로 우회해서 사용된다.

HTTP2의 특징

Binary Framing Layer

  • 기존의 text 형식이 아닌 binary 형식으로 전송한다.
  • 하나의 메시지가 frame이라는 작은 단위로 쪼개져서 전송된다.

Multiplexing

  • binary framing layer는 응답 다중화를 지원한다.
  • 송신가 메시지를 분해하고, 수신자는 이를 조합하여 메시지를 주고 받는다.
  • 여러 요청에 대해 단일 TCP 커넥션을 사용한다.
  • 각각의 요청에 대한 스트림은 이에 대한 식별자를 가지고 있어 프레임을 식별한다.

스트림 우선순위

  • HTTP/1.1 에서는 선행 요청에 대한 후행요청이 발생하고, 이에 대해 HOL Blocking이 발생하기 때문에 요청에 대한 우선순위가 필요하지 않았다.
  • 하지만 HTTP/2 에서는 요청에 대한 응답이 병렬적으로 전송되기 때문에 각각의 요청에 대한 우선순위가 필요하다.
  • 요청에 대한 우선순위를 명시할 수 있는데, 우선순위가 높은 요청에 대해 더 많은 프레임 전송을 허용하는 방식으로 처리하는 방식으로 적용한다.

Server Push

  • TCP 커넥션을 살려두고, 서버에서 필요한 데이터를 푸시하도록 처리할 수 있다.