Эту статью я написал для после того, как наконец понял формат кадра Ethernet (2-ой уровень модели OSI) и разобрался, как маркируется трафик на принадлежность к VLAN.
Напоминаю, что стандарт Ethernet (FastEthernet) технология передачи данны, описанная в стандарте комитета IEEE 802.3. При передачи данных в среде, данные на 2-ом уровне разбиваются на кадры (фреймы) и посылаются в среду передачи. Формат кадра весьма незамысловат:
Строение кадра FastEthernet
- PREAMBLE. Семь байт данных, предназначеных для синхронизации. Каждый байт содержит одну и ту же последовательность: 10101010. Это поле используется для того, чтобы дать возможность схемам трансиверов прийти в устойчивый синхронизм с принимаемыми сигналами. Так же в это поле включается байт SFD (тут не показан) – начального ограничителя кадров, который имеет вид: 10101011. Появление этой комбинации является указанием на предстоящий приём кадра.
- DEST MAC. Аппаратный адрес получателя (Destination).
- SRC MAC. Аппаратный адрес источника (Source).
- TYPE: Тип протокола верхнего уровня. 0x800 – IP, 0x806 – ARP и т.д. Полный список можно увидеть здесь:
- DATA: Собственно данные кадра. Может занимать от 0 до 1500 байт, но если данных меньше 46 байт, то используется специальное поле дополнения, здесь не обозначено. Таким образом считаем, что кадр содержит 46-1546 байт. Поле дополнения служит для эффективного определения коллизий.
- FCS: Контрольная сумма кадра по CRC32. Что такое контрольная сумма – объяснять, надеюсь, не нужно. Вообще оно редко используется, гораздо проще проверять целостность пакетов или фрагментов на протоколах более высокого уровня. Ну для кого это новое, то расскажу, для чего нужна контрольная сумма. При отправке кадра передающая станция вычисляет специальным алгоритмом значение, которое записывается в это поле. В значении учитываются все биты кадра. При получении кадра, принимающая сторона вычисляет это значение снова (без учёта этого поля) и сравнивает со значением в поле. Если они равны, то считается, что кадр получен без ошибок.
Идём дальше. В Cisco Packet Tracer собрал схему с использованием VLAN и Trunk-портов. И захватил один из кадров.
Строение Ethernet кадра инкапсулированного в 802.1Q.
Как мы видим, практически всё осталось неизменным. Та же PREAMBLE, байт SFD, MAC-адреса источника и получателя. А далее – добавилось 4 новых байта. Вот это и есть так называемый тег VLAN. Остальные поля неизменны, и просто немного смещаются. При прохождении трафика через порт, тег просто изымается и работа ведётся на привычном уровне.
Рассмотрю более подробно сам тег VLAN:
Биты | Значение |
1-16 | Tag Protocol Identifier. На схеме это TPID. Для 802.1Q всегда равен 0x810. То есть встретив эти 2 байта можно сделать вывод, что трафик меченый. |
17-19 | Priority. Приоритет трафика. Эти три бита используются стандартом 802.1p для задания приоритета трафика. Это и два следующих поля – TCI. |
20 | Canonical Format Indicator – индикатор канонического формата MAC-адреса. Если бит = 0, – канонический. Если = 1, не канонический. Ну то бишь Token Ring |
21-32 | VLAN Identifier. В этих 12 битах закодирован номер VLAN. Может принимать значение от 0 до 4094. Не все коммутаторы поддерживают такое количество, да и по правде сказать, не всегда такое нужно. В нашем случае это значение равно 0xA, что означает 10-ый VLAN. |
Comments: