2016-04-12 5 views
0

Я заметил, что для передачи однопакетного файла с удаленного FTP-сайта на локальный хост в Linux Wireshark всегда может захватывать пакеты в правильном порядке, но не в tcpdump/libpcap или просто recvfrom на RAW_PACKET с беспорядочным режимом.Разный порядок пакетов в Wireshark vs tcpdump/libpcap?

В первом ответе «полная передача» всегда перед одним пакетом данных (в разных соединениях, поэтому нет переупорядочения TCP), но в последнем случае пакет данных всегда поступает первым - что явно неверно в соответствии с протоколом и реализация FTP-серверов, так как «передача завершена» отправляется после данные отправляются - и если клиент получил ее перед данными, она перестала бы ждать подключения к данным, чего не было, так как я вижу данных. Таким образом, libpcap/tcpdump фактически захватывает пакеты в неправильном порядке, но такой проблемы нет в Wireshark?

Как это возможно ??? Wireshark также использует libpcap ...

+0

Я обнаружил, что если сырые пакеты захватываются «ETH_P_IP» (только IP-пакет), порядок от пакетов из разных соединений будет правильным (как в Wireshark), но не «ETH_P_ALL», который захватывает все! Тем не менее ETH_P_ALL является значением по умолчанию в tcpdump, так что он действительно сломан? – AqD

+0

Оба Wireshark и tcpdump используют libpcap для захвата трафика, а libpcap *** ALWAYS *** использует 'ETH_P_ALL'. –

ответ

1

Для FTP-протокола полезная нагрузка передается в отдельном TCP-соединении, нет обещаний о порядке пакетов в параллельном TCP-соединении (на самом деле нет обещаний в порядке пакетов даже в том же TCP-соединении, ваш хозяин должен их заказать).

  1. У сервера есть два открытых разъема.
  2. записывает файл в гнездо данных
  3. сразу же после этого он записывает «передачу завершен» в управляющие сокеты. Разница между 2 & 3 составляет несколько микросекунд.
  4. Пакеты выполняются через Интернет, они могут выбирать разные пути
  5. Они пришли на вашу машину в случайном порядке.

p.s. Кроме того, файл tcpdump имеет номер пакета и метку времени. Пакеты не обязательно записываются отсортированными по меткам времени. Wireshark может заказывать их при показе, взглянуть на поле заказа.

+0

Временные метки неверны, но порядок просто невозможно - как я показал выше, если реальный порядок, в котором получены пакеты, ошибочен, возникли бы проблемы с FTP-клиентами - так что реальный порядок верен, но порядок, который они 're * capt * is wrong. – AqD

+0

Загрузите tcpdumps где-нибудь и поместите ссылку здесь. –

Смежные вопросы