QUIC(Quick UDP Internet Connections) 란?
QUIC
→ 빠른 UDP 인터넷 연결 프로토콜- 애플리케이션 설계자는 애플리케이션 계층에 항상 자신의 프로토콜을 확장할 수 있다.
- 신뢰적인 데이터 전송, 혼잡 제어 및 연결 관리를 위한 많은 접근 방식을 사용
QUIC의 특징
- QUIC는 UDP를 하위 트랜스포트 계층 프로토콜로 사용하는 애플리케이션 계층 프로토콜
- 특히 단순하지만 발전된 HTTP/2 버전 위에서 인터페이스 되도록 설계됨
- 가까운 장래에 HTTP/3은 기본적으로 QUIC을 통합할 것
QUIC의 주요 기능
연결지향적이고 안전함
- TCP와 마찬가지로 QUIC은 두 종단 간의 연결지향 프로토콜
- 이를 위해 QUIC 연결 상태를 설정하기 위해 종단 간에 핸드셰이크가 필요
- 연결 상태의 두 부분은 출발지와 목적지 연결 ID
- 연결 상태의 두 부분은 출발지와 목적지 연결 ID
- 연결 상태 설정을 위해 필요한 핸드셰이크와 인증 및 암호화에 필요한 핸드셰이크를 결합
- TCP 연결을 설정
- TCP 연결을 통해 TLS 연결을 설정하여 여러 RTT가 필요한 그림 3.58(a)의
프로토콜 스택보다 더 빠른 설정을 제공
- 모든 QUIC 패킷은 암호화됨
스트림
스트림
: 2개의 QUIC 종단 간에 데이터를 순서대로 안정적으로 전달하기 위한 추상화- QUIC을 사용하면 단일 QUIC 연결을 통해 여러 애플리케이션 레벨의 스트림을 다중화 가능
- QUIC 연결이 설정되면 새 스트림을 빠르게 추가할 수 있다.
- HTTP/3의 콘텍스트에는 웹 페이지의 각 개체에 대해 다른 스트림이 있음
- 각 연결에는 연결 ID가 있고 연결 내의 각 스트림에는 스트림 ID가 존재
- ID는 모두 QUIC 패킷 헤더에 포함된다.
- ID는 모두 QUIC 패킷 헤더에 포함된다.
- 여러 스트림의 데이터는 UDP를 통해 전달되는 단일 QUIC 세그먼트 내에 포함될 수 있다.
스트림 재전송 프로토콜(Stream Control Transmission Protocol)
- 단일 SCTP 연결을 통해 여러 애플리케이션 레벨의 스트림을 다중화하는 개념을 개척한
초기의 안정적인 메시지 지향 프로토콜- 4G/5G 셀룰러 무선 네트워크의 제어 평면 프로토콜에 사용됨
- 4G/5G 셀룰러 무선 네트워크의 제어 평면 프로토콜에 사용됨
- 단일 SCTP 연결을 통해 여러 애플리케이션 레벨의 스트림을 다중화하는 개념을 개척한
신뢰적이고 TCP 친화적인 혼잡 제어 데이터 전송
- QUIC는 각 QUIC 스트림에 대해 독립적으로 신뢰적인 데이터 전송을 제공
- 위 그림에서 HTTP/3
- 위 그림에서 HTTP/3
- HTTP/1.1이 단일 TCP 연결을 통해 여러 HTTP 요청을 보내는 경우를 보여줌
→ TCP는 신뢰적이고 순서대로 바이트 전달을 제공
→ 여러 HTTP 요청이 목적지 HTTP 서버에서 순서대로 전달되어야 함을 의미 - 한 HTTP 요청의 바이트가 손실되면 나머지 HTTP 요청들은 손실된 바이트가 재전송
→ HTTP 서버에서 TCP가 올바르게 수신할 때까지 전달될 수 없다.- 이 문제는
HOL 차단 문제라고
불린다.
- 이 문제는
- QUIC는 스트림별로 신뢰적이고 순서대로 전달
→ 손실된 UDP 세그먼트는 해당 세그먼트에서 데이터가 전달된 스트림에만 영향을 줌- 다른 스트림의 HTTP 메시지는 계속 수신되어 애플리케이션에 전달될 수 있다.
- 다른 스트림의 HTTP 메시지는 계속 수신되어 애플리케이션에 전달될 수 있다.
- QUIC는 TCP와 유사한 확인응답 메커니즘을 사용하여 신뢰적인 데이터 전송을 제공함