QUIC : 빠른 UDP 인터넷 연결

QUIC(Quick UDP Internet Connections, 빠른 UDP 연결) 프로토콜 UDP를 하위 트랜스포트 계층 프로토콜로 사용하는 애플리케이션 계층 프로토콜 애플리케이션 설계자는 애플리케이션 계층에 항상 ‘자신의 프로토콜을 확장’ 할 수 있다

QUIC의 주요 기능

  • 연결지향적이고 안전함
    • TCP와 마찬가지로 연결지향적
    • 연결상태를 설정하는데 필요한 핸드셰이크 + 인증 및 암호화에 필요한 핸드셰이크를 결합하여 TCP 연결 설정
    • TCP 연결을 통해 TLS 연결을 설정하여 RTT가 필요한 스택보다 더 빠른 설정 제공
  • 스트림
    • 2개의 QUIC 종단 간에 데이터를 순서대로 안정적으로 전달하기 위한 추상화
    • 단일 QUIC 연결을 통해 스트림을 다중화, 연결이 설정되면 새 스트림을 빠르게 추가할 수 있음
    • 웹 페이지에 각 개체에 대해 다른 스트림 존재
    • 각 연결에는 연결 ID가 있고 연결 내 스트림에 스트림 ID가 존재
    • 두 ID는 QUIC 패킷 헤더에 포함
  • 신뢰적이고 TCP 친화적인 혼잡 제어 데이터 전송
    • 각 QUIC 스트림에 대해 독립적으로 신뢰적인 데이터 전송 제공
    • TCP
      • 순서대로 전달됨
      • 중간에 요청이 손실되면 나머지 요청은 손실된 바이트가 재전송되서 올바르게 수신될 때까지 대기 (= HQL 차단 문제)
    • QUIC
      • 스트림별로 전달하기 때문에 손실된 UDP 세그먼트는 데이터가 전달된 스트림에만 영향
      • 다른 스트림은 영향 x