HTTP/2 là gì? So sánh HTTP/2 và HTTP/1

Kể từ khi Internet ra đời, nhu cầu về việc trao đổi thông tin và dữ liệu giữa các máy tính đã trở nên quan trọng hơn bao giờ hết. HTTP (Hypertext Transfer Protocol) chính là giao thức tiêu chuẩn phổ biến nhất trên nền tảng này, phục vụ cho việc truy cập thông tin từ các website mà chúng ta sử dụng hàng ngày.

HTTP Là Gì?

HTTP (Hyper Text Transfer Protocol) là một giao thức chuẩn của World Wide Web, ra đời năm 1989 do Timothy Berners-Lee phát triển. Giao thức này cho phép máy tính của người dùng (client) giao tiếp với các máy chủ (server) trên toàn cầu.

Khi bạn muốn xem một nội dung trên website, bạn chỉ cần nhập địa chỉ vào trình duyệt và nhấn Enter. Máy tính của bạn sẽ thực hiện một yêu cầu HTTP để lấy thông tin từ server. Quá trình này được gọi là kiến trúc Client & Server hay Request & Response.

Request & ResponseRequest & Response

Khi HTTP ra đời, phiên bản đầu tiên (v0.9) chỉ hỗ trợ một phương thức duy nhất là GET và không có header kèm theo. Mặc dù có vẻ đơn giản, nhưng HTTP đã trải qua nhiều bước kết nối qua nhiều tầng mạng khác nhau.

Quá trình HTTPQuá trình HTTP

Về cơ bản, HTTP là một “layer” phía trên TCP (Transmission Control Protocol).

Cách HTTP Hoạt Động

Một yêu cầu HTTP thường được thực hiện qua một kết nối TCP, với các bước như sau:

  1. Client khởi tạo kết nối TCP đến server.
  2. Sau khi kết nối thành công, client gửi yêu cầu đến server.
  3. Server nhận yêu cầu và tìm kiếm thông tin, sau đó gửi lại cho client qua kết nối TCP đã thiết lập.
  4. Client nhận phản hồi từ server.
  5. Client đóng kết nối TCP.
  6. Nếu cần thêm dữ liệu từ server, client sẽ lặp lại quy trình trên.

Cách HTTP hoạt độngCách HTTP hoạt động

Chú ý rằng thiết lập một kết nối TCP cần thực hiện quy trình TCP 3-Way Handshake, tức là cần có ba bước trao đổi giữa client và server trước khi kết nối được thiết lập.

Quy trình TCP 3-Way HandshakeQuy trình TCP 3-Way Handshake

Điều này tạo ra một điểm yếu lớn trong các phiên bản HTTP như v0.9 và 1.0, và chính vì vậy đã thúc đẩy sự phát triển lên HTTP/1.1.

HTTP/1.1: Giao Thức Tiên Tiến

Giao thức HTTP/1.1 được phát triển vào năm 1999, chính thức được áp dụng phổ biến hơn cho nhiều thiết bị và nền tảng.

HTTP/1.1 cung cấp nhiều phương thức hơn (như GET, HEAD, POST, PUT, DELETE, TRACE, và OPTIONS), hỗ trợ header, và đặc biệt cho phép kết nối TCP được giữ lại (persistent connection) để phục vụ các yêu cầu tiếp theo.

HTTP Pipelining

Tính năng này cho phép nhiều yêu cầu HTTP được gửi trong một kết nối mà không cần chờ đợi phản hồi từ server. Tuy nhiên, điều này gây ra vấn đề nếu các yêu cầu đến cùng một lúc nhưng phản hồi không theo thứ tự, dẫn đến khó khăn cho client trong việc phân biệt phản hồi đến từ yêu cầu nào.

HTTP PipeliningHTTP Pipelining

Ngoài ra, việc mất gói tin trong quá trình truyền tải có thể chặn toàn bộ quá trình xử lý các yêu cầu tiếp theo, dẫn đến hiện tượng TCP Head-of-line blocking (HOL).

