У меня есть работающее приложение, которое необходимо было правильно выполнить как на моей локальной платформе, так и на Ubuntu 18.4, и перекомпилировать, запустить на платформе FreeBSD.
Я столкнулся с проблемой с пакетами, поскольку заголовок Ethernet былНа платформе FreeBSD на 10 байт
Я учел разницу в программном обеспечении после получения пакета, посмотрев в пакет данные из заголовка ICMP, который всегда присутствует в моих данных.Зная смещение этих данных, вы узнаете решение о размере заголовка.
Как только я узнаю размер заголовка Ethernet, я его убираю, и то, что остается единообразным для всех устройств.
НоЯ прослушан, что есть разница, которую я не могу понять.Может кто-нибудь указать мне документацию, описывающую причину, по которой разница составляет 4 или 14 байтов?
Я исследовал сеть в поисках объяснения, но не нашел ничего, что могло бы оправдать разницу.Даже FreeBSD 'Ethernet.h' показывает 14 байтов.
#define ETHER_HDR_LEN (ETHER_ADDR_LEN*2 + ETHER_TYPE_LEN) where that is (6*2)+2 equals 14