Канальный уровень сети Ethernet
Пакет данных сети Ethenet педедает кадр Ethernet.
Размер кадра Ethernet измеряется октетами – блоками по 8 бит. Октеты называются октетами во имя однозначности – “байт” не всегда стандартизован, и в общем случае может быть больше или меньше 8 бит.
Кадр состоит из
- Преамбулы – 7 октетов
- Маркера начала кадра – 1 октет
- Целевой MAC-адрес – 6 октетов
- MAC-адрес источника – 6 октетов
- Тег 802.1Q – 4 октета (опционально)
- Длина (IEEE 802.3) или Ethertype (Ethernet II) – 2 октета
- Содержимое пакета – 46-1500 октетов
- Контрольная сумма (32-битная CRC)
- Межпакетный промежуток – 12 октетов
Первые два пункта моделью OSI относятся к первому (физическому) уровню, остальные – к канальному. Остановимся подробнее на каждом из них.
Октеты пересылаются с младшего бита.
Шестнадцатиричное представление преамбулы и маркера начала кадра имеют вид:
55 55 55 55 55 55 55 D5
Или в двоичном коде (в порядке пересылки по проводу):
10101010 10101010 10101010 10101010 10101010 10101010 10101010 10101011
MAC-адрес представляет собой “железный” адрес сетевого устройства. Свитчи не имеют MAC-адресов, ими обладают только конечные узлы. MAC расшифровывается как media access control. Первые три октета уникальны к организации, i.e. производителю сетевого устройства. Последние три – серийный номер самого устройства.
Тег IEEE802.1Q содержит информацию о виртуальной сети (VLAN) и приоритет пакета.
Шестое поле содержит длину или тип данных, содержащихся в пакете. Если значение двух октетов меньше 1500, то это длина, если не меньше 1536 – тип данных. Во втором случае, конец пакета устанавливается по межпакетному промежутку.
Содержимое пакета – это соответственно некие данные.
Контрольная сумма считается таким образом, что при расчете контрольной суммы по всему содержимому пакета включая контрольную сумму, всегда получается “волшебное число”. В случае IEEE802.x это число 0xC704DD7B.
Межпакетный промежуток состоит из нулей и служит для того, чтобы принимающая сторона могла подготовиться к приему следующего пакета.
Сейчас наиболее распространен Ethernet v2. Типичные значения EtherType:
- 0x0800 – IPv4
- 0x0806 – ARP
- 0x86DD – IPv6