HTTP Persistent Connection

Trong HTTP/1.1, thay vì gửi tất cả các yêu cầu một lần và đợi phản hồi lộn xộn, chúng ta có thể sử dụng HTTP keep-alive để gửi từng cặp yêu cầu/đáp ứng.

HTTP Persistent ConnectionHTTP Persistent Connection

Hỗ Trợ Nén Dữ Liệu

HTTP/1.1 cũng cho phép client và server tối ưu hóa tốc độ và băng thông thông qua nén dữ liệu. Các phương pháp nén phổ biến như gzip và Deflate giúp cải thiện hiệu suất truyền tải.

Hỗ trợ Compression/DecompressionHỗ trợ Compression/Decompression

SPDY: Tiền Thân Của HTTP/2

SPDY được phát triển bởi Google với mục đích tăng tốc độ tải trang và bảo mật cho website. Một số vấn đề của HTTP/1 mà SPDY giải quyết bao gồm:

  • Single request per connection: HTTP chỉ cho phép một yêu cầu trên mỗi kết nối, gây tăng độ trễ.

  • Client-initiated requests: HTTP yêu cầu client phải gửi yêu cầu trước; SPDY cho phép server chủ động gửi dữ liệu đến client.

  • Redundant headers: Các header có thể lặp lại, tăng độ trễ và tiêu tốn băng thông.

  • Uncompressed data: SPDY bắt buộc nén dữ liệu cho mọi yêu cầu.

Nâng Cấp Với HTTP/2

HTTP/2 ra đời dựa trên công nghệ của SPDY, chính thức công bố vào năm 2015 qua RFC 7540. Dưới đây là những tính năng nổi bật của HTTP/2:

Giao Thức Nhị Phân

HTTP/2 sử dụng giao thức nhị phân thay vì văn bản, giúp phân tích dễ dàng và ít bị lỗi hơn.

HTTP/2 sử dụng binary thay cho dạng văn bảnHTTP/2 sử dụng binary thay cho dạng văn bản

Multiplexing Request và Response

HTTP/2 cho phép gửi nhiều yêu cầu và nhận nhiều phản hồi đồng thời mà không cần tuân thủ thứ tự. Dữ liệu được chia thành các khung dữ liệu và có thể xen kẽ trong quá trình truyền tải.

MultiplexingMultiplexing

Streams và Stream Prioritization

HTTP/2 cho phép tạo nhiều stream trong một kết nối, cho phép xử lý đồng thời các yêu cầu. Client có thể ưu tiên các stream theo nhu cầu.

Nén Header

HTTP/2 sử dụng HPACK để nén các header dư thừa, giúp tối ưu băng thông và tăng tốc độ tải.

Stateful Header CompressionStateful Header Compression

Server Push

Server có thể gửi nhiều phản hồi cho một yêu cầu từ client, tiết kiệm thời gian và băng thông.

Server PushServer Push

Mô Phỏng Tải Hình Ảnh: HTTP/1 vs HTTP/2

Mô phỏng tải hình ảnh với HTTP/1 và HTTP/2Mô phỏng tải hình ảnh với HTTP/1 và HTTP/2

Trong mô phỏng, bạn sẽ thấy rằng các tệp hình ảnh nhỏ trong HTTP/1 được tải tuần tự, trong khi HTTP/2 cho phép tải đồng thời, giúp cải thiện tốc độ đáng kể.

Kết Luận

HTTP/2 đại diện cho một bước tiến quan trọng trong việc cải thiện hiệu suất và hiệu quả truyền tải dữ liệu trên web. Những cải tiến này không chỉ giúp cải thiện trải nghiệm người dùng mà còn nâng cao hiệu suất cho các trang web hiện đại.

Nếu bạn muốn tìm hiểu sâu hơn về các khái niệm liên quan đến web và công nghệ, hãy truy cập comdy.vn để khám phá thêm nhiều bài viết hữu ích khác!

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *