QUIC 프로토콜 구현 라이브러리 quiche 소개
cloudflare/quiche
GitHubQuiche는 IETF 표준으로 정의된 QUIC 전송 프로토콜과 HTTP/3을 구현한 라이브러리입니다. 낮은 수준의 API를 제공하여 패킷 처리와 연결 상태 관리를 담당합니다.
- 클라우드플레어 엣지 네트워크의 핵심 엔진으로 사용되며, 안드로이드 DNS 리졸버나 curl 등 주요 서비스에서 실제 인프라로 활용되는 기술입니다.
- QUIC가 기존 TCP 대비 갖는 장점과 동작 원리부터 연결 설정, 타이머 관리까지 네트워킹 전반을 깊이 있게 이해할 수 있습니다.
- 연결 설정(Config) 및 `recv()`, `send()`를 이용한 데이터 처리, 그리고 시간 기반 이벤트 루프 구현 등 복잡한 로직을 직접 다뤄야 합니다.
quiche는 IETF 표준으로 정의된 QUIC 전송 프로토콜과 HTTP/3을 구현한 라이브러리입니다. 이 애플리케이션은 패킷 처리와 연결 상태 관리를 위한 낮은 수준의 를 제공하며, 사용자는 소켓 핸들링 및 타이머 지원 이벤트 루프를 직접 제공해야 합니다.
quiche는 Cloudflare 엣지 네트워크에서 HTTP/3 지원에 핵심적으로 사용되며, 안드로이드 DNS 리졸버가 DNS over HTTP/3를 구현하는 데도 활용됩니다. 또한 curl과 같은 도구에도 통합되어 HTTP/3 프로토콜을 사용할 수 있도록 지원합니다.
QUIC 연결을 설정하려면 먼저 `Config` 객체를 생성하고, 이 객체는 QUIC 버전, ALPN ID, 흐름 제어 등 중요한 측면들을 제어합니다. 클라이언트 측에서는 `connect()` 유틸리티 함수를 사용하며, 서버 측에서는 `accept()`를 사용하여 연결을 수립할 수 있습니다. 이후 `recv()`와 `send()` 메서드를 통해 패킷을 처리하고, 시간 기반 이벤트를 위해 타이머 관리(timeout(), on_timeout())가 필요합니다.
연결이 확립된 후에는 스트림을 통해 애플리케이션 데이터를 주고받습니다. 데이터 전송은 `stream_send()` 메서드를 사용하며, 수신 측에서는 연결의 `readable()` 메서드로 읽기 가능한 스트림 목록을 확인한 뒤, `stream_recv()`를 이용해 실제 데이터를 검색할 수 있습니다.
용어 풀이
- API
- 프로그램끼리 기능을 주고받는 약속된 창구. AI 모델은 보통 API로 불러 써요.