HTTP: 1.0 vs. 1.1 vs. 2.0 vs. 3.0

EminelEminel
7 min read

Giao thức truyền siêu văn bản (HTTP - HyperText Transfer Protocol) là nền tảng của giao tiếp dữ liệu trên World Wide Web. Trải qua nhiều phiên bản—1.0, 1.1, 2.0 và 3.0—HTTP liên tục được cải tiến nhằm nâng cao hiệu năng, bảo mật và hiệu quả truyền tải. Việc hiểu rõ các phiên bản này là điều cần thiết đối với kỹ sư phần mềm khi thiết kế và tối ưu hóa ứng dụng web.

Tổng quan các phiên bản HTTP

  • HTTP/1.0 (ra mắt năm 1996)

  • HTTP/1.1 (ra mắt năm 1997, được cập nhật nhiều lần)

  • HTTP/2.0 (ra mắt năm 2015)

  • HTTP/3.0 (ra mắt năm 2020)

HTTP/1.0

Trước khi có HTTP/1.0, HTTP/0.9 chỉ hỗ trợ GET và không có tiêu đề, chỉ gửi các tệp HTML đơn giản

HTTP/1.0 đã cải tiến bằng cách thêm tiêu đề, mã trạng thái và các phương thức như POST và HEAD, giúp việc truy cập tài liệu dễ dàng hơn.

Đặc điểm chính:

  • Mô hình Request-Response đơn giản: Mỗi yêu cầu mở một kết nối TCP mới và đóng sau khi phản hồi.

  • Giao thức không trạng thái (stateless): Không giữ thông tin phiên giữa các lần yêu cầu.

  • Header cơ bản: Hỗ trợ các header cần thiết cho việc đàm phán nội dung và bộ nhớ đệm (caching).

Cải tiến so với các giao thức trước đó:

  • Giới thiệu khái niệm kết nối giữ nguyên (persistent connection), dù còn hạn chế.

  • Chuẩn hóa cấu trúc yêu cầu/phản hồi tốt hơn so với các giao thức nguyên thủy trước đó.

Trường hợp sử dụng điển hình:

Thích hợp cho các website tĩnh đơn giản thời kỳ đầu như blog cá nhân, trang thông tin cơ bản, nơi không yêu cầu nội dung động hay xử lý phức tạp.

HTTP/1.1

HTTP/1.1, ra mắt vào năm 1997, đã giới thiệu kết nối liên tục, giúp giảm thiểu số lần bắt tay TCP và cải thiện hiệu suất truyền tải.

HTTP 1.1 đã cải thiện tốc độ truyền tải dữ liệu bằng cách cho phép gửi yêu cầu nhiều lần và sử dụng mã hóa phân đoạn. Tuy nhiên, nó vẫn gặp vấn đề với việc chặn đầu dòng, ảnh hưởng đến hiệu suất.

HTTP 1.1 đã cải tiến khả năng lưu trữ và yêu cầu điều kiện, giúp giảm thiểu việc truyền tải dữ liệu không cần thiết. Điều này tiết kiệm băng thông và cải thiện hiệu suất.

Đặc điểm chính:

  • Kết nối giữ nguyên: Duy trì kết nối TCP cho nhiều yêu cầu/phản hồi, giảm độ trễ.

  • Chunked Transfer Encoding: Cho phép gửi dữ liệu theo từng phần, hỗ trợ phản hồi khi chưa biết tổng kích thước nội dung.

  • Cơ chế caching cải tiến: Hệ thống header được mở rộng để kiểm soát bộ nhớ đệm hiệu quả hơn.

  • Host header: Hỗ trợ virtual hosting, cho phép nhiều domain dùng chung một địa chỉ IP.

Cải tiến so với HTTP/1.0:

  • Giảm độ trễ: Hạn chế chi phí thiết lập lại kết nối cho mỗi yêu cầu.

  • Quản lý tài nguyên tốt hơn: Hỗ trợ pipelining (dù ít được áp dụng thực tế).

  • Hỗ trợ virtual host: Cho phép nhiều website chạy trên cùng một server/IP.

Trường hợp sử dụng điển hình:

HTTP/1.1 vẫn là nền tảng chính cho các trang web hiện đại, đặc biệt là các website thương mại điện tử có nhiều tài nguyên tĩnh như hình ảnh, JavaScript, và CSS cần tải đồng thời.

HTTP/2.0

HTTP/2 đã ra mắt vào năm 2015, khắc phục các vấn đề về hiệu suất của HTTP 1.1, bao gồm việc loại bỏ chặn đầu dòng thông qua việc phân loại khung nhị phân.

HTTP/2 và HTTP/3 mang lại những cải tiến đáng kể cho việc truyền tải dữ liệu qua mạng. Chúng cải thiện tốc độ tải trang và giảm độ trễ trong kết nối mạng.

Đặc điểm chính:

  • Giao thức nhị phân: Mã hóa HTTP ở dạng nhị phân giúp phân tích hiệu quả hơn và ít lỗi hơn.

  • Multiplexing: Hỗ trợ nhiều yêu cầu/phản hồi đồng thời trên một kết nối duy nhất, loại bỏ hiện tượng head-of-line blocking.

  • Nén header (HPACK): Giảm kích thước header, tiết kiệm băng thông.

  • Server Push: Cho phép máy chủ chủ động gửi tài nguyên mà client có thể cần.

Cải tiến so với HTTP/1.1:

  • Tăng hiệu suất đáng kể: Giảm thời gian tải trang nhờ multiplexing và nén header.

  • Quản lý tài nguyên hiệu quả: Dùng một kết nối để xử lý nhiều luồng dữ liệu.

  • Cải thiện trải nghiệm người dùng: Tương tác nhanh hơn, mượt mà hơn cho các ứng dụng web phức tạp.

Trường hợp sử dụng điển hình:

Các nền tảng có lưu lượng truy cập lớn như mạng xã hội, dịch vụ streaming hay các trang thương mại điện tử quy mô lớn đều tận dụng HTTP/2.0 để truyền tải nội dung nhanh chóng và hiệu quả. Ví dụ: YouTube sử dụng HTTP/2.0 để truyền tải video chất lượng cao với nhiều luồng dữ liệu đồng thời.

HTTP/3.0

HTTP 3 đã cải tiến kết nối mạng bằng cách sử dụng ID kết nối của Quic, cho phép duy trì kết nối mượt mà ngay cả khi chuyển mạng. HTTP 1.1 vẫn được sử dụng phổ biến, nhưng HTTP 2 và HTTP 3 đang dần chiếm ưu thế.

Đặc điểm chính:

  • Dựa trên giao thức QUIC (Quick UDP Internet Connections): Thay vì TCP, HTTP/3 sử dụng UDP, cải thiện tốc độ và độ tin cậy.

  • Giảm độ trễ kết nối: Thiết lập kết nối nhanh hơn nhờ 0-RTT handshake.

  • Khả năng phục hồi khi mất gói tin: Ổn định hiệu năng ngay cả khi mạng không ổn định.

  • Tích hợp mã hóa: QUIC đi kèm với TLS 1.3, đảm bảo truyền dữ liệu an toàn theo mặc định.

Cải tiến so với HTTP/2.0:

  • Thiết lập kết nối nhanh hơn: Nhờ cơ chế UDP, giảm thời gian chờ và tăng tốc độ truyền.

  • Bảo mật nâng cao: Mã hóa tích hợp giúp giao tiếp an toàn mà không cần thiết lập phức tạp.

  • Tối ưu trong điều kiện thực tế: Bền bỉ hơn với mất gói tin và mạng có độ trễ cao.

Trường hợp sử dụng điển hình:

Các ứng dụng yêu cầu truyền dữ liệu thời gian thực như game online, hội nghị video, hoặc livestream sẽ hưởng lợi nhiều từ HTTP/3.0. Ví dụ: Các nền tảng như Zoom hoặc Microsoft Teams tận dụng QUIC để giảm độ trễ và tăng độ mượt khi truyền video.

Tóm tắt điểm khác biệt chính giữa các phiên bản HTTP

Tính năngHTTP/1.0HTTP/1.1HTTP/2.0HTTP/3.0
Năm phát hành1996199720152020
Mô hình kết nốiMỗi yêu cầu mở một kết nối mớiKết nối giữ nguyên (persistent connections)Nhiều luồng (multiplexed streams) trên một kết nốiMột kết nối duy nhất sử dụng QUIC (trên giao thức UDP)
Loại giao thứcVăn bản thuần (text-based)Văn bản thuần (text-based)Nhị phân (binary)Nhị phân (binary)
Độ trễCao do thiết lập nhiều kết nốiGiảm nhờ kết nối giữ nguyênThấp hơn nhờ multiplexingRất thấp nhờ handshake nhanh của QUIC
Nén headerKhôngGiới hạnCó (sử dụng HPACK)Cải tiến hơn (sử dụng QPACK trong QUIC)
Bảo mậtTuỳ chọn (thường không có)Tuỳ chọn (thường không có)Tuỳ chọn (thường đi kèm TLS)Bắt buộc (tích hợp TLS 1.3)
Hiệu suất khi mất gói tinKémKémTốt hơnXuất sắc
Tình huống sử dụng điển hìnhWebsite tĩnh, đơn giảnWebsite động, thương mại điện tửỨng dụng web tương tác, lưu lượng lớnỨng dụng thời gian thực, truyền phát video (streaming)

Kết luận

Sự phát triển của HTTP từ 1.0 đến 3.0 phản ánh nỗ lực không ngừng của web trong việc tối ưu hóa tốc độ, hiệu suất và bảo mật. Mỗi phiên bản đều kế thừa và cải tiến so với phiên bản trước, nhằm đáp ứng nhu cầu ngày càng cao của các ứng dụng web hiện đại. Là một kỹ sư phần mềm, việc tận dụng các cải tiến của giao thức HTTP sẽ giúp bạn xây dựng các ứng dụng mạnh mẽ, hiệu suất cao và an toàn hơn.

Tài liệu tham khảo: https://www.designgurus.io/course-play/grokking-system-design-fundamentals/doc/http-10-vs-11-vs-20-vs-30

0
Subscribe to my newsletter

Read articles from Eminel directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Eminel
Eminel

Hello, my name is Eminel a software engineer specializing in scalable software architecture, microservices, and AI-powered platforms. Passionate about mentoring, performance optimization, and building solutions that drive business success.