Trong 20 năm qua, World Wide Web đã phát triển mạnh mẽ. Tất cả công nghệ web cải tiến đòi hỏi giải pháp và giao thức giao tiếp, truyền file tốt và nhanh hơn các giao thức hiện tại (HTTP) đang đạt giới hạn công nghệ.
HTTP/2 là gì?
HTTP/2 là phiên bản mới nhất của Hypertext Transport Protocol (HTTP) – giao thức nền tảng được World Wide Web sử dụng. Nó được phê duyệt ban đầu vào tháng 2/2015. Đó là gần 20 năm sau HTTP gốc. HTTP/2 giảm thời gian tải và mang来改 tiến lớn trong giao tiếp giữa server và trình duyệt. Đa số trình duyệt đã thêm HTTP/2, và nó không thay đổi nhiều thứ từ góc nhìn người dùng. Đó là lý do chính tại sao nhiều người chưa đọc hoặc nghe về nó.
HTTP/2 làm gì?
Là kế nhiệm của HTTP, HTTP/2 tập trung cải thiện tất cả đặc điểm của HTTP. Để duy trì tương thích ngược với giao thức cũ, nó giữ hầu hết chức năng của HTTP. Tuy nhiên, nó giới thiệu một số cải tiến mạnh mẽ.
Cả HTTP hoặc HTTP/2 đều định nghĩa:
- Hành động trình duyệt web và server cần thực hiện phản hồi các lệnh khác nhau.
- Cách mỗi bit thông tin được truyền từ máy tính này sang máy khác qua web.
- Cách thông điệp được tạo, định dạng và truyền.
Nói cách khác, HTTP và HTTP/2 đặt tiêu chuẩn cho cách nội dung web được phân phối đến máy tính của bạn, với khác biệt HTTP/2 làm mọi thứ nhanh hơn tiền nhiệm. Ở đây bạn thấy chi tiết HTTP/2 làm gì.
Multiple Streams (Luồng đa kênh)
Chuỗi hai chiều các frame định dạng văn bản được gửi qua giao thức HTTP/2 giữa một server và client gọi là "streams". HTTP chỉ có khả năng truyền một "stream" tại một thời điểm. Sau khi stream gửi xong có độ trễ thời gian giữa truyền stream tiếp theo.
HTTP/2 thiết lập lớp khung nhị phân (binary framing layer) mới giải quyết trực tiếp vấn đề truyền "streams" từng cái một. Nó cho phép client và server phân tách payload HTTP/2 thành các chuỗi frame nhỏ, độc lập, dễ quản lý, xen kẽ. Tất cả thông tin này được lắp ráp lại khi nhận được ở đầu kia. Giao thức này cho phép trao đổi nhiều luồng hai chiều, mở đồng thời, độc lập không độ trễ giữa các stream liên tiếp.
Lợi ích:
- Yêu cầu và phản hồi đa kênh song song không chặn nhau.
- Một kết nối TCP đơn lẻ đảm bảo sử dụng tài nguyên mạng hiệu quả ngay cả khi truyền nhiều luồng dữ liệu.
- Hiệu suất web nhanh hơn, độ trễ giảm, kết quả tìm kiếm tốt hơn.
- Giảm CapEx và OpEx chạy tài nguyên mạng và IT.
HTTP/2 Server Push và Cache Push
Đây là khả năng cho phép server gửi thông tin cache bổ sung đến client. Thông tin đó không được yêu cầu nhưng được dự đoán cho yêu cầu tương lai. Nếu client yêu cầu tài nguyên A và biết tài nguyên B được tham chiếu với tài nguyên yêu cầu, server có thể đẩy B cùng với A thay vì chờ yêu cầu client khác. Sau đó client lưu tài nguyên B đẩy vào cache cho dùng sau. Tính năng này tiết kiệm toàn bộ quá trình request-response round-trip và giảm độ trễ mạng. Google giới thiệu Server Push trong giao thức SPDY.
Cải tiến khác trong HTTP/2 là Cache Push. Điều này chủ động cập nhật hoặc vô hiệu hóa cache của client. Điều này cho phép server xác định tài nguyên có thể đẩy mà client thực sự không muốn.
Lợi ích:
- Client có thể từ chối tài nguyên đẩy để duy trì kho cache hiệu quả (hoặc tắt Server Push hoàn toàn).
- Client có thể giới hạn số luồng đẩy đa kênh đồng thời.
- Server có thể ưu tiên tài nguyên đẩy. Đây là chìa khóa khác biệt hiệu suất giữa HTTP/2 và HTTP.
- Server có thể đa kênh tài nguyên đẩy cùng thông tin yêu cầu của client trong cùng kết nối TCP.
- Client có thể dùng tài nguyên cache trên các trang khác nhau.
- Client lưu tài nguyên đẩy trong bộ nhớ cache.
Giao thức nhị phân (Binary Protocols)
HTTP/2 cải thiện đáng kể khả năng chuyển giao thức văn bản sang giao thức nhị phân. Trong khi HTTP dùng xử lý lệnh văn bản để thực hiện chu kỳ request-response, HTTP/2 dựa trên lệnh nhị phân. Điều đó rút ngắn thời gian (thành 1 và 0) thực hiện cùng nhiệm vụ.
Trình duyệt hỗ trợ HTTP/2 sẽ chuyển lệnh văn bản thành mã nhị phân trước khi truyền qua mạng. Tuy nhiên, lớp khung nhị phân không tương thích ngược với server và client HTTP.
Lợi ích:
- Ngăn chặn lo ngại bảo mật liên quan đến bản chất văn bản của HTTP (ví dụ: tấn công response splitting).
- Kích hoạt khả năng HTTP/2 như nén, ưu tiên, đa kênh, xử lý TLS hiệu quả, và kiểm soát luồng.
- Biểu diễn nhỏ gọn lệnh cho phép triển khai và xử lý dễ dàng.
- Xử lý dữ liệu mạnh mẽ và hiệu quả giữa client và server.
- Thông lượng cải thiện và độ trễ mạng giảm.
- Ít cơ hội lỗi so với HTTP.
- Sử dụng tài nguyên mạng hiệu quả cao.
- Chi phí xử lý dữ liệu thấp.
- Dấu chân mạng nhẹ.
Ưu tiên luồng (Stream Prioritization)
HTTP/2 cho phép client cung cấp ưu tiên cho luồng dữ liệu cụ thể. Server không bắt buộc tuân theo chỉ dẫn client, nhưng cơ chế này cho phép server tối ưu phân bổ tài nguyên mạng dựa trên yêu cầu người dùng.
Ưu tiên luồng hoạt động với Trọng số (Weight) và Phụ thuộc (Dependencies) gán cho mỗi luồng. Dù tất cả luồng vốn dĩ phụ thuộc nhau trừ, chúng có trọng số gán từ 1 đến 256. Cơ chế ưu tiên luồng vẫn là chủ đề tranh luận. Tuy nhiên, khi ưu tiên luồng kết hợp với khả năng HTTP/2 xử lý nhiều luồng dữ liệu trong một kết nối TCP đơn lẻ, có thể dẫn đến đến đồng thời các yêu cầu server khác ưu tiên.
Lợi ích:
- Giảm tác động tiêu cực của lo ngại độ trễ mạng.
- Cải thiện trải nghiệm người dùng và tốc độ tải trang.
- Tối ưu hóa giao tiếp dữ liệu giữa server và client.
- Sử dụng tài nguyên mạng hiệu quả cao.
- Giảm thời gian giao phối cho yêu cầu nội dung chính.
Nén Header có trạng thái (Stateful Header Compression)
Khi người dùng duyệt trang web nội dung media phong phú, dùng HTTP, client đẩy nhiều frame header gần giống nhau. Điều này xảy ra vì mỗi yêu cầu client phải bao gồm nhiều thông tin nhất server yêu cầu thực hiện thao tác yêu cầu. Quy trình này dẫn đến độ trễ và tiêu thụ tài nguyên không cần thiết.
HTTP/2 bao gồm khả năng nén số lượng lớn frame header dư thừa. Nó dựa trên thông số HPACK như cách tiếp cận an toàn và đơn giản cho nén header. Client và server duy trì danh sách header dùng trong yêu cầu client-server trước. Điều này giải quyết trực tiếp lo ngại frame header dư thừa.
Lợi ích:
- Mã hóa header thường dùng và header lớn. Loại bỏ cần gửi toàn bộ frame header. Kích thước riêng của mỗi stream thu nhỏ đáng kể.
- Ngăn chặn tấn công bảo mật như CRIME khám phá luồng dữ liệu với header nén.
- Sử dụng hiệu quả cơ chế đa kênh.
- Ưu tiên luồng hiệu quả.
- Giảm chi phí tài nguyên.
Lợi ích thực tế của HTTP/2
HTTP/2 tập trung tối đa hóa tiềm năng công nghệ, để đáp ứng nhu cầu và kỳ vọng tương lai. Đây là lợi ích thực tế dùng HTTP/2.
Hiệu suất Web và Hiệu suất Web Di động – HTTP/2 có khả năng gửi/nhận nhiều dữ liệu hơn trong một chu kỳ giao tiếp client-server. Nó hoạt động tốt giảm độ trễ truy cập dịch vụ internet trên mạng dữ liệu di động và mạng băng thông hạn chế mỗi người dùng.
Internet Tốc độ cao rẻ hơn – HTTP/2 tăng hiệu quả giao tiếp dữ liệu. Cho phép nhà cung cấp internet thu chi phí tổng thể thấp hơn trong khi duy trì tiêu chuẩn internet tốc độ cao.
Bảo mật – HTTP/2 không dễ bị tổn thương trước các mối đe dọa nhắm vào giao thức lớp ứng dụng dựa trên văn bản. Hơn nữa, nó dùng cách tiếp cận "Security by Obscurity" bảo vệ truyền dữ liệu nhạy cảm giữa client và server.
Phạm vi mở rộng – Lợi thế HTTP/2 giảm kết quả internet cho nhà cung cấp. Dẫn đến phủ sóng internet rộng hơn trên toàn cầu.
Trải nghiệm Web đa phương tiện phong phú – Các tính năng và lợi thế công nghệ HTTP/2 mang lại cho World Wide Web cung cấp cơ sở hạ tầng khả thi phân phối nội dung media phong phú ở tốc độ tải trang nhanh hơn.
Tóm lại
HTTP/2 là giao thức tương đối mới, nhưng hỗ trợ nó liên tục tăng. Ngày nay, hầu hết trình duyệt internet hỗ trợ HTTP/2 (Microsoft Edge, Google Chrome, Safari, Firefox, Chrome cho Android). Nhiều web server bao gồm hỗ trợ HTTP/2 bản gốc (Apache HTTP Server, Tomcat, NGINX). Không nghi ngờ, HTTP/2 là giao thức WWW của tương lai.