QUIC는 구글에서 개발한 UDP 기반의 전송 프로토콜로, HTTP/3에서 사용되는 핵심 기술입니다. TCP보다 더 빠르고 효율적인 연결 설정과 데이터 전송을 목표로 설계되었습니다. QUIC는 전통적인 TCP의 문제를 해결하고, 웹 애플리케이션의 성능을 향상시키기 위해 만들어졌습니다.
QUIC의 주요 특징
- UDP 기반
- TCP는 3-Way Handshake를 통해 연결을 설정하고, 데이터 전송 중에도 각 패킷에 대한 확인 응답(ACK)을 처리합니다. 반면, QUIC는 UDP를 사용하여 이러한 오버헤드를 줄이고 더 빠른 연결 설정을 제공합니다.
- 1-Way Handshake
- QUIC는 1-Way Handshake를 사용하여 연결을 설정합니다. 이 과정에서 클라이언트는 서버에 연결을 요청하는 동시에 데이터를 전송할 수 있습니다. TCP의 3-Way Handshake보다 훨씬 빠른 연결 설정을 가능하게 합니다.
- 빠른 연결 복구
- QUIC는 연결을 설정하는 데 필요한 시간이 적고, 연결이 끊어져도 더 빠르게 복구할 수 있습니다. 예를 들어, 모바일 네트워크에서 핸드오버가 발생할 때 연결이 끊어지더라도 QUIC는 빠르게 재연결할 수 있습니다.
- 내장된 암호화 (TLS 1.3)
- QUIC는 기본적으로 암호화된 전송을 제공합니다. TLS 1.3을 통합하여 보안을 강화했으며, 별도로 SSL/TLS 핸드셰이크가 필요하지 않습니다. 즉, QUIC는 보안과 성능을 모두 고려한 설계입니다.
- 다중 스트림 전송
- QUIC는 멀티플렉싱을 지원하여 여러 스트림(연결)에서 동시에 데이터를 전송할 수 있습니다. 이는 HTTP/2에서 제공하던 멀티플렉싱과 유사하지만, 헤드 오브 라인 블로킹(Head-of-line blocking) 문제가 개선되어 훨씬 효율적입니다.
- 헤더 압축
- QUIC는 헤더 압축 기능을 제공하여, 전송되는 데이터를 줄이고, 네트워크 대역폭을 효율적으로 사용할 수 있습니다. 이는 HPACK 같은 기존 압축 방식보다 더 효율적일 수 있습니다.
- 연결 식별자
- QUIC는 연결을 추적할 때 연결 ID를 사용하여, 클라이언트가 IP 주소나 네트워크를 변경하더라도 기존의 연결을 계속 사용할 수 있도록 지원합니다. 이는 특히 모바일 환경에서 유용합니다.
QUIC의 동작 방식
- 연결 설정
- QUIC에서는 1-Way Handshake로 클라이언트와 서버가 연결을 설정하고 동시에 데이터를 전송할 수 있습니다. 초기 연결은 1회 왕복으로 완료되며, 보통 TCP의 3-Way Handshake보다 빠르게 설정됩니다.
- 데이터 전송
- QUIC는 하나의 연결 내에서 여러 스트림을 동시에 전송할 수 있습니다. 각 스트림은 독립적으로 처리되며, 하나의 스트림이 지연되더라도 다른 스트림에는 영향을 미치지 않습니다.
- 연결 종료
- QUIC는 TCP와 달리 연결 종료가 훨씬 간단하고 빠르며, 데이터가 모두 전송되면 연결을 종료합니다.
QUIC의 장점
- 빠른 연결 설정
- QUIC는 1-Way Handshake를 사용하여 연결 설정 시간을 크게 줄입니다. 이는 특히 지연 시간이 중요한 상황에서 유리합니다.
- 더 낮은 지연 시간
- QUIC는 네트워크 오류나 연결 끊김에 더 빠르게 대응할 수 있어 지연 시간을 크게 줄여줍니다. 예를 들어, Wi-Fi에서 LTE로 네트워크가 변경될 때도 빠르게 연결을 복구할 수 있습니다.
- 헤드 오브 라인 블로킹(Head-of-Line Blocking) 해결
- QUIC는 다중 스트림을 독립적으로 처리하므로, 하나의 스트림에서 발생한 지연이 다른 스트림에 영향을 미치지 않습니다. 이는 HTTP/2에서 발생할 수 있는 헤드 오브 라인 블로킹 문제를 해결합니다.