9

Пост здесь:

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

утверждает, что «Наименьшая загрузка, которую могут сделать браузеры, составляет 1 КБ».

Это связано с минимальным размером пакета в сети? Если нет, то какова причина этого (если это действительно так)?

4 ответа4

20

Здесь термин « пакет» является неоднозначным, поскольку иногда он неправильно используется для обозначения различных элементов вашей передачи. Давайте посмотрим, во что обернуты ваши данные, и вы поймете, что я имею в виду, и, надеюсь, получите ответ, который вы хотели:


Предположим, вы отправляете 1 байт данных 1 через Интернет в модели TCP/IP.

Данные запускаются на уровне приложения и должны быть помещены в заголовки для нижних уровней, чтобы их можно было обойти.

Сначала эти данные помещаются в сегмент TCP, который добавляет заголовок из 20 байтов (минимальный размер теперь 21 байт).
Это ставит нас на транспортный уровень.

Затем он оборачивается в IP-пакет, который добавляет еще один заголовок размером 20 байт (минимальный размер теперь составляет 41 байт).
Теперь мы на уровне интернета.
Обратите внимание, что эта упаковка меняется каждый раз, когда новый маршрутизатор пересылает ваши данные в новую подсеть.

Это завернуто в фрейм ссылки некоторого типа - размер заголовка и нижнего колонтитула которого различается в зависимости от типа используемого фрейма, который зависит от типа используемой ссылки.
Это на уровне ссылки.
Эта упаковка изменяется каждый раз, когда блок передается между двумя объектами.

Наконец, физическая передача (например, электрические сигналы по кабелю, радиоволны и т.д.).

Вот некоторые информативные изображения, доступные со страницы модели TCP/IP Википедии, которые помогают визуально объяснить, что происходит:


Инкапсуляция данных с использованием UDP/IP


Соединение через слои в модели TCP/IP


1. Я думаю, вы могли бы отправить 0 байтов ... но не проверяли это. На самом деле я не проверял, разрешен ли 1 байт, но эй.

4

Это неверно, нет минимального размера для загрузки. Вы можете убедиться в этом, создав крошечный файл на своем веб-сервере и используя wireshark, чтобы отслеживать сетевой трафик при загрузке этого файла.

Минимальный размер стандартного пакета Ethernet составляет 64 байта.

3

На первый взгляд, сообщение в блоге, с которого вы цитируете, неверно. Не существует "минимального размера загрузки" для HTTP. (И ваша теория о минимальных размерах пакетов также неверна.)

Однако в этом есть доля правды. Иными словами, если размер загружаемого файла достаточно мал, ответное сообщение HTTP (состоящее из файла и заголовков ответа HTTP) поместится в одном сетевом пакете. Если это произойдет, браузер, скорее всего, получит файл быстрее, чем если бы для отправки ответа потребовалось два или более пакетов.

(С одним пакетом в ответе меньше вероятность того, что пакет будет отброшен и его необходимо отправить повторно, и больше вероятность того, что окно управления потоком TCP/IP не добавит дополнительных задержек приема-передачи для подтверждения пакета.)

Типичный максимальный размер отправляемого / получаемого пакета (MTU) составляет 1500 байтов для Ethernet. Когда вы учитываете накладные расходы IP и TCP и размер типичного заголовка ответа HTTP, это может оставить ~ 1K для файловых данных в первом пакете ответа. Отсюда и доля правды в комментарии блоггера.

1

Это хуже, чем ты думаешь.

Медленная загрузка страницы вызвана тем, что в браузере возникают проблемы при рендеринге пикселя 1x1 800000 раз (например, для окна браузера, установленного на 1000x800). Много лет назад, возможно, в 1999 году, я где-то читал статью, в которой предписывалось, что 16x16 является «самым быстрым» x самым маленьким для листов. Конечно, сейчас рендеринг может быть другим.

Если вы читаете сообщение в блоге, жалоба на самом деле о медленной загрузке страницы. Не медленная загрузка. Это не имеет ничего общего с пакетами, хотя это было интересное обсуждение.

Так что, возможно, вопрос должен быть переформулирован.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .