LINUX.ORG.RU

Ethernet пакет


0

0

Пишу парсер своего протокола поверх TCP/IP. Для парсинга использую сырые данные выдаваемые tcpdump -w. Т.к. мне нужен только TCP-stream то заголовки Ethernet, IP, TCP я просто считываю без их разбора(обращаю внимание только на IP и TCP header size для корректировки их размера и получения верного смещения на данные). Размер пакета указан в секции pcap формата выдаваемым tcpdump. Ели после считывания заголовков Ethernet, IP и TCP у меня остаются данные считаю их TCP-данными.
Вот на последнем убеждении я и наступил на грабли, я считал что Ethernet имеет размер 14 байт и находится в начале. А тут попался один пакет в котором после TCP заголовка идут 6 байт, Wireshark их относит к Ethernet заголовку, и обзывает как Trailer.

Как определить что в пакете этот Trailer а не TCP данные?



>Пишу парсер своего протокола поверх TCP/IP. Для парсинга использую сырые данные выдаваемые tcpdump -w.
зачем? если пишешь «поверх», почему бы уже не общаться напрямую с нужным тебе протоколом, который будет делать всё за тебя? чем тебя socket так не устроил?

xydo ★★ ()

А можно не разбираться в тонкостях мусора из прошлого с csma, с сразу использовать libpcap.

as33 ★☆☆ ()
Ответ на: комментарий от hizel

Какие в жопу trailer encapsulations? Просто размер ethernet фрейма не может быть меньше 64 байт, соответственно размер payload не может быть < 46 байт. Если размер IP пакета получается меньше, после него придется дописать нулей или вообще любого мусора, это wireshark и показывает как trailer.

slovazap ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.