Добрый день.
Помогите, пожалуйста.
Моя програмка ( «сниффер», «сырой сокет» на C, C++ Linux Ubuntu ) считывает пакеты из LAN.
Другой комп. в сети посылает пакеты по протоколу IEC61850 Sampled Values.
Пакеты посылаются или через такой же сокет ( «содрал» с Pcap'а ) или с помощью libPcap с частотой 4000 пакетов в секунду.
Байты ( 0х81, 0х00, 0х80, 0х00 - 802.1Q Virtual Lan ) изначально содержаться в пакете ( пакет посылается «как есть» ) и идут сразу после 2-го MAC-адреса.
Так вот, если комп. с программой «сниффера» подключен к сети через Hub, то в 99% пакетов читаются с 4-мя указанными байтами, и имеют длинну 146 байт, а менее 1% пакетов приходят без этих 4-х байт и имеют длинну 142.
Если же я вместо Hub'а ставлю свой домашний роутер ( ASUS WL-520GU ), то ВСЕ пакеты приходят БЕЗ этих 4-х байт и имеют длинну 142.
Я вставил в пакеты сквозную нумерацию, и у меня есть уверенность, что по крайней мере через роутер приходят ВСЕ пакеты по порядку.
Помогите, пожалуйста, разобраться - куда могут деваться эти 4 байта, когда я принимаю пакеты через Hub ?
Какое устройство в ОФИСНОЙ сети ( сетевые платы, Hub'ы или еще что-то ) может «укорачивать» 1% пакетов на 4 байта ?
Или же «виновата» моя программа приема ? Или дело еще и в драйверах ?
Спасибо.
Прохоров Юрий.