В таком случае получаем следующее: 01-00-0C-CC-CC-CD MAC1 00-1D-A1-4C-8E-11 MAC2 81-00 ETHERNET TYPE E0-02 VLAN INFO 00-32 ? TYPE/LEN AA-AA-03 SNAP_DATA 00-00-0C VENDOR OUI (CISCO) 01-0B VENDOR_DATA 00-00-00-... По идее должен быть "настоящий интернет-тип" Но типа 00 не существует
WIRESHARK. Я как раз до него дошел . У дзенствующих мысли сходятся XD. А то WINDUMP молча сказал OUI Unknown и заткнулся
В общем я понял что я полный нуб в сетевых протоколах, а думал что Бог ггг... Пошел читать спецификации. Видимо надолго
Какой? Тот что дал WireShark? Или 16-ричный? Если 16-ричный, то я его уже выкладывал. А Wireshark сказал вот чего: - Изначально было все просто - Два мак-адреса и тип (или размер, если <1500 с чем то байт): 01-00-0C-CC-CC-CD Это мак-адрес 1 00-1D-A1-4C-8E-11 Это мак-адрес 2 81-00 Тип пакета. Это специальный тип для обработки VLANов Так как это специальный тип, у него есть свои "специальные" данные: E0-02 Это номер VLANа и приоритет Но! Какой бы там специальный тип ни был, мы же все-таки тип пакета должны узнать. Так что дальше снова "тип". Но так как <1500 байт - не тип, а длина 00-32 Это длина пакета (50 байт) А как же тип? Нам ведь он все-таки нужен. Тогда вступает в действие протокол SNAP. У него 3 байта - сервис отправителя, сервис получателя и еще какой-то (не разобрался) AA-AA-03 Отправитель/получатель AA А что означает отправитель и получатель AA? А это значит что у IEEE очень быстро кончились все варианты для сервисов отправителя и получателя от 00 до FF, и чтобы выкрутиться, она ввела специальный сервис отправителей/получателей AA. Если мы его встречаем, мы обрабатываем его "специальным образом" (Между делом - еще есть E0-E0: IPX, F0-F0: NetBIOS и 42-42: CISCO STP) Тогда у нас идет три байта на производителя (специальная таблица OUI). Там под 00-00-0C записан CISCO. 00-00-0C VENDOR OUI (CISCO) А дальше два байта под номер протокола. Причем не абы какого, а именно протокола фирмы CISCO. Если там будет 0800, то это протокол CISCO 0800, а не просто протокол. 01-0B Это номер протокола CISCO STP (Spanning Tree Protocol) И собственно все. Дальше идет STP, а его я не разбирал
Почитал я эту тему, и понял, что не понял - почему в кадрах Ethernet II не нужен размер? Как тогда адаптер узнает конец кадра? В стандарте написано что конец кадра (EFD) можно не посылать. Я думал, что размер кадра нужно знать, чтобы определить расположение в буфере контрольной суммы. Или адаптер все-таки как-то узнает размер кадра канального уровня, потом читает посл. 4 и так узнает размер переданных данных? Использую Wireshark с граф. интерфейсом. В отчете показан размер каждого кадра в дампе, начиная от MAC-адреса назначения и заканчивая посл. байтом данных (CRC в дампе отсутствует).
AndreyMust19 В вашем случае размер кадра вычисляет сама программа. На физическом уровне кадры отделяются преамбулой (Preamble), которую сетевуха убирает при чтении кадра из среды передачи. Читайте стандарт до конца.
Вот я и хочу узнать - как вычисляет программа. Откуда она его узнает. Но там между кадрами надо еще 9,6 мс подождать.