Có HTTP như một giao thức bao gồm bất kỳ cơ chế để đảm bảo thông tin?


0

Tôi đã hỏi câu hỏi này trên networkengineering.stackexchange, mà không nhận ra rằng bất kỳ giao thức nào trên đầu TCP đều lạc đề (tức là chỉ có các lớp OSI 4 và thấp hơn là có chủ đề ở đó).

Câu hỏi là đây:

Vì HTTP được triển khai trên TCP và TCP không bị mất, nên   HTTP bao gồm bất kỳ loại thông tin cho lắp ráp gói?

Tôi tưởng tượng rằng một khi yêu cầu HTTP hoàn thành, bạn có thể chỉ cần   giả sử rằng thông tin HTTP đã hoàn tất (vì toàn bộ   chuỗi các gói TCP được sử dụng để vận chuyển HTTP được đảm bảo   đặt hàng và hoàn thành).

Giả định này có đúng không?

Một tìm kiếm nhanh trên google cho tôi thấy rằng lớp 4 OSI xử lý cụ thể các kết nối đầu cuối và độ tin cậy, điều này khiến tôi hiểu rằng các gói HTTP KHÔNG yêu cầu bất kỳ phương tiện nào để kiểm tra tính toàn vẹn khi chúng được lắp ráp lại. tức là vào cuối quá trình truyền mạng, gói HTTP sẽ được lắp ráp đầy đủ và chính xác nếu phiên TCP hoàn thành không có lỗi.

Điều này có đúng không?

Câu trả lời:


3

Có, HTTP / 1.x không bao gồm bất kỳ cơ chế sắp xếp lại / phân phối lại gói tin nào. Nó hy vọng lớp vận chuyển (thường là TCP hoặc QUIC) sẽ cung cấp nó, như đã thấy trong RFC 7230, phần 6 :

6. Quản lý kết nối

Tin nhắn HTTP độc lập với truyền tải cơ bản- hoặc   giao thức kết nối lớp phiên (s). HTTP chỉ có nghĩa là đáng tin cậy   vận chuyển với việc cung cấp các yêu cầu theo thứ tự và tương ứng   theo thứ tự trả lời.


Điều đó nói rằng, HTTP / 1.x làm bao gồm các cơ chế tùy chọn để xác định khi có phản hồi hoàn thành . Điều này là cần thiết vì HTTP / 1.x hỗ trợ tái sử dụng kết nối và cùng một kết nối TCP bên dưới có thể được sử dụng cho nhiều cặp yêu cầu / phản hồi. (Và tất nhiên TCP không có khái niệm về các thông điệp riêng biệt.)

Các khách hàng sử dụng "Kết nối: đóng" (mặc định trong HTTP / 1.0) có thể chỉ cần giả định rằng kết nối TCP được đóng hoàn toàn biểu thị kết thúc phản hồi. Tuy nhiên, các máy khách sử dụng "Kết nối: giữ nguyên" (mặc định trong HTTP / 1.1) mong muốn phản hồi có một trong hai

  1. tiêu đề "Độ dài nội dung:" nếu độ dài phản hồi là xác định và được biết đến, hoặc
  2. một đoạn có độ dài bằng không nếu phản hồi có độ dài không xác định và sử dụng "Mã hóa chuyển: chunked".

Điều tương tự vẫn đúng với HTTP / 2 trên TCP và thậm chí HTTP qua QUIC.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.