Kích thước tối thiểu của gói TCP là bao nhiêu


11

Một bài đăng ở đây:

http://bloss.adobe.com/dreamweaver/2011/02/optimal-css-tiled-background-image-size.html

staes rằng "Tải xuống nhỏ nhất mà trình duyệt có thể làm là 1K byte."

Đây có phải là do kích thước tối thiểu của một gói trên mạng? Nếu không, lý do cho điều này là gì (nếu nó thực sự đúng)?


2
Bám sát các điều khoản tiêu chuẩn nếu bạn muốn tránh nhầm lẫn. "Gói" là một thuật ngữ cấp IP. Bạn nói "gói IP", cũng không phải "gói TCP", cũng không phải "gói Ethernet".
vtest

Câu bạn trích dẫn ("Tải xuống nhỏ nhất mà trình duyệt có thể làm là 1K byte.") Chắc chắn là không đúng - không có kích thước tải xuống tối thiểu; và trong khi có tối thiểu TCP / IP Kích thước gói (như được giải thích bởi @ DMA57361), nó chắc chắn không phải là 1KB.
Piskvor rời khỏi tòa nhà

Câu trả lời:


20

Packet là một thuật ngữ mơ hồ ở đây vì đôi khi nó bị sử dụng sai để chỉ các yếu tố khác nhau cho việc truyền tải của bạn. Hãy xem dữ liệu của bạn được gói gọn trong đó và bạn sẽ thấy ý tôi là gì và hy vọng nhận được câu trả lời bạn muốn:


Giả sử bạn đang gửi 1 byte dữ liệu 1 qua internet, trên mô hình TCP / IP .

Các dữ liệu bắt đầu vào mức độ ứng dụng và cần phải được bọc trong tiêu đề cho các cấp thấp hơn để nó có thể được thông qua xung quanh.

Đầu tiên, dữ liệu được gói trong Phân đoạn TCP , có thêm tiêu đề 20 byte (kích thước tối thiểu bây giờ là 21 byte).
Điều này đặt chúng ta vào cấp độ vận chuyển.

Điều này sau đó được gói trong Gói IP , thêm một tiêu đề khác là 20 byte (kích thước tối thiểu bây giờ là 41 byte).
Bây giờ chúng tôi đang ở cấp độ internet.
Lưu ý rằng gói này được thay đổi mỗi khi bộ định tuyến mới chuyển dữ liệu của bạn sang mạng con mới.

Điều này được gói trong một khung liên kết của một số loại - trong đó kích thước đầu trang và chân trang khác nhau tùy thuộc vào loại khung được sử dụng, tùy thuộc vào loại liên kết được sử dụng.
Đây là trên cấp độ liên kết.
Gói này được thay đổi mỗi lần đơn vị nếu được truyền giữa hai thực thể.

Cuối cùng là truyền dẫn vật lý (ví dụ, tín hiệu điện xuống cáp, sóng vô tuyến, v.v.).

Dưới đây là một số hình ảnh thông tin có sẵn từ trang mô hình TCP / IP Wikipedia để giải thích trực quan những gì đang xảy ra:


Đóng gói dữ liệu bằng UDP / IP


Kết nối qua các lớp trong mô hình TCP / IP


1. Tôi đoán bạn có thể gửi 0 byte ... nhưng chưa kiểm tra điều đó. Trong thực tế, tôi đã không kiểm tra nếu 1 byte được cho phép, nhưng hey.


4

Điều đó là không chính xác, không có kích thước tối thiểu để tải xuống. Bạn có thể xác minh điều này bằng cách tạo một tệp nhỏ trên máy chủ web của mình và sử dụng wireshark để xem lưu lượng mạng khi bạn tải xuống tệp đó.

Kích thước tối thiểu của gói ethernet tiêu chuẩn là 64 byte.


3

Trên mặt của nó, bài đăng blog bạn đang trích dẫn là không chính xác. Không có "kích thước tải xuống tối thiểu" cho HTTP. (Và lý thuyết của bạn về kích thước gói tối thiểu cũng không chính xác.)

Tuy nhiên, có một hạt của sự thật này. Và đó là nếu kích thước của tệp bạn đang tải xuống đủ nhỏ, thông báo phản hồi HTTP (bao gồm tệp và các tiêu đề phản hồi HTTP) sẽ vừa với một gói mạng. Nếu điều đó xảy ra, trình duyệt có thể nhận được tệp nhanh hơn nếu mất hai hoặc nhiều gói để gửi phản hồi.

(Với một gói trong phản hồi, ít có khả năng một gói sẽ bị hủy và cần phải được gửi lại, và khả năng lớn hơn là cửa sổ kiểm soát luồng TCP / IP sẽ không thêm độ trễ chuyến đi khứ hồi cho việc nhận gói. )

Kích thước tối đa điển hình của gói được gửi / nhận (MTU) là 1500 byte cho ethernet. Khi bạn tính đến các chi phí IP và TCP và kích thước của tiêu đề phản hồi HTTP thông thường, điều đó có thể khiến bạn mất ~ 1K cho dữ liệu tệp trong gói phản hồi đầu tiên. Do đó, hạt của sự thật trong bình luận của các blogger.


Điều đó là chính xác - nếu bạn chỉ tải xuống một hình ảnh đó, và không, giả sử, một trang web và các tài nguyên liên quan của nó (hình ảnh, JS, CSS) - trong trường hợp đó bạn đang sử dụng thủ tục và đường ống cho nhiều tài nguyên, vì vậy TCP chi phí và kích thước gói ít liên quan hơn nhiều. Bạn đúng trong trường hợp cụ thể này (chỉ tải xuống một hình ảnh), nhưng điều đó có thường xuyên xảy ra không? Có vẻ như blogger bị kẹt vào năm 1999, trong đó mỗi yêu cầu HTTP cần kết nối TCP riêng.
Piskvor rời khỏi tòa nhà

2

Nó tệ hơn bạn nghĩ.

Việc tải trang chậm là do trình duyệt gặp sự cố khi hiển thị 1x1 pixel 800000 lần (ví dụ: đối với cửa sổ trình duyệt được đặt thành 1000x800). Nhiều năm trước, có lẽ vào năm 1999, tôi đã đọc một bài báo ở đâu đó quy định 16x16 là 'nhanh nhất' x nhỏ nhất để ốp lát. Tất nhiên, kết xuất có thể khác bây giờ.

Nếu bạn đọc bài viết trên blog, khiếu nại thực sự là về việc tải trang chậm. Không tải chậm. Nó không liên quan gì đến các gói mặc dù đây là một cuộc thảo luận thú vị.

Vì vậy, có lẽ câu hỏi nên được đặt lại.


Trong trường hợp đó, tôi có thể đã hiểu nhầm hoàn toàn bài đăng trên blog - Tôi đã nghĩ rằng cốt lõi nằm trong câu này: "Tải xuống nhỏ nhất mà trình duyệt có thể làm là 1K byte [và do đó, điều chỉnh kích thước hình ảnh của bạn thành 1K]", trong đó Tôi đã đọc là "... vì dù sao bạn cũng đang truyền 1K byte, cho dù hình ảnh của bạn chỉ có 50 byte" (đây là một điều vô nghĩa rõ ràng). Vấn đề ở đây có thể là sử dụng " size" cả về kích thước pixel số byte kết hợp chúng. Giải thích của bạn có ý nghĩa, nhưng không liên quan đến số lượng hình ảnh byte (trái với những gì blog nói).
Piskvor rời khỏi tòa nhà

Sau khi đọc lại bài đăng trên blog, anh ta dường như lảng tránh khóa học vì đoạn thứ ba không mạch lạc.
mockman

Sau khi đọc lại bình luận của bạn ... Quan điểm của anh ấy là giải quyết vấn đề được nêu trong đoạn mở đầu. Tuy nhiên, ông đã nhầm lẫn quy định vấn đề này với kích thước gói và dành phần còn lại của bài viết về nó. Câu trả lời của tôi giải thích lý do tải trang chậm. Như những người khác đã chỉ ra, đặc điểm gói không phải là nguyên nhân.
mockman
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.