QUIC(Quick UDP Internet Connections)는 유연성, 내장된 보안 기능, 적은 성능 문제, 빠른 도입률로 TCP(Transmission Control Protocol)를 대체하도록 설계된 범용 전송 레이어 프로토콜입니다. 원래 Google에서 개발한 QUIC는 클라이언트와 서버 간에 패킷을 이동하는 저수준 전송 메커니즘으로 UDP(User Datagram Protocol)를 사용합니다. 특히 QUIC는 HTTP/1.1 및 HTTP/2처럼 추가 레이어가 아닌 필수 구성 요소로 TLS(Transport Layer Security)도 통합합니다.
QUIC를 기반으로 하는 HTTP/3은 Hypertext Transfer Protocol(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을 사용할 수 있는 다른 방법에 대해 알아보십시오.