[HTTP Series] Understand about HTTP/3

3 min read

HTTP/3 là giao thức Hypertext Transfer Protocol phiên bản 3 tiếp nối sự phát triển từ HTTP/1 và HTTP/2. HTTP/3 hiện đã là tên gọi chính thức thay thế cho HTTP-over-QUIC (tên gọi tạm thời trước đó của HTTP/3).

HTTP/3 là gì?

HTTP/3 là giao thức phiên bản mới nhất của HTTP, sử dụng QUIC (Quick UDP Internet Connections) thay vì TCP như các phiên bản trước. QUIC là một giao thức tầng trên UDP, được thiết kế để cung cấp tốc độ cao hơn và độ tin cậy tốt hơn cho các kết nối Internet.

Điểm mới đáng chú ý của HTTP/3

  1. Sử dụng QUIC thay cho TCP
    • HTTP/3 loại bỏ TCP, thay vào đó là QUIC, một giao thức được phát triển bởi Google. QUIC hoạt động trên UDP, mang lại tốc độ kết nối nhanh hơn vì giảm thiểu thời gian handshaking.
  2. Giảm độ trễ mạng
    • QUIC cung cấp kết nối nhanh nhất, ngay cả khi chuyển mạng (từ Wi-Fi sang di động hoặc ngược lại), điều mà TCP gây trở ngại do quá trình reset kết nối.
  3. Tích hợp TLS 1.3
    • HTTP/3 tích hợp bảo mật vào trong giao thức QUIC, giúp giảm bớt khâu trao đổi chứng chỉ SSL/TLS, giảm độ trễ mạng đáng kể.
  4. Không còn tình trạng head-of-line blocking
    • Trong HTTP/2, một request có thể chắn các request khác nếu có vấn đề. HTTP/3 giải quyết vấn đề này nhờ QUIC hoạt động trên nhiều luồng (streams) độc lập.

QPACK là gì?

Với QUIC, vấn đề này được giải quyết đơn giản bằng xếp thứ tự tất cả các header của HTTP request/response trên cùng một luồng QUIC. Khi đó tất các header sẽ được truyền đúng thứ tự trong mọi trường hợp.

Nhưng cách này sẽ gia tăng khả năng Head of line blocking, thứ mà QUIC sinh ra để giải quyết. Vì vậy nhóm phát triển QUIC đã thiết kế một cách mapping mới giữa HTTP và QUIC (“HTTP/QUIC“) và một cơ chế nén header mới gọi là QPACK.

Trong QPACK, mỗi trao đổi HTTP request/response sử dụng thêm 2 luồng kết nối QUIC hai chiều giữa hai đầu endpoint, do vậy sẽ không xuất hiện tình trạng Head of line blocking nữa. Chúng sẽ chịu trách nhiệm trao đổi thông tin mapping cho đầu còn lại.

So sánh HTTP/2 và HTTP/3

Tiêu chíHTTP/2HTTP/3
Giao thức truyền tảiTCPQUIC (UDP)
Bảo mậtSử dụng TLS riêng lẻTích hợp TLS 1.3 trên QUIC
Hiện tượng head-of-line blockingCó (nếu một request bị lỗi, các request khác bị ảnh hưởng)Không (các luồng độc lập nhờ QUIC)
Tốc độ kết nốiChậm hơn do TCP handshakingNhanh hơn do QUIC giảm thiểu handshaking
Khả năng chuyển mạngKết nối phải thiết lập lại khi chuyển mạngDuy trì kết nối khi chuyển mạng
Triển khaiRộng rãi và đã trưởng thànhCòn đang được áp dụng dần

Thách thức khi áp dụng HTTP/3

  • Khó khăn trong việc debugging: Việc sử dụng QUIC khiến việc phân tích gói tin phức tạp hơn.
  • Tương thích ngược: Một số thiết bị và trình duyệt cũ không hỗ trợ HTTP/3.
  • Phụ thuộc vào hạ tầng mạng: Hiệu suất có thể bị giới hạn bởi hạ tầng mạng hiện có.

Lời kết

HTTP/3 hứa hẹn mở ra cuộc cách mạng mang lại tốc độ cao, an toàn và đáng tin cậy dựa trên UDP cho các website. Có lẽ vào một ngày không xa, chúng ta sẽ có những website chạy hoàn toàn bằng UDP/QUIC. Google cũng cho rằng rất nhiều dịch vụ của họ đang vận hành với HTTP/3, vì lẽ này mà Chrome hiện đang support khá sớm HTTP/3 chăng?!!

HTTP/3 do còn quá mới nên vẫn chưa được các trình duyệt chính thức support. Một số thì đã implement đưa vào vận hành (Chrome, Firefox) nhưng một số thì bị tắt bởi mặc định. Các bạn có thể check các trình duyệt hỗ trợ HTTP/3 tại đây.

Link Series

Avatar photo

Leave a Reply

Your email address will not be published. Required fields are marked *