Який мінімальний розмір пакета TCP


11

Публікація тут:

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

говорить, що "Найменше завантаження, яке можуть зробити браузери, - це 1 К байт".

Це пов'язано з мінімальним розміром пакета по всій мережі? Якщо ні, то яка причина цього (якщо це дійсно так)?


2
Якщо ви хочете уникнути плутанини, дотримуйтесь стандартних умов. "Пакет" - це термін на рівні IP. Ви кажете "IP-пакет", "TCP-пакет", "Ethernet-пакет".
vtest

Речення, яке ви цитуєте ("Найменше завантаження, яке можуть зробити браузери, - 1 К байт."), Звичайно, не відповідає дійсності - мінімальний розмір завантаження не існує; і в той час це мінімум TCP / IP розмір пакета (як пояснено @ DMA57361), це, звичайно , НЕ 1KB.
Пісквор вийшов з будівлі

Відповіді:


20

Пакет тут неоднозначний термін, оскільки його іноді неправомірно посилаються на різні елементи для вашої передачі. Давайте подивимося, у що вкладено ваші дані, і ви побачите, що я маю на увазі, і, сподіваємось, отримаєте потрібну відповідь:


Припустимо, ви надсилаєте 1 байт даних 1 через Інтернет за моделлю TCP / IP .

В даних починається на рівні додатків і повинен бути обгорнутий в заголовках для більш низьких рівнів , так що він може бути переданий навколо.

По-перше, ці дані загортаються в сегмент TCP , який додає заголовок у 20 байт (розмір хв. Зараз 21 байт).
Це ставить нас на транспортний рівень.

Потім він загортається в IP-пакет , який додає ще один заголовок у 20 байт (розмір хв. Зараз 41 байт).
Зараз ми на рівні Інтернету.
Зауважте, що це обгортання змінюється щоразу, коли новий маршрутизатор пересилає ваші дані в нову підмережу.

Це загорнуте у кадр посилання певного типу - розмір заголовка та колонтитула змінюється залежно від типу використовуваного кадру, що залежить від типу використовуваного посилання.
Це на рівні посилань.
Це обгортання змінюється щоразу, коли одиниця передається між двома об'єктами.

Нарешті, це фізична передача (наприклад, електричні сигнали по кабелю, радіохвилі тощо).

Ось деякі інформативні зображення, доступні на сторінці моделі Wikipedia TCP / IP, які візуально пояснюють, що відбувається:


Інкапсуляція даних за допомогою UDP / IP


Підключення через шари в моделі TCP / IP


1. Гадаю, ви могли б надіслати 0 байт ... але не перевіряли цього. Насправді я не перевіряв, чи дозволений 1 байт, але ей.


4

Це неправильно, немає мінімального розміру для завантаження. Ви можете перевірити це, створивши крихітний файл на своєму веб-сервері та за допомогою дроту для перегляду мережевого трафіку під час завантаження цього файлу.

Мінімальний розмір стандартного пакету Ethernet - 64 байти.


3

З іншого боку, публікація блогу, яку ви цитуєте, невірна. Немає "мінімального розміру завантаження" для HTTP. (І ваша теорія щодо мінімальних розмірів пакетів також неправильна.)

Однак у цьому є зерно правди. І це те, що якщо розмір завантажуваного файлу буде досить малим, повідомлення відповіді HTTP (що складається з файлу та заголовків відповідей HTTP) впишеться в єдиний мережевий пакет. Якщо це трапиться, браузер, швидше за все, отримає файл швидше, ніж якщо б надіслати відповідь два або більше пакетів.

(З одним пакетом у відповіді є менше шансів на те, що пакет буде скинутий і його потрібно буде повторити, і більший шанс, що вікно управління потоком TCP / IP не додасть додаткових зворотних затримок для підтвердження пакету. )

Типовий максимальний розмір надісланого / отриманого пакету (MTU) становить 1500 байт для Ethernet. Коли ви враховуєте накладні витрати на IP та TCP та розмір типового заголовка відповіді HTTP, це могло б залишити вас ~ 1 К для файлових даних у першому пакеті відповіді. Звідси зерно правди у коментарі блогера.


Це було б правильно - якби ви завантажували лише одне зображення, а не, скажімо, веб-сторінку та пов’язані з нею ресурси (зображення, JS, CSS) - у такому випадку ви в будь-якому випадку використовуєте кеепаліви та конвеєр для декількох ресурсів, тому TCP накладні витрати та розмір пакету набагато менш актуальні. Ви маєте рацію в цьому конкретному випадку (завантажуючи лише одне зображення), але як часто це відбувається? Здається, що блогер застряг у 1999 році, коли кожному запиту HTTP потрібен власний TCP-зв’язок.
Пісквор вийшов із будівлі

2

Це гірше, ніж ти думаєш.

Повільне завантаження сторінки відбувається через те, що у браузера виникають проблеми з наданням 1x1 пікселя 800000 разів (наприклад, для вікна браузера, встановленого на 1000x800). Багато років тому, можливо, в 1999 році, я десь прочитав статтю, в якій прописано 16х16 як "найшвидший" х найменший для плитки. Звичайно, візуалізація зараз може відрізнятися.

Якщо ви читаєте допис у блозі, скарга насправді стосується повільного завантаження сторінки. Не повільне завантаження. Це не має нічого спільного з пакетами, хоча це було цікавим обговоренням.

Тож, можливо, питання слід переформулювати.


У такому випадку я, можливо, неправильно зрозумів допис у блозі - я вважав, що в цьому реченні є суть: "Найменше завантаження, яке можуть зробити браузери, - це 1 К байт [і, отже, відрегулюйте розмір зображення до 1 К]", який Я читав як "... тому що ви все одно передаєте 1 К байт, незалежно від того, що ваше зображення становить лише 50 байт" (це очевидна дурниця). Проблемою тут може бути використання " size" як для розмірів пікселів, так і для кількості байтів, а також їх конфілірування. Ваше пояснення має сенс, але не має значення для підрахунку байтів зображення (всупереч тому, що говорить блог).
Пісквор вийшов з будівлі

Після повторного читання публікації в блозі він, здається, відхилився від курсу, оскільки третій параграф є невідповідним.
макет

Після повторного читання вашого коментаря ... Його метою є вирішення проблеми, порушеної у вступному параграфі. Однак він помилково приписує цю проблему розмірам пакетів і витрачає на неї решту публікацій. Моя відповідь пояснила причину повільного завантаження сторінки. Як зазначали інші, характеристики пакету не є причиною.
макет
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.