HTTP/1.x, HTTP/2 và HTTP/3

HTTP/1.x, HTTP/2 và HTTP/3
Photo by israel palacio / Unsplash

HTTP/1.x

HTTP/1.x là thế hệ đầu tiên của HTTP được phát triển từ HTTP/0.9 với mục tiêu chính là cho phép các dịch vụ web có thể trao đổi thông tin với định dạng HTTP (Hypertext Transfer Protocol) thông qua giao thức TCP/IP.

HTTP/1.0

  • Khác với HTTP/0.9, HTTP/1.0 được trình làng hoàn chỉnh năm 1996 có thêm request header và hỗ trợ content-type giúp client-server có thể trao đổi những định dạng file khác ngoài văn bản (text).
  • Với mỗi TCP connection, HTTP/1.0 chỉ cho phép một request và response duy nhất. Vì vậy nếu muốn lấy nhiều dữ liệu cùng lúc hoặc gửi nhiều request liên tiếp thì bắt buộc phải sử dụng kỹ thuật pipelining, tức phải close và open TCP connection liên tục.
HTTP request dựa trên TCP handshake

HTTP/1.1

  • HTTP/1.1 có một bước tiến quan trọng đó là cho phép thực hiện nhiều request và response trên một TCP connection duy nhất, điều này giúp HTTP/1.1 nhanh hơn HTTP/1.0 rất nhiều. Mặc khác, HTTP/1.1 cũng cho phép streaming dữ liệu thành từng phần (chunks streaming) một cách dễ dàng hơn.
  • Ngoài ra, đây cũng là giai đoạn SSL được phát triển để tích hợp vào HTTP/1.1 để bảo vệ kênh giao tiếp quan trọng này.
  • Tuy nhiên số lượng TCP connection mà một server có thể "keep-alive" là có hạn. Điều này dẫn tới việc khi có quá nhiều request thì những request sau phải chờ cho đến khi đến lượt mình. Vấn đề này được gọi là head-of-line blocking issue. Đây là một vấn đề lớn làm yếu đi khả năng mở rộng theo chiều ngang của các hệ thống streaming.

HTTP/2.0

  • HTTP/2.0 được giới thiệu vào năm 2015, HTTP/2.0 phát triển dựa trên SPDY protocol của Google với khái niệm quan trọng là multiplexing.
  • Multiplexing cho phép thực hiện nhiều request/response cùng lúc với một TCP connection duy nhất mà không cần một thứ tự nào (asynchronous).
  • HTTP/2.0 cũng trình làng một khái niệm mới "server-push", tức là server sẽ thực hiện push dữ liệu đến client trước cả khi client thực hiện request.
  • Với việc là một binary protocol, HTTP/2.0 cũng thể hiện sự vượt trội về cả mặt bảo mật thông tin lẫn tốc độ và khả năng chịu tải của server.

HTTP/3.0

  • Khác với các thệ hệ trước, HTTP/3.0 sử dụng UDP connection thay vì TCP.
  • HTTP/3.0 được phát triển dựa trên Google’s QUIC với mục tiêu tối ưu hơn nữa các hệ thống streaming thời gian thực. Tuy nhiên việc thay thế TCP bằng UDP sẽ khiến HTTP/3.0 gặp một vài vấn đề về bảo mật và toàn vẹn thông tin so với HTTP/2.0. Hiện HTTP/3.0 vẫn đang được hoàn thiện dần.