Путаница с фрагментацией пакета

Я играл с dpkt в Python, пытаясь декодировать PPPoE - и программа работала просто отлично, пока не заметил, что смещение в IP-пакетах инкапсуляции всегда было 0, даже с четко фрагментированными пакетами.

Как можно видеть, сервер отправляет 1492-байтовые пакеты (я полагаю, из-за инкапсуляции PPPoE) и последний пакет 1365. Но смещение всегда равно 0 - не должно ли оно увеличиваться?

Конечно, я подозревал, что моя программа, но я проверил ту же передачу с Wireshark и получил тот же результат.

Я неправильно истолковываю это?

2 ответа

Решение

Нет, это не фрагменты. Вы видите 1492-байтовые пакеты с сервера и 40-байтовые пакеты (TCP ACK?) Обратно на сервер. Поскольку они не являются фрагментами, смещение действительно всегда равно 0.

Wireshark покажет вам, являются ли пакеты фрагментами или нет. Если вы покажете более подробную информацию от Wireshark, мы можем предоставить вам больше информации о том, что именно содержится в каждом пакете.

Я бы порекомендовал установить tracepath (не traceroute) и использовать его для проверки MTU на всех переходах. Если вам не нужны фрагментированные пакеты, оставьте значение MTU на сервере ниже минимального значения MTU на пути перехода.

Другие вопросы по тегам