подсчет HTTP-пакетов - PullRequest
       7

подсчет HTTP-пакетов

0 голосов
/ 21 апреля 2011

Какова связь между количеством HTTP-пакетов и количеством объектов на веб-странице?

Ответы [ 2 ]

2 голосов
/ 21 апреля 2011

Какова связь между количеством HTTP-пакетов и количеством объектов на веб-странице?

Краткий ответ: очевидно, что существует определенная связь, но нет способа точно предсказать одно из другого.

Для более длинного ответа нам сначала нужно исправить некоторые неправильные представления в вопросе:

  • Не существует такого понятия, как «HTTP-пакет». HTTP - это протокол приложения, ориентированный на сообщения с одним сообщением-запросом и одним ответным сообщением на каждый «ресурс» Он расположен поверх надежного протокола потока байтов (с управлением потоком и т. Д.), Который называется TCP. Это в свою очередь находится поверх протокола коммутации пакетов, называемого IP. Обмен HTTP-запросом / ответом принимает непредсказуемое количество IP-пакетов ... в зависимости от размера сообщения и состояния сети. Другие функции HTTP, такие как сжатие, поддержка соединений, кэширование и т. Д., Еще более усложняют ситуацию.

  • Идея «объекта» плохо определена. «Объект» может иметь взаимно-однозначное соответствие между парами HTTP-запросов / ответов (то есть «ресурс» выше), тогда эта часть проста. OTOH, «ресурс» может представлять собой рендеринг нескольких «объектов» в домене приложения веб-сервера.

  • Кроме того, вы также должны учитывать тот факт, что типичный HTML-ресурс имеет ссылки на другие ресурсы (скрипты, CSS, изображения и т. Д.) И может даже включать обратные вызовы Ajax. Каждый из них является «ресурсом», который может быть, а может и не нуждаться в извлечении ... в зависимости от кэширования и т. Д.

  • Наконец, существует неявное предположение, что все «объекты» имеют одинаковый размер. Это может быть правдой в некоторых доменах приложений, но в целом это не так.

Итак, подведем итог: существует много переменных и неизвестных, чтобы можно было предсказать количество сетевых пакетов, необходимых для извлечения определенного количества "объектов".

Более практичный подход - подключить сетевой анализатор уровня пакетов к вашей сети и заставить его подсчитывать количество отправленных и полученных пакетов.


Если вы сделаете следующие предположения:

  • «HTTP-пакеты» - это HTTP-сообщения,
  • «объекты» - это ресурсы,
  • ресурс не требует других ресурсов (скрипты, CSS, изображения и т. Д.) Для визуализации,
  • нет кэширования,
  • сервер не выполняет перенаправления.

тогда один «объект» требует два «HTTP-пакета».

Но, честно говоря, вы упростили проблему до такой степени, что ответ практически бесполезен для прогнозирования реальной производительности реальных веб-серверов. (Например, любой из этих «объектов» может быть крошечным ... или огромным. А если вы разрешите произвольный JavaScript или контент, такой как ссылки на видеопотоки, то количество «пакетов» того или иного вида будет потенциально неограничен.)

2 голосов
/ 21 апреля 2011

GET-запрос выдается для каждого файла, указанного на странице HTML, каждый из которых, как правило, помещается в один сегмент потока TCP.HTTP является конечным автоматом, поэтому в одном запросе / ответе может быть передано много запросов / ответов.

Количество пакетов, отправляемых в ответ, зависит от размера объектов и параметров кэширования.Например, если файл уже находится в кэше браузера, он получит условное получение и получит код ответа HTTP / 1.1 304 Not Modified, который не содержит никаких данных.Более того, многие HTTP / 1.1 304 могут быть выпущены в одном сегменте, так как этот ответ очень мал по сравнению с максимальным размером сегментов.Другой пример: если файл больше максимального размера сегмента, файл может (и, вероятно, будет) разделен на множество сегментов.

Это то, что вы хотите знать?

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