HTTP/3 With QUIC

0verfl0w767·2024년 12월 8일
1
post-thumbnail

HTTP PROTOCOL

HTTP/1.1 (1997년 초 발표)

HTTP/1.1은 1999년에 표준화된 HTTP 프로토콜로, 인터넷에서 많이 쓰이는 프로토콜이다.

28년 동안이나 표준,,

  • 텍스트 기반: HTTP/1.1은 요청과 응답이 모두 텍스트 형식으로 이루어진다.
  • 연결 재사용: 같은 TCP 연결을 통해 여러 요청을 처리할 수 있지만, 여전히 각 요청마다 왕복 시간이 걸린다.
  • 헤더 압축 없음: 요청과 응답에서 헤더가 반복적으로 전송되어 비효율적이다.

HTTP/1.1의 문제점

  • 헤더 크기 증가: 웹 애플리케이션에서 많은 요청과 응답을 주고받을 때, 헤더 크기가 커져서 네트워크 지연 시간이 늘어난다.
  • 패킷 지연: 요청과 응답이 순차적으로 처리되기 때문에, 하나의 요청이 지연되면 다른 요청도 함께 지연된다.

HTTP/3 (2022년 이후)

HTTP/3는 HTTP 프로토콜의 최신 버전으로, Google의 QUIC(Quick UDP Internet Connections) 프로토콜을 기반으로 만들어졌다. HTTP/2에서 발생하는 몇 가지 문제를 해결하고 성능을 개선하려고 개발된 것이다.

예로 HTTP/2에서 Head-of-Line Blocking 문제가 있었지만 HTTP/3에서는 QUIC 프로토콜 개발을 통해 문제를 해결했다.

주요 특징

  • QUIC 기반: HTTP/3는 QUIC을 사용하여 데이터 전송을 최적화한다.
  • UDP 사용: HTTP/3는 기존의 TCP 대신 UDP(User Datagram Protocol)를 사용하여 연결 성능을 향상시킨다.
  • 헤더 압축: HPACK 또는 QPACK을 사용하여 헤더를 압축하고, 이전에 전송된 헤더를 재사용하여 네트워크 효율성을 높인다.
  • 멀티플렉싱: 하나의 연결에서 여러 요청과 응답을 동시에 처리할 수 있다. HTTP/2와 비슷하지만, HTTP/3에서는 TCP 대신 UDP를 사용하여 패킷 손실이나 지연에 대한 영향을 최소화한다.

HTTP/3의 장점

  • 연결 설정 시간 단축: TCP 연결을 설정할 때 필요한 왕복 시간을 줄인다. QUIC는 초기 핸드셰이크에서 0-RTT, 1-RTT 등을 지원하여 더 빠르게 연결을 설정할 수 있다.
  • 빠른 복구: 하나의 패킷이 손실되더라도 다른 요청들은 영향을 받지 않아서 패킷 손실 복구가 더 효율적이다.
  • 지연 시간 감소: 패킷 전송이 빠르고, 연결 설정이 간소화되며, 헤더 압축을 통해 대역폭을 절약할 수 있다.

HTTP version share (%)

http/1.1 >>>>>>>>>>>>> http/2 >> http/3


QUIC (Quick UDP Internet Connections)

QUIC은 Google이 개발한 전송 계층 프로토콜로, 기존 TCPTLS를 대체하려고 만들어졌다. QUIC의 주요 특징은 다음과 같다:

  • UDP 기반: 기존 TCP 대신 UDP를 사용하여 연결 설정 시간을 단축하고, 전송 성능을 개선한다.
  • 내장된 암호화: QUIC는 TLS를 내장하여 보안 연결을 제공한다. 그래서 연결 설정 시 보안이 보장되고, 별도의 SSL 핸드셰이크가 필요 없다.
  • 빠른 패킷 복구: QUIC는 패킷 손실이 발생했을 때, 패킷을 빠르게 복구하여 지연을 최소화한다.
  • 0-RTT 연결: QUIC은 연결이 재사용될 때 초기 연결 설정 없이 데이터를 전송할 수 있어 대기 시간을 줄인다.

QUIC의 장점

  1. 빠른 연결 설정
    QUIC은 기존의 TCP와 TLS 연결 설정을 통합하고, 연결을 빠르게 설정할 수 있도록 설계되었다. QUIC은 0-RTT(Zero Round Trip Time)와 1-RTT(One Round Trip Time) 연결을 지원하여, 새로운 연결이 설정될 때 필요한 지연 시간을 크게 줄여준다. 이 덕분에 웹 페이지 로딩 속도가 향상된다.

  2. 연결 복원력
    QUIC은 연결이 끊어져도, 클라이언트와 서버가 같은 IP나 네트워크를 사용할 경우 연결을 재설정하지 않고 빠르게 복구할 수 있다. 모바일 네트워크와 같은 불안정한 환경에서도 연결이 끊어졌다가 다시 연결될 때 더 빠르게 복구된다.

  3. 내장된 암호화
    QUIC은 기본적으로 TLS 1.3을 내장하여, 보안 연결을 제공한다. 기존의 HTTP/2에서는 TLS를 별도로 설정해야 했지만, QUIC에서는 암호화가 내장되어 있어 보안 설정이 간소화되고, 보안상의 취약점을 줄일 수 있다.

  4. 패킷 손실에 강함
    QUIC은 패킷 손실이 발생했을 때 빠르게 복구할 수 있는 기능을 제공한다. TCP는 하나의 패킷이 손실되면 다른 패킷들이 함께 지연될 수 있지만, QUIC은 각 스트림을 독립적으로 처리하여, 하나의 패킷 손실이 전체 성능에 영향을 미치지 않도록 한다.

  5. 헤더 압축과 멀티플렉싱
    QUIC은 HTTP/2와 비슷하게 멀티플렉싱을 지원하며, HTTP/2보다 효율적인 헤더 압축 방식인 QPACK을 사용한다. 이를 통해 네트워크 대역폭을 절약하고, 전송 속도를 높일 수 있다. 여러 요청과 응답을 동시에 처리하는데 효율적이다.

  6. 지연 시간 최소화
    QUIC은 패킷 전송을 빠르게 하며, 연결 설정 시간을 단축시켜 지연 시간을 줄인다. 또한, QUIC은 연결을 재사용할 때 더 빠르게 연결을 설정할 수 있어 반복적인 요청에서 성능이 향상된다.

  7. 멀티플렉싱을 통한 효율적인 트래픽 관리
    QUIC은 여러 스트림을 하나의 연결에서 동시에 처리할 수 있다. HTTP/2와 마찬가지로 여러 요청을 동시에 처리할 수 있지만, QUIC은 TCP 대신 UDP를 사용하여 더 효율적이고 빠른 멀티플렉싱을 구현한다.

  8. 모바일 네트워크에서의 성능 향상
    모바일 환경에서 QUIC은 매우 유리하다. 불안정한 네트워크에서 빠른 연결 복구와 패킷 손실 복구가 가능해 웹 페이지 로딩 속도가 더 빨라진다. 이로 인해 모바일 장치에서 웹 애플리케이션의 성능이 크게 향상된다.

QUIC의 단점

  1. 새로운 프로토콜로 인한 호환성 문제
    QUIC은 기존의 TCP를 대체하려는 새로운 프로토콜이다. 이로 인해 기존의 네트워크 장비나 방화벽, 로드 밸런서 등이 QUIC을 제대로 지원하지 못할 수 있다. 특히, QUIC은 UDP 기반이기 때문에 UDP 트래픽을 차단하는 네트워크 환경에서는 제대로 작동하지 않을 수 있다.

  2. 방화벽 및 네트워크 장비의 제한
    QUIC은 UDP를 사용하기 때문에 많은 방화벽과 NAT 장비들이 이를 제한하거나 필터링할 수 있다. 대부분의 기존 네트워크 장비들은 UDP 트래픽에 대해 적절한 처리를 하지 못하고, 그로 인해 QUIC이 차단되거나 제대로 작동하지 않을 수 있다. 또한, UDP는 TCP보다 세션을 추적하기 어려워, 트래픽 필터링 및 모니터링이 어려운 경우가 많다.

  3. 구현 복잡성
    QUIC은 기존의 TCP와 TLS를 대체하기 위한 새로운 전송 계층 프로토콜이다. 이로 인해 서버와 클라이언트 측에서 QUIC을 구현하는 데 상당한 작업이 필요하다. 특히 QUIC은 암호화와 연결 설정을 내장하고 있어, 이를 구현하려면 기존 시스템에서 변경을 요구할 수 있다.

  4. 초기 연결 지연
    QUIC은 빠른 연결 설정을 목표로 하고 있지만, 첫 번째 연결에서는 여전히 TCP와 TLS 핸드셰이크가 필요한데, 이 과정에서 일부 지연이 발생할 수 있다. 0-RTT 연결 재사용을 지원하지만, 첫 연결 시에는 TCP와 TLS의 초기 설정 시간이 여전히 존재한다.

  5. 모바일 데이터 및 배터리 소모
    QUIC은 여러 가지 최적화된 기능을 제공하지만, 특히 모바일 장치에서는 상대적으로 더 많은 리소스를 소비할 수 있다. 높은 대역폭을 처리해야 하고, 연결을 계속 유지하기 위해 더 많은 리소스를 요구할 수 있어 배터리 소모와 데이터 사용량이 증가할 수 있다.

  6. 기존 인프라와의 통합 문제
    QUIC은 전송 계층에서의 혁신을 일으켰지만, 기존의 인프라와 통합하는 데 어려움이 있을 수 있다. 예를 들어, 로드 밸런서나 CDN(콘텐츠 배달 네트워크)에서는 QUIC을 지원하지 않거나 이를 효율적으로 처리하기 위한 추가적인 구성이 필요할 수 있다.

  7. 디버깅과 모니터링의 어려움
    QUIC은 TLS를 내장하고 있고, 암호화된 연결을 사용하기 때문에, 네트워크 트래픽을 모니터링하고 디버깅하는 데 어려움이 있다. 특히 네트워크 문제를 추적할 때, 패킷을 복호화하거나 세부적인 트래픽 분석을 하기 위해서는 추가적인 도구나 기술이 필요하다.


HTTP/1.1, HTTP/2, HTTP/3의 차이점

FeatureHTTP/1.1HTTP/2HTTP/3
기반 프로토콜TCPTCPQUIC (UDP)
헤더 압축없음HPACKQPACK
멀티플렉싱요청-응답 순차 처리병렬 처리 가능병렬 처리 및 빠른 복구
연결 설정 시간느림빠름더 빠름
보안TLS 별도 사용TLS 내장TLS 내장
성능저성능개선된 성능최적화된 성능 (빠른 연결 설정)

결론

  • HTTP/1.1은 오래된 프로토콜이라 여러 문제점이 있지만 여전히 많이 쓰인다.
  • HTTP/2는 성능을 개선하고 멀티플렉싱을 통해 효율성을 높였지만, 여전히 TCP에서 발생하는 문제는 존재한다.
  • HTTP/3는 QUIC 프로토콜을 기반으로 해서 빠른 연결 설정과 높은 성능을 제공한다. 특히 모바일 환경이나 고지연 네트워크에서 훨씬 뛰어난 성능을 보여준다.

0개의 댓글