
HTTP/3 và QUIC là gì: giao thức web mới, nhanh hơn HTTP/2
HTTP/3 là phiên bản thứ ba của giao thức Hypertext Transfer Protocol — nền tảng trao đổi thông tin của World Wide Web. Khác với HTTP/1.1 (được xuất bản năm 1997) và HTTP/2 (năm 2015), HTTP/3 không chạy trên TCP mà sử dụng QUIC (Quick UDP Internet Connections) — một giao thức truyền tải đa luồng được xây dựng trực tiếp trên UDP. QUIC được chuẩn hóa bởi IETF thông qua các RFC 9000 (truyền tải), RFC 9001 (TLS 1.3 tích hợp), RFC 9002 (phát hiện mất gói và kiểm soát tắc nghẽn), RFC 9114 (HTTP/3) và RFC 9204 (QPACK nén tiêu đề). Với thiết kế này, HTTP/3 giải quyết được vấn đề head-of-line blocking (chặn đầu hàng) vốn cố hữu của TCP, giảm độ trễ kết nối và cải thiện trải nghiệm người dùng, đặc biệt trên mạng di động và các kết nối có độ mất gói cao.
Vào tháng 7 năm 2026, theo số liệu của IETF, HTTP/3 đã được hỗ trợ bởi hơn 95 % trình duyệt web phổ biến đang sử dụng và chiếm khoảng 40 % trong top 10 triệu trang web hàng đầu toàn cầu. Các trình duyệt chính như Google Chrome, Microsoft Edge, Mozilla Firefox và Apple Safari (từ phiên bản 16 trở lên) đều đã triển khai HTTP/3 theo mặc định. Các CDN và máy chủ web lớn như Cloudflare, Fastly, Akamai và NGINX cũng đều hỗ trợ HTTP/3 sẵn sàng cho môi trường sản xuất.
Tại sao cần QUIC? Vấn đề của TCP và HTTP/2
HTTP/2 mang lại nhiều cải tiến so với HTTP/1.1 như multiplexing (đa luồng), nén tiêu đề bằng HPACK và server push. Tuy nhiên, HTTP/2 vẫn dựa trên một kết nối TCP đơn lẻ. Khi một gói tin TCP bị mất, toàn bộ các luồng bên trong kết nối đó đều bị chặn cho đến khi gói tin bị mất được truyền lại (mecanisme của TCP đảm bảo thứ tự byte). Đây chính là hiện tượng head-of-line blocking tại tầng truyền tải. QUIC loại bỏ hoàn toàn vấn đề này bằng cách: (1) mỗi luồng (stream) trong QUIC có trình tự byte độc lập, mất gói tin trên một luồng không ảnh hưởng đến các luồng khác; (2) QUIC chạy trên UDP, cho phép triển khai cơ chế truyền lại (retransmission) riêng ở tầng ứng dụng, linh hoạt hơn so với cơ chế TCP cứng nhắc của hệ điều hành.

0-RTT và tiếp tục kết nối (connection migration)
Một trong những tính năng mạnh nhất của QUIC là hỗ trợ 0-RTT (Zero Round-Trip Time) resumption. Khi một client đã từng kết nối với một server, nó có thể gửi dữ liệu ứng dụng ngay trong gói tin QUIC đầu tiên (Initial packet) mà không cần đợi handshake TLS hoàn tất. Điều này giảm đáng kể độ trễ cho các kết nối ngắn hoặc các yêu cầu lặp lại (ví dụ tải lại trang web). Ngoài ra, QUIC sử dụng Connection ID — một định danh duy nhất được gán cho mỗi kết nối — cho phép client chuyển đổi mạng (ví dụ từ Wi-Fi sang 4G) mà không ngắt kết nối. TCP truyền thống không có cơ chế này: khi IP thay đổi, kết nối TCP sẽ bị reset và phải handshake lại từ đầu.
Kết nối HTTP/3 thường được thiết lập trong 1-RTT (một vòng tay giao thước) cho lần đầu kết nối, so với 1-RTT TCP + 1-RTT TLS = 2-RTT cho HTTPS truyền thống. Với 0-RTT, kết nối có thể bắt đầu gửi dữ liệu ngay lập tức. Các bài báo đo lường thực tế (ví dụ arXiv:2102.12358 “Measuring HTTP/3: Adoption and Performance”) cho thấy HTTP/3 giảm thời gian tải trang từ 5 % đến hơn 30 % tùy thuộc vào điều kiện mạng, với lợi thế lớn nhất xuất hiện trên các kết nối có độ mất gói > 2 % hoặc độ trễ cao.

QPACK — nén tiêu đề an toàn cho HTTP/3
HTTP/2 sử dụng HPACK để nén các trường tiêu đề (header fields) bằng một bảng tra cứu tĩnh và một bảng động được cập nhật trong suốt kết nối. Tuy nhiên, HPACK giả định các tiêu đề được truyền theo thứ tự và không bị mã hoá, điều này không còn đúng với QUIC vì các gói tin có thể đến không theo thứ tự và luôn được mã hoá. QPACK (RFC 9204) được thiết kế để giải quyết vấn đề này: nó giữ nguyên ý tưởng bảng tra cứu tĩnh và động nhưng thêm cơ chế stream-based credit để đảm bảo encoder và decoder luôn đồng bộ về trạng thái bảng động ngay cả khi các gói tin đến không theo thứ tự. Điều này loại bỏ các lỗ hổng tấn công nén (compression oracle attacks) có thể tồn tại khi dùng HPACK trên các kết nối được mã hoá.
Thực thi HTTP/3 trong hạ tầng sản xuất
Để bật HTTP/3 trên một máy chủ web, cần:
- Một máy chủ web hỗ trợ HTTP/3 (NGINX 1.25+, Apache 2.4.57+, Caddy, H2O, hoặc các reverse proxy như Envoy, Traefik).
- Chứng chỉ TLS 1.3 hợp lệ (QUIC yêu cầu TLS 1.3).
- Mở cổng UDP 443 trên tường lửa và load balancer (nhiều load balancer cũ chỉ mở TCP 443).
- Cấu hình ALPN (Application-Layer Protocol Negotiation) để thông báo hỗ trợ
h3vàh3-29(draft-29).
Vì UDP thường bị chặn hoặc giới hạn băng thông bởi các ISP và tường lửa doanh nghiệp, một số triển khai HTTP/3 cũng cung cấp cơ chế fallback tự động sang HTTP/2 (thông qua Alt-Svc header) khi QUIC không khả dụng. Điều này đảm bảo khả năng tương thích ngược mà không cần can thiệp thủ công từ phía người dùng cuối.
Hiệu suất thực tế: HTTP/3 so với HTTP/2 và HTTP/1.1
Nhiều nghiên cứu đo lường độc lập (arXiv:2102.12358, arXiv:2306.11643, arXiv:2403.04074) chỉ ra rằng:
- Trên mạng có băng thông cao, độ trễ thấp và ít mất gói, HTTP/3 và HTTP/2 có hiệu suất tương đương nhau vì TCP cũng hoạt động tốt trong điều kiện lý tưởng.
- Trên mạng di động (4G/5G), mạng Wi-Fi công cộng hoặc kết nối quốc tế có độ mất gói 1–5 %, HTTP/3 giảm thời gian hoàn tất tải trang (page load time) trung bình 15–30 % so với HTTP/2, và 30–50 % so với HTTP/1.1.
- Kết hợp với 0-RTT, các yêu cầu lặp lại (cached resources, API calls) có thể hoàn tất nhanh hơn đáng kể.
Tuy nhiên, HTTP/3 cũng có nhược điểm: tiêu tốn CPU nhiều hơn do phải xử lý truyền lại, mã hoá và quản lý luồng ở tầng ứng dụng; một số proxy và tường lửa cũ không hỗ trợ UDP 443 tốt; và việc gỡ lỗi (debug) gói tin QUIC phức tạp hơn do mã hoá và định dạng gói tin biến đổi.

Tương lai: HTTP/3, WebTransport và các ứng dụng thời gian thực
HTTP/3 không chỉ là bản cập nhật cho tải trang web. Nhờ kiến trúc đa luồng, độ trễ thấp và khả năng 0-RTT, QUIC đang mở ra khả năng cho các giao thức mới như WebTransport (giúp truyền tải dữ liệu hai chiều độ trễ thấp cho game, streaming, IoT) và HTTP/3 Datagrams (cho phép gửi dữ liệu không tin cậy trong cùng kết nối QUIC). Các tiêu chuẩn này đang được IETF WebTransport Working Group phát triển và có thể thay thế WebSocket trong nhiều trường hợp sử dụng thời gian thực.
Tóm lại, HTTP/3 đại diện cho một bước nhảy vọt trong thiết kế giao thức web: từ phụ thuộc vào TCP cứng nhắc sang một giao thức truyền tải hiện đại (QUIC) được thiết kế từ đầu cho hiệu suất, bảo mật và khả năng mở rộng. Với sự hỗ trợ rộng rãi từ trình duyệt, máy chủ và CDN, HTTP/3 đang dần trở thành tiêu chuẩn mặc định cho web hiện đại, và sự chuyển đổi này mang lại lợi ích thiết thực cho người dùng cuối dưới dạng trang web tải nhanh hơn, video ít giật lag hơn và kết nối ổn định hơn khi thay đổi mạng.
