QUIC(Quick UDP Internet Connections)는 유연성, 내장된 보안, 성능 문제 감소, 빠른 채택 속도를 통해 전송 제어 프로토콜(TCP)을 대체하도록 설계된 범용 전송 계층 프로토콜입니다. 원래 Google에서 개발한 QUIC은 클라이언트와 서버 간에 패킷을 이동하기 위한 저수준 전송 메커니즘으로 사용자 데이터그램 프로토콜(UDP)을 사용합니다. 특히, QUIC는 HTTP/1.1 및 HTTP/2와 같이 추가 계층이 아닌 필수 구성 요소로 TLS(전송 계층 보안)를 통합합니다.
QUIC 기반의 HTTP/3는 하이퍼텍스트 전송 프로토콜(HTTP)의 세 번째 주요 버전이며 2022년에 IETF 표준 으로 채택되었습니다. QUIC+HTTP/3는 성능과 사용자 경험을 제한하는 TCP의 본질적인 한계를 해결하기 위해 만들어졌습니다.
API는 애플리케이션의 "공개적인 면"으로, 애플리케이션이 수행하는 기능과 제공할 수 있는 정보를 공개하고 적절한 요청 형식을 정의합니다. 개발자가 애플리케이션의 API를 만들고 공개하면 다른 애플리케이션이 해당 애플리케이션과 통신할 수 있습니다.
많은 경우 API는 자주 사용되는 기능을 손쉽게 사용할 수 있게 해주기 때문에 개발자의 귀중한 시간을 절약해줍니다. 기존 애플리케이션의 기능을 복제하는 대신 개발자는 기존 애플리케이션의 API를 호출하여 해당 기능을 애플리케이션에 통합할 수 있습니다.
HTTP 전송 스택의 개요
QUIC의 목표는 HTTP/3에 대한 고성능, 고신뢰성, 고보안성 전송 프로토콜을 제공하는 것입니다(QUIC는 HTTP가 아닌 트래픽에도 적합합니다).
QUIC가 처음이시라면 아래의 소개 영상을 시청해 보시기 바랍니다.
UDP는 TCP처럼 복잡한 3단계 핸드셰이크를 통해 첫 번째 연결을 설정할 필요가 없는 간단하고 가벼운 프로토콜입니다. 이러한 단순성으로 인해 UDP는 빠르고 연결성이 뛰어나지만, TCP와 비교했을 때 안정적이고 안전한 통신에 필수적인 기능이 부족하다는 것을 의미합니다.
QUIC는 UDP와 TCP 프로토콜의 장점을 모두 결합했다는 점에서 독특합니다. 연결성이 없고 저수준 전송 프로토콜에 UDP를 활용하여 연결 및 전송 지연을 줄이는 반면, 패킷 전달을 보장하는 TCP의 연결 설정 및 손실 감지 기능을 다시 구현하여 상위 계층에서는 연결 지향적입니다. 손실된 데이터를 식별하고 재전송을 완료하여 원활한 사용자 환경을 보장하는 작업을 담당합니다.
QUIC은 HTTP/1.1 및 HTTP/2의 경우처럼 추가 계층이 아닌 필수 구성 요소로 TLS를 통합합니다. 이 통합을 통해 메시지가 기본적으로 암호화됩니다.
아래 다이어그램은 QUIC 네트워크의 기본적인 구조를 보여줍니다. 다이어그램에서 볼 수 있듯이 HTTP/3 요청, 응답 또는 모든 애플리케이션 데이터를 포함하는 논리적 객체는 QUIC 스트림입니다. 네트워크 엔드포인트 간 전송을 위해 QUIC 스트림은 여러 개의 논리 계층으로 래핑됩니다.
QUIC 스트림의 해부학
외부에서 시작하여 내부로 살펴보면 논리적 계층과 객체는 다음과 같습니다.
TLS 핸드셰이크는 클라이언트와 서버 간의 안전한 연결을 제공합니다. QUIC가 제공하는 암호화에는 TLS v1.3이 필요합니다. 아래 다이어그램에서 볼 수 있듯이 QUIC는 암호화 키를 제공하는 TLS "컨텐츠 계층"을 유지하지만 "레코드 계층"을 자체 전송 메커니즘으로 대체합니다.
QUIC은 또한 보안과 성능에 중요한 매개변수의 인증 및 협상을 위해 TLS를 사용합니다. 두 프로토콜은 엄격한 계층화보다는 협력합니다. QUIC은 TLS 핸드셰이크를 사용하여 보안 연결을 설정하는 반면, TLS는 QUIC이 제공하는 안정성, 순차적 전달 및 레코드 계층을 사용합니다.
높은 수준에서 TLS와 QUIC 구성 요소 사이에는 두 가지 주요 상호 작용이 있습니다.
QUIC TLS는 QUIC 프로토콜을 위해 특별히 설계된 TLS의 변형입니다. 현재 QUIC TLS에서 HTTP/3 지원을 원하는 사용자에게는 두 가지 옵션이 있습니다.
QUIC+HTTP/3는 지연 시간을 줄이고 신뢰할 수 없는 네트워크에서 데이터 전송을 개선하여 웹 애플리케이션의 성능을 향상시키는 것을 목표로 합니다. 이러한 제품의 장점은 다음과 같습니다.
아래 리소스를 탐색하여 NGINX의 QUIC+HTTP/3 구현과 QUIC+HTTP/3를 사용하여 더 빠르고 효율적인 통신을 할 수 있는 다른 방법에 대해 알아보세요.