본문으로 건너뛰기
김신건의 로그

QUIC

· 수정 · 📖 약 1분 · 451자/단어 #network #http #protocol
QUIC 프로토콜, quic, Quick UDP Internet Connections

정의

QUIC (Quick UDP Internet Connections)은 Google이 2012년 처음 제안하고 2021년 RFC 9000으로 표준화된 UDP 기반 전송 프로토콜이다. HTTP/3의 기반이 된다.

기존 TCP가 가지는 문제들을 OS 커널 수정 없이(=사용자 영역에서) 해결하기 위해 UDP 위에 구현되었다.

핵심 특성

  • Stream 격리: 한 연결 안에 여러 독립적인 stream. 한 stream의 패킷 손실이 다른 stream에 영향을 주지 않음 → TCP의 Head-of-Line Blocking 문제 해결
  • TLS 1.3 통합: 전송과 암호화 핸드셰이크가 분리되어 있지 않다. 최초 연결도 1-RTT, 재접속은 0-RTT 가능
  • Connection ID: IP나 포트가 바뀌어도 (와이파이 ↔ 셀룰러 전환) 같은 ID로 같은 연결 유지 (Connection Migration)
  • 사용자 영역 구현: 브라우저·서버가 직접 구현 → OS 업데이트 없이 새 기능 배포 가능

TCP 대비 장점

TCPQUIC
전송OS 커널사용자 영역 (라이브러리)
HOL Blocking있음Stream 단위로 격리
최초 핸드셰이크TCP 3-way + TLS = 2-3 RTT1 RTT (TLS 통합)
재접속1 RTT0 RTT (TLS 1.3 세션 티켓)
Connection 식별(IP, Port) 튜플Connection ID
IP 변경 시연결 끊김Migration으로 유지

약점·주의점

  • UDP 차단: 일부 기업 방화벽은 UDP를 막거나 throttling함 → HTTP/3 ↔ HTTP/2 fallback 필요
  • CPU 부담: 사용자 영역 구현이라 패킷 처리 CPU 비용이 TCP보다 클 수 있음 (커널 우회 효과는 일부)
  • NAT rebinding: Connection Migration이 NAT 동작과 충돌할 수 있음

사용 사례

  • HTTP/3 (Google, Facebook, Cloudflare 등 대형 CDN)
  • WebTransport (브라우저 양방향 stream 신 API)
  • 일부 게임·실시간 미디어 프로토콜

💬 댓글

사이트 검색 / 명령어

검색

스크롤 = 확대/축소 · 드래그 = 이동 · 0 = 원래 크기 · ESC = 닫기