기타

Network - HTTP/3

김지훈_ 2023. 8. 31. 15:38

HTTP/3?

2022년에 표준 스펙이 발표된 HTTP/3는 QUIC(Quic UDP Internet Connection) 기반이다.

기존 TCP 기반의 HTTP/1.1 과 HTTP/2와는 다른 프로토콜로 작동하여, 웹 트래픽의 속도와 신뢰성이 개선되며, 특히 높은 지연 시간이나 패킷 손실이 발생하는 네트워크 환경에서 더욱 효율적인 통신이 가능하다.

좀 더 자세히 살펴보면, 다음과 같은 특징이 있다.

  • 0-RTT(Zero Round Trip Time)QUIC의 보안 기능은 TLS1.3에 기반한다.
  • TLS1.3의 기능으로, 클라이언트와 서버 간의 통신을 시작할 때 앞으로 통신을 하겠다는 일종의 handshaking 이 필요한데, 세션을 재사용하는 경우 이전 세션에서 사용했던 정보를 사용하여 handshaking 없이 바로 데이터를 심어서 보낼 수 있다.
  • Head-of-line Blocking 해결그러나 QUIC의 경우 하나의 연결 위에 여러 개의 스트림을 생성할 수 있어, 하나의 스트림에서 패킷이 지연되거나 손실되더라도, 다른 스트림은 영향을 받지 않는다.
  • TCP의 경우 데이터 패킷이 순차적으로 전달되어야 하기 때문에 하나의 패킷이 지연되거나 손실되면 그 뒤의 패킷들에 영향을 끼치게 된다.
  • 내장된 보안 기능
  • 위에서 언급했듯이, QUIC은 TLS 1.3을 기반으로 하여 기본적으로 암호화가 적용되므로 추가적인 보안 설정이 필요하지 않다.

QUIC(Quic UDP Internet Connection)

커널 레벨의 프로토콜을 새로 만들면 OS 대응이 필요하므로 보편화 되기 까지 오랜 시간이 걸린다. 이러한 이유로 QUIC는 유저 스페이스에서 동작하도록 설계되었다.

한 가지 궁금증이 생긴다.

이미 OS 커널 레벨에서 동작하는 UDP가 있는데, 왜 QUIC라는 프로토콜을 새로 만든걸까?

기존의 UDP는 단순히 데이터그램을 보내고 받는 기본적인 서비스만을 제공하기 때문에, UDP 위에 HTTP를 바로 구현하려면 TCP가 해주는 많은 기능들을 (신뢰성 있는 데이터 전송, 혼잡 제어, 데이터 스트림의 순서 보장 등) 수동으로 구현해야 한다.

QUIC은 UDP 위에 구현되어 있지만, 이러한 TCP의 고급 기능들을 포함하고 있다.