HTTP/3와 QUIC

발생

최근에 웹 개발 관련 자료를 보다가 HTTP/3에 대한 언급을 봤다. HTTP/1.1, HTTP/2는 알고 있었는데 HTTP/3는 처음 들어봤다.

HTTP/3가 무엇이고 기존 버전들과 어떤 차이가 있는지 궁금해졌다. 특히 QUIC이라는 프로토콜을 기반으로 한다고 하는데, 이게 뭔지도 알아봐야겠다.

HTTP 버전별 특징

HTTP/1.1 (1997년)

  • 연결당 하나의 요청/응답: 한 번에 하나의 요청만 처리 가능
  • Head-of-Line Blocking: 앞의 요청이 완료되어야 다음 요청 처리 가능
  • 텍스트 기반: 사람이 읽을 수 있는 형태
GET /index.html HTTP/1.1
Host: example.com
Connection: keep-alive

HTTP/2 (2015년)

  • 멀티플렉싱: 하나의 연결로 여러 요청/응답 동시 처리
  • 서버 푸시: 서버가 클라이언트 요청 없이 리소스 전송
  • 헤더 압축: HPACK을 통한 헤더 크기 최적화
  • 바이너리 프로토콜: 더 효율적인 전송

HTTP/3 (2022년)

  • QUIC 기반: UDP를 사용하는 새로운 전송 프로토콜
  • TLS 1.3 내장: 암호화가 기본으로 포함
  • 연결 마이그레이션: 네트워크 변경 시에도 연결 유지

QUIC이란?

QUIC (Quick UDP Internet Connections)는 Google에서 개발한 새로운 전송 프로토콜이다.

QUIC의 특징

1. UDP 기반

  • TCP의 3-way handshake 없이 빠른 연결 설정
  • 네트워크 혼잡 제어를 애플리케이션 레벨에서 처리

2. 내장된 암호화

  • TLS 1.3이 프로토콜에 내장되어 있음
  • 별도의 TLS 핸드셰이크 불필요

3. 연결 마이그레이션

  • IP 주소나 네트워크가 바뀌어도 연결 유지
  • 모바일 환경에서 특히 유용

4. 멀티플렉싱

  • HTTP/2와 유사하게 여러 스트림 동시 처리
  • Head-of-Line Blocking 해결

HTTP/3의 장점

1. 빠른 연결 설정

TCP + TLS 연결 설정:
1. TCP 3-way handshake (1 RTT)
2. TLS handshake (1-2 RTT)
총 2-3 RTT

QUIC 연결 설정:
1. QUIC handshake (1 RTT)
총 1 RTT

2. 네트워크 변경에 강함

모바일 환경에서 WiFi에서 셀룰러로 전환되어도 연결이 끊어지지 않는다.

3. Head-of-Line Blocking 해결

TCP에서는 패킷 하나가 손실되면 전체 스트림이 멈추지만, QUIC에서는 각 스트림이 독립적으로 처리된다.

실제 사용 현황

브라우저 지원

  • Chrome 87+ (2020년)
  • Firefox 88+ (2021년)
  • Safari 14+ (2020년)

서버 지원

  • Cloudflare, Google, Facebook 등 주요 CDN에서 지원
  • Nginx, Apache 등 웹서버에서도 지원

사용률

  • 2024년 기준 전체 웹 트래픽의 약 30%가 HTTP/3 사용
  • 점진적으로 증가하는 추세

구현 예시

클라이언트에서 HTTP/3 사용 확인

// HTTP/3 지원 여부 확인
fetch('https://http3.is/', {
  method: 'HEAD'
}).then(response => {
  console.log('Protocol:', response.headers.get('alt-svc'));
});

서버 설정 (Nginx 예시)

server {
    listen 443 ssl http2;
    listen 443 ssl http3;
    
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;
    
    # HTTP/3 지원
    add_header Alt-Svc 'h3=":443"; ma=86400';
}

결론

HTTP/3는 웹의 미래를 위한 중요한 진화이다. QUIC 프로토콜을 통해 더 빠르고 안정적인 웹 경험을 제공한다.

아직 완전히 보편화되지는 않았지만, 주요 서비스들이 점진적으로 도입하고 있어서 곧 표준이 될 것으로 보인다.

웹 개발자로서 HTTP/3의 특징을 이해하고 적절히 활용할 수 있도록 준비해야겠다.

Day-16


tech