реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Служебные поля Ethernet-пакета, Нужно ли их заполнять?
b-volkov
сообщение Mar 13 2018, 11:35
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 137
Регистрация: 10-04-07
Из: г. Троицк
Пользователь №: 26 907



В зависимости от стандарта Ethernet, в его пакете кроме полей адреса присутствуют различные служебные поля:Type/Length, DSAP, SSAP, CONTROL, SNAP. Я планирую использовать "чистый" ethernet, и мне эти поля без надобности. Могу ли я использовать их в своих целях или там должны быть записаны определенные цифры? Не будут ли пакеты с некорректными значениями полей восприниматься каким-либо сетевым оборудованием как плохие и сбрасываться?
Go to the top of the page
 
+Quote Post
prig
сообщение Mar 13 2018, 15:49
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 852
Регистрация: 30-01-08
Из: СПб
Пользователь №: 34 595



Что означает использовать "чистый" ethernet?

Любое сетевое оборудование(устаревшее не в счёт) должно использовать эти поля для парсинга ethernet фреймов.
Т.е., от значения одних полей будет зависеть наличие/положение других полей и размер фрейма.

Ну а если у Вас будет не так, значит Вы будете использовать нестандартный формат фрейма, который стороннее оборудование просто не поймёт.
Т.е., ни разу не "чистый" ethernet.

Go to the top of the page
 
+Quote Post
b-volkov
сообщение Mar 14 2018, 08:30
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 137
Регистрация: 10-04-07
Из: г. Троицк
Пользователь №: 26 907



Цитата(prig @ Mar 13 2018, 18:49) *
Что означает использовать "чистый" ethernet?

Это означает, что я не планирую использовать поверх Ethernet каких-либо стандартных протоколов типа TCP,UDP и т.д. Компьютер передает Ethernet-пакет, устройство (мое же) его принимает. И наоборот.
Сейчас комп и устройство соединены через LAN-порты роутера DIR-300. Пакеты нормально передаются независимо от значения полей, но вот Wireshark при определенных цифрах в поле type/length помечает кадры как некорректные. А я как раз планировал это поле использовать именно как длину.
Цитата
Ну а если у Вас будет не так, значит Вы будете использовать нестандартный формат фрейма, который стороннее оборудование просто не поймёт.

Хотелось бы сразу уточнить,я в своем посте под сетевым оборудованием подразумевал коммуникационные устройства: хабы, роутеры, свичи. Если проблемы с этим оборудованием возможны, тогда скажите мне, чайнику, как в моем случае правильно заполнить эти поля?
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Mar 14 2018, 09:49
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

Цитата(b-volkov @ Mar 14 2018, 11:30) *
Это означает, что я не планирую использовать поверх Ethernet каких-либо стандартных протоколов типа TCP,UDP и т.д. Компьютер передает Ethernet-пакет, устройство (мое же) его принимает. И наоборот.
Сейчас комп и устройство соединены через LAN-порты роутера DIR-300. Пакеты нормально передаются независимо от значения полей, но вот Wireshark при определенных цифрах в поле type/length помечает кадры как некорректные. А я как раз планировал это поле использовать именно как длину.

Хотелось бы сразу уточнить,я в своем посте под сетевым оборудованием подразумевал коммуникационные устройства: хабы, роутеры, свичи. Если проблемы с этим оборудованием возможны, тогда скажите мне, чайнику, как в моем случае правильно заполнить эти поля?

Вообще то чистый Ethernet это первые 14 байт (естественно без VLAN) - как раз dst, src адреса и 16 bit type.
Значение в этом поле кодирует либо длину данных и она должна быть в диавазоне 0x0000-0x05DC.
Либо тип последующего заголовка - и при этом длинна пакета будет определятся в зависимости от этого типа.

Естественно если Вы в type что то записали > 0x05DC то Wireshark пытается распарсить все что после type в соответствии со стандартным значением в этом поле.
Если Вы хотите гонять такой траффик через стандартные устройства то что бы не было проблем придется следовать канонам сетевой религии - а иначе результат не гарантирован.

Ну а если и так сойдет то для Wireshark можно создать свой шаблон для парсинга чтобы он не ругался на такое святотатство.

Удачи! Rob.
Go to the top of the page
 
+Quote Post
b-volkov
сообщение Mar 14 2018, 13:21
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 137
Регистрация: 10-04-07
Из: г. Троицк
Пользователь №: 26 907



Цитата(RobFPGA @ Mar 14 2018, 12:49) *
Вообще то чистый Ethernet это первые 14 байт (естественно без VLAN) - как раз dst, src адреса и 16 bit type.
Значение в этом поле кодирует либо длину данных и она должна быть в диавазоне 0x0000-0x05DC.
Либо тип последующего заголовка - и при этом длинна пакета будет определятся в зависимости от этого типа.

Мне тогда непонятно вот что: а как определяется, как интерпретировать поле type/length, как тип или как длину?
Я использую его как длину и, естественно, число там не превышает 0x05DC. Тем не менее, Wireshark реагирует на число в этом поле непонятым для меня образом. Внизу приведены скриншоты Wireshark при передаче/приеме трех пакетов, у которых в поле type/length находятся числа 255,256 и 257.
Пакеты передаются в мой девайс, который возвращает их обратно в РС.
Прикрепленное изображение

Пакет воспринимается как Eternet II, поле type/length как тип, сразу за этим полем идут собственно данные.
Прикрепленное изображение

Пакет воспринимается как IEEE 802.3 но почему-то некорректная CRC. Хотя этот пакет нормально воспринимается получателем.
Прикрепленное изображение

Пакет воспринимается как IEEE 802.3, поле type/length - как длина, следующие четыре байта - как служебные
Практически одинаковые пакеты, а какая разница!

Собственно говоря, мне без разницы, как мои пакеты интерпретирует Wireshark. Главное, что бы их понимали чужие железки.
По сему вопрос: если я укажу в поле type/length правильную длину (0x0000-0x05DC) и, бог с ним, не буду использовать следующие за ней 4 байта, а заполню их нулями, то можно ли быть уверенным, что такой пакет будет считаться корректным?

Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Mar 14 2018, 13:41
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

Для начала Вам было бы неплохо знать что формат ВСЕХ переменных в полях заголовков big-endian (старший байт первым)
Поэтому то что Вам кажется как 0x00FF Wireshark воспринимает как 0xFF00 (и чем он Вам честно сообщает).
Отсюда и все остальное wacko.gif

Надо бы хоть чуть чуть почитать псалмы о формате сетевых пакетов.

Удачи! Rob.



Go to the top of the page
 
+Quote Post
prig
сообщение Mar 15 2018, 12:17
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 852
Регистрация: 30-01-08
Из: СПб
Пользователь №: 34 595



Цитата(RobFPGA @ Mar 14 2018, 12:49) *
Приветствую!


Вообще то чистый Ethernet это первые 14 байт (естественно без VLAN) - как раз dst, src адреса и 16 bit type.
...


Строго говоря, "чистый Ethernet" - это 802.3

А так, да. При том, что 802.3 определяет кучу полей фрейма, для доступа к среде ему только этот минимум и нужен.
До остальных полей ему фиолетово. Впрочем, и Ethertype прислонился к собственно 802.3 слегка боком.

Но вот как только появляется коммутация, всплывают прочие разделы 802 и хренова туча других стандартов.
При этом, без Ethertype обойтись иногда можно, но бывает и сложно (например, при использовании семейства протоколов STP и т.п.).
И это только на уровне простейшей коммутации. А дальше - больше. Из серии "чем дальше в лес, тем толще партизаны".

Так что, затею ТС трудно назвать удачной.

Цитата(b-volkov @ Mar 14 2018, 11:30) *
Это означает, что я не планирую использовать поверх Ethernet каких-либо стандартных протоколов типа TCP,UDP и т.д....
...
Сейчас комп и устройство соединены через LAN-порты роутера DIR-300. Пакеты нормально передаются независимо от значения полей,...


- Дык, даже на канальном уровне используется куча протоколов.
Т.е., на произвольном значении поля type/length можно срубиться на раз ещё до L3/L4.

- Похоже, что это просто очень тупой роутер. Как вариант - просто отключены кое-какие фичи.
Go to the top of the page
 
+Quote Post
b-volkov
сообщение Mar 19 2018, 05:42
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 137
Регистрация: 10-04-07
Из: г. Троицк
Пользователь №: 26 907



Цитата(RobFPGA @ Mar 14 2018, 16:41) *
Для начала Вам было бы неплохо знать что формат ВСЕХ переменных в полях заголовков big-endian (старший байт первым)

Да, мой косяк. Спасибо за разъяснение! Великая сила привычки, я полагал, что кроме little-endian других вариантов и не бывает sm.gif. Буду пробовать...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th June 2018 - 09:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01044 секунд с 7
ELECTRONIX ©2004-2016