2

Предполагая, что у меня есть сервер приложений (Linux), работающий на порте 80, как я могу убедиться (с помощью tcpdump, я полагаю), что все входящие запросы разархивированы, а также все ответы разархивированы? Кроме того, поскольку сам сервер выполняет звонки на другой сервер (Windows), как я могу проверить исходящие и входящие пакеты (если они имеют в виду, я имею в виду) на и с этого другого сервера? Спасибо

3 ответа3

4

Один только tcpdump не является отличным способом сделать это, технически вы можете определить ответ, проверив пакеты, но это не лучший сетевой уровень для просмотра. Первая проблема заключается в том, что вам нужно будет работать с переменными заголовками HTTP, вторая проблема заключается в том, что с HTTP/1.1 и постоянными соединениями вы должны проверять каждый ответный пакет или повторно собирать каждый запрос /ответ.

HTTP- запросы очень редко сжимаются. Хотя может быть полезно проверить запросы на наличие или отсутствие "gzip" или "deflate" в заголовке Accept-Encoding: .

Ответы HTTP должны иметь заголовок Content-Encoding: содержащий gzip или deflate когда используется сжатие.

Что следует отметить:

  • из-за большого количества ошибок браузера многие веб-серверы будут иметь список User-Agent по умолчанию, который не будет включать сжатие для
  • вполне вероятно, что по умолчанию существует набор шаблонов файлов /URL или типов содержимого MIME, сжатие PDF-файлов и изображений часто не выполняется
  • небольшие файлы не могут быть сжаты

В Apache одним из способов записи использования сжатия является использование mod_deflate mod_deflate, а затем изменение директив ведения журнала. Обычно я использую по крайней мере следующее в пользовательском LogFormat:

%>s %B %I %O %D %{instream}n/%{outstream}n/%{ratio}n%% %{Content-Type}o

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

Я использовал httpry для просмотра HTTP-запросов, но он не будет работать здесь, потому что ему, к сожалению, не хватает функции для проверки и записи заголовков ответов (он также не собирает пакеты или HTTP-потоки).

Две программы, которые должны предоставить необходимые детали, - это justsniffer и xplico (обратите внимание, хотя я никогда не использовал ни одну из них, так как они немного сложны для компиляции из-за их зависимостей, если вы можете получить бинарные пакеты для своей ОС, тогда у вас все будет в порядке),

2

Вы можете проверить заголовок HTTP-соединения. Если заголовок связывается с полем Content-Encoding: gzip то содержимое распаковывается (см. Также Википедию и HTTP-протокол W3C).

1

Попробуйте использовать ngrep ---

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

см. https://stackoverflow.com/questions/9241391/how-to-capture-all-the-http-packets-using-tcpdump

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