Форматы кадров технологии Ethernet. Всё, что вы хотели знать о Ethernet фреймах, но боялись спросить, и не зря

Несоответствие форматов кадров Ethernet

Ethernet - одна из самых старых технологий локальных сетей, имеющая длительную историю развития, в которую внесли свой вклад различные компании и организации. В результате этого существует несколько модификаций даже такого основополагающего строительного блока протокола, как формат кадра. Использование различных форматов кадров может привести к полному отсутствию взаимодействия между узлами.

Всего имеется четыре популярных стандарта формата кадра Ethernet:

Кадр Ethernet DIX (или кадр Ethernet II);

Кадр стандарта 802.3(или кадр Novell 802.2);

Кадр Novell 802.3 (или кадр Raw 802.3);

Кадр Ethernet SNAP.

Кадр стандарта EthernetDIX , называемый также кадром EthernetII, разработан компаниями Digital, Xerox и Intel (первые буквы названия компаний и дали название этому варианту Ethernet) при создании первых сетей Ethernet. Всего было выпущено две версии фирменного стандарта Ethernet, поэтому последняя, вторая версия этого стандарта также иногда указывается при обозначении варианта протокола Ethernet и соответственно его формата кадра. Часто в литературе именно этот вариант формата кадра называют кадром Ethernet, оставляя для международного стандарта технологии EthernetIEEE 802.3 обозначение 802.3.

Кадр стандарта EthernetDIX имеет следующий формат:

Поля Destination и Source содержат 6-ти байтные МАС-адреса узла назначения и источника, а поле Type - двухбайтный идентификатор протокола верхнего уровня, который поместил свои данные в поле данных Data. Для поля Type существуют стандартные значения числовых идентификаторов для всех популярных протоколов, используемых в локальных сетях. Например, протокол IP имеет числовой идентификатор 0800 и т.п. Эти значения можно найти в постоянно обновляемом RFC (например, в RFC 1700), в котором указаны все конкретные числовые значения, применяемые в протоколах сети Internet.

В стандарте IEEEEthernet 802.3 определен формат кадра Ethernet, близкий к формату EthernetDIX, но имеющий некоторые отличия:

Одно из принципиальных отличий заключается в том, что вместо поля Type в нем используется поле Length (Длина), также имеющее размер в 2 байта, но содержащее длину поля данных в байтах.

Поле Type в стандарте 802.3 заменено двумя дополнительными полями - DSAP (Destination Service Access Point) и SSAP (Source Service Access Point). Поле DSAP указывает сервис (протокол), которому предназначаются данные, а поле SSAP обозначают сервис (протокол), который отправил эти данные. Назначение этих полей то же, что и поля Type, но наличие двух полей позволяет организовать передачу данных между протоколами разного типа (правда, на практике это свойство никогда не используется). Однобайтовый формат полей SAP не позволил использовать в них те же числовые обозначения идентификаторов протоколов, которые прижились для кадров EthernetDIX, поэтому каждый протокол верхнего уровня имеет сейчас два идентификатора - один используется при инкапсуляции пакета протокола в кадр EthernetDIX, а второй - при инкапсуляции в кадр Ethernet 802.3.

Еще одним отличием кадра IEEE 802.3 является однобайтовое поле Control (Управление), которое предназначено для реализации режима работы с установлением соединения. В поле Control должны помещаться номера кадров квитанций подтверждения доставки данных, необходимые для отработки процедур восстановления утерянных или искаженных кадров. На практике большинство операционных систем не использует этих возможностей кадра 802.3, ограничиваясь работой в дейтаграммном режиме (при этом значение поля Control всегда равно 03).

Так как стандарт IEEE делит канальный уровень на два подуровня - MAC и LLC, то иногда кадр Ethernet 802.3 также представляют как композиции двух кадров. Кадр МАС-уровня включает поля преамбулы, адресов назначения и источника, поле длины и поле контрольной суммы, а кадр LLC содержит поля DSAP, SSAP, Control и поле данных (которое из-за введения новых трех однобайтовых полей имеет максимальную длину на 3 байта меньше).

Кадр Novell 802.3, который также называют кадром Raw 802.3 (то есть «грубый» или «очищенный» вариант стандарта 802.3) представляет собой кадр МАС-уровня без полей уровня LLC:

Этот тип кадра длительное время успешно применялся компанией Novell в ее сетях NetWare. Отсутствие поля типа протокола верхнего уровня не создавало трудностей, так как в сетях Novell долгое время использовался только один протокол сетевого уровня - протокол IPX. В дальнейшем при переходе к многопротокольным сетям компания Novell стала использовать в качестве основного стандартный кадр IEEE 802.3 (который в документации Novell называется кадром 802.2 - номер стандарта на подуровень LLC).

Кадр EthernetSNAP (SubNetworkAccessProtocol) активно используется в сетях TCP/IP для достижения совместимости числовых идентификаторов протоколов с теми, которые используются в кадре EthernetDIX. Кадр EthernetSNAP определен в стандарте 802.2H и представляет собой расширение кадра IEEE 802.3 путем введения двух дополнительных полей: 3-х байтового поля OUI (OrganizationUnitIdentifier) и двухбайтового поля Type. Поле Type имеет тот же формат и то же назначение, что и поле Type кадра EthernetDIX. Поэтому числовые значения идентификаторов протоколов, помещаемые в это поле кадра EthernetSNAP, совпадают со значениями, используемыми в кадрах EthernetDIX, и в этом весь смысл введения дополнительных полей заголовка SNAP. В поле OUI указывается код организации, которая определяет стандартные значения для поля Type. Для протокола Ethernet такой организацией является комитет IEEE 802.3, и его код равен 00 00 00. Наличие поля OUI позволяет использовать заголовок SNAP не только для протокола Ethernet, но и для других протоколов, которые контролируются другими организациями.



Если оборудование или операционная система настроены на поддержку какого-то одного формата кадра Ethernet, то они могут не найти взаимопонимания с другим узлом, который в свою очередь поддерживает также один формат кадра Ethernet, но другого типа. Результатом попыток взаимодействия таких узлов будет отбрасывание поступающих кадров, так как неверная интерпретация формата приведет к неверной контрольной сумме кадра.

Многие современные операционные системы и коммуникационное оборудование умеют одновременно работать с различными типами кадров, распознавая их автоматически. Распознавание идет по значению 2-х байтового поля, расположенного за адресом источника. Это поле может быть полем Type или Length. Числовые идентификаторы протоколов выбраны так, что значение поля Type будет всегда больше 1500, в то время как поле Length всегда содержит значение меньше или равное 1500. Дальнейшее отделение кадров EthernetSNAP от IEEE 802.3 проводится на основании значения полей DSAP и SSAP. Если присутствует заголовок SNAP, то поля DSAP и SSAP всегда содержат вполне определенный числовой идентификатор, зарезервированный за протоколом SNAP.

Автоматическое распознавание типа кадра избавляет пользователей сети от неприятных проблем, однако та же ОС или маршрутизатор могут быть настроены на поддержку только одного типа протоколов, и в этом случае проблема несовместимости может проявляться.

Сетевые анализаторы и средства мониторинга умеют автоматически различать форматы кадров Ethernet. Для задания условий захвата кадров, содержащих пакеты определенных протоколов верхнего уровня, анализаторы позволяют пользоваться как числовыми идентификаторами этих протоколов для полей SAP (DSAP и SSAP), так и числовыми идентификаторами для поля Type (имеющим также название EtherType).

В сетях TokenRing и FDDI всегда используются кадры стандартного формата, поэтому в этих сетях не возникают проблемы, связанные с несовместимостью форматов кадров.

.
Сегодня постараемся разобраться в Ethernet кадре .

В сетевых технологиях, различают такие понятия как фрейм (frame ) и пакет packet . Новички сетевых технологий, часто делают ошибки в использовании этих терминов и считают что эти термины являются синонимами, но это не так.

Давайте определимся, что же называют фреймами, а что называют пакетами.

Фреймами называют некоторое число байт, которые содержат в себе заголовк Layer 2 OSI и концевик, вместе с инкапсулированными данными (в инкапсулированных данных обычно содержатся так же другие заголовки, других уровней).

Пакетами в свою очередь часто описывают Layer 3 заголовок вместе с данными. (так же инкапсулированы могут быть заголовки вышестоящих уровней), но уже без заголовка Layer 2 и концевика (trailer).

Используя знания, полученные в предыдущих статьях, мы знаем, что hub это устройство первого уровня (то есть устройство не знает ни о какой информации, оно не знает о Layer 2 заголовках, и тем более уж о Layer 3).
Но, в то же время, обычно это Layer 2 устройство (то есть оно понимает заголовок Layer 2 Header) и исходя из этого может делать некоторые действия (например брать MAC адрес получателя, искать к какому порту этот MAC-адрес привязан и отправлять фрейм только туда и никуда больше). Так же существуют и Layer 3 коммутаторы.

Итак, спецификация .

Давайте поговорим о ней. Какие они были, какие они сейчас.

Первым основателем Ethernet спецификации стала такая компания как DIX , на самом деле это группа компаний: Digital Equipment Corp, Intel , Xerox.
В начале 1980х годов, IEEE стандартизировала технологию Ethernet. Эта технология разделялась на две части:

  1. 802.3 Media Access Control (MAC)
  2. 802.2 Logical Link Control (LLC)

Существует несколько версий Ethernet фрейма, давайте рассмотрим их.

Теперь разберем поля поподробнее.

  1. Preamble — преамбула, существует во всех версиях Ethernet кадра. Но есть некоторые отличия.Эти отличия есть между DIX версией и остальными. В DIX версии, это поле занимало 8 байт.
    Вообще, что такое преамбула вообще? Это некая совокупность 0 и 1, которая используется для синхронизации. То есть говорит ресиверу, что будет принят ethernet кадр.

    В DIX преамбула была 8 байт, семь первых байтов содержало последовательность 10101010 и так семь раз (7 байт), последний 8-ой байт выглядел так: 10101011.
    В 802.3 преамбула стала 7 байт, которые так содержало последовательность 10101010 (7 раз, 7 байт) и было добавлено еще одно поле, которое назвали SD (Start of Frame Delimiter), что означает: начало ethernet кадра.
    Собственно тоже самое что и в DIX реализации, только выделено дополнительное поле. Вместо одного как в DIX’е.

  2. Destination address — адрес получателя. MAC адрес. — 6 байт.
  3. Source address — адрес отправителя. MAC адрес. — 6 байт.
  4. Length — длина фрейма. Это поле указывает на размер фрейма целиком, для того, чтоб получатель мог «предсказать» окончание пакета. Размер поля 2 байта.
  5. Data — непосредственно сами данные, их размер может варьироваться от 46 до 1500 байт.
  6. FCS — проверка целостности фрейма.Эти поля относятся к первой части 802.3 Ethernet — MAC.
    Так же присутствует как мы помним и вторая часть LLC, давайте рассмотрим ее поля.
  7. DSAP — Destination Service Access Point. 1 байтовое поле. Это точка доступа к сервису системы получателя, которая указывает на то, в каком месте системы получателя буферов памяти следует разместить данные фрейма.
  8. SSAP — Source Service Access Point — так же 1 байтовое поле. Это точка доступа к сервису системы отправителя, которая указывает на то, в каком месте системы отправителя буферов памяти следует разместить данные фрейма.
  9. Control — Управление. Размер поля 1-2 байта. Это поле указывает на тип сервиса, который необходим для данных. В зависимости от того, какой сервис нужно предоставить, поле может быть как 1 так и 2 байта.
  10. Заголовок SNAP — занимает 5 байт. Состоит из двух полей — OUI и TYPE. При приеме данных, приемник должен знать, какой из сетевых протоколов должен получить входящие данные (например, IP). Для этого и предназначено набор этих полей SNAP — Sub Network Access Protocol (протокол доступа к подсетям).
  11. OUI — Код организации, 3 байта. Идентификатор организации или производителя. Совпадает с первыми 3-мя байтами MAC адреса отправителя.
  12. TYPE — Локальный код. Поле длиной 2 байта. Функцианально это тоже самое что и Ethertype в заголовке Ethernet II.

Как же может устройство определить, какой тип ethernet кадра принимается?

Ведь существует DIX формат (Ethernet II), 802.3 и 802_3 с SNAP ?

Все очень просто. Давайте рассмотрим алгоритм определения.

  1. Устройство получает фрейм. Смотрит на поле Lenght/Type (помним, оно занимает 2 байта). Если значение больше чем 1518 байт (размер всего фрейма с заголовками), то это уже не Ethernet II , а 802.3 или 802.3 SNAP, потому как только в Ethernet II указывается размер в указанном поле.
  2. Допустим Lenght/Type у нас больше 1518 (0x5FE).
    Здесь нам нужно определить, какой фрейм 802.3 или 802.3 SNAP. Это делается на основе заголовка LLC (802.2), таких как DSAP,SSAP и SNAP. Заметим, что SNAP это расширение заголовков DSAP и SSAP (Сервисов стало настолько много, что в 1 байте не удавалось закодировать тот или иной сервис и пришлось создавать еще одну реализацию, которая называется 802.3 SNAP).
    SSAP и DSAP обычно принимают одно и тоже значение. Поле Control принимает обычно значение 0x03, что означает, что нет необходимости устанавливать соединение на канальном уровне (Layer 2).

И все же, как определить какой формат Ethernet передается, 802.3 или 802.3 SNAP?

Если передается кадр с SNAP, то значение первого и второго байта данных (по сути это наши SSAP и DSAP) равны 0xAA, а третьего (по сути нашего Control) равняется 0x03.

Вот такой алгоритм работает при том, как определить какой формат кадра передается на приемник.

По формату кадров пока все.

Сейчас немного поговорим о адресации на канальном уровне, так же называемой Mac — адресацией.

На канальном уровне, адресация проходит по MAC адресам (помните, когда рассматривали ethernet кадр, первые поля были Destination Address и Source Address, которые занимали 6 байт). Эти адреса имеют 48 битный формат и записываются в 16-ом виде.

Тут стоит отметить тот факт, что, существуют юникастовые рассылки (грубо говоря точка-точка), а существуют множественные рассылки (от одного к нескольким). Это определяется по первому биту MAC адреса, если этот бит равен 1, то это значит что осуществляется множественная рассылка (например широковещательная рассылка, такой адрес имеет все единицы), если первый бит равен «0», юникастовая рассылка.

Mac адрес состоит как бы из двух частей. Первые три байта прикреплены к той или иной компании, которая производит сетевые устройства, тоесть например устройства имеет определнные 3 байта одинаковые (некоторые компании имеют не один такой адрес, а целый пул адресов), а вторые 3 байта, это непосредственно уникальный адрес сетевого устройства.

Статья получилась не маленькой. Материал может показаться запутанным. Думаю что в целом все понятно. Если что, поправляйте в комментариях, буду редактировать.

Поля кадра Преамбула (7 байтов) и Начальный разграничитель кадров (SFD) (1 байт) в Ethernet используются для синхронизации между передающим и принимающим устройствами. Эти первые восемь байтов фрейма используются, чтобы привлечь внимание узлов получения. По существу первые несколько байтов говорят получателям подготовиться принимать новый кадр.

Поле MAC-адрес Назначения

Поле MAC Адрес Назначения (6 байтов) является идентификатором для предполагаемого получателя. Как Вы можете вспомнить, этот адрес используется Уровнем 2, чтобы помочь устройствам в определении, адресуется ли им данный фрейм. Адрес во фрейме сравнивается с MAC-адресом устройства. Если адреса совпадают, устройство принимает фрейм.

Поле MAC-адрес Источника

Поле MAC Адрес Назначения (6 байтов) идентифицирует отправляющий NIC или интерфейс фрейма. Коммутаторы также используют этот адрес, чтобы добавить его к своим таблицам сопоставления. Роль коммутаторов будет обсуждаться позже в этой рубрике.

Поле Длина/Тип

Для любого стандарта IEEE 802.3, более раннего 1997 года, поле Длина определяет точную длину поля данных фрейма. Это позже используется позже в качестве части FCS, чтобы гарантировать, что сообщение было получено корректно. Если цель поля состоит в том, чтобы определить тип, как в Ethernet II, поле Тип описывает, какой реализуется протокол.

Эти два применения поля были официально объединены в 1997 в стандарте IEEE 802.3x, потому что оба применения были распространены. Поле Тип Ethernet II включается в текущее определение фрейма 802.3. Когда узел принимает кадр, он должен исследовать поле Длина, чтобы определить, какой протокол более высокого уровня в нем присутствует. Если значение двух октетов больше или равно, чем шестнадцатеричное число 0x0600 или десятичное число 1536, то содержимое поля Данные декодируется согласно обозначенному типу протокола. Если значение поля меньше или равно, чем шестнадцатеричное число 0x05DC или десятичное число 1500, поле Длина используется для указания использования формата кадра IEEE 802.3. Таким образом различаются кадры Ethernet II и 802.3.

Поля Данные и Набивка

Поля Данные и Набивка (46 - 1500 байтов) содержат инкапсулированные данные от более высокого уровня, который является типичным PDU Уровня 3, обычно, пакетом IPv4. Все фреймы должны быть по крайней мере 64 байта длиной. Если инкапсулируется пакет меньшего размера, используется Набивка, чтобы увеличить размер кадра до этого минимального размера.

IEEE поддерживает список общего назначения типов Ethernet II.

Форматы кадров технологии Ethernet

Стандарт технологии Ethernet, описанный в документе IEEE 802.3, дает описание единственного формата кадра уровня MAC. Так как в кадр уровня MAC должен вкладываться кадр уровня LLC, описанный в документе IEEE 802.2, то по стандартам IEEE в сети Ethernet может использоваться только единственный вариант кадра канального уровня, заголовок которого является комбинацией заголовков MAC и LLC подуровней.

Тем не менее на практике в сетях Ethernet на канальном уровне используются кадры 4-х различных форматов (типов). Это связано с длительной историей развития технологии Ethernet, насчитывающей период существования до принятия стандартов IEEE 802, когда подуровень LLC не выделялся из общего протокола и, соответственно, заголовок LLC не применялся.

Консорциум трех фирм Digital, Intel и Xerox в 1980 году представил на рассмотрение комитету 802.3 свою фирменную версию стандарта Ethernet (в которой был, естественно, описан определенный формат кадра) в качестве проекта международного стандарта, но комитет 802.3 принял стандарт, отличающийся в некоторых деталях от предложения DIX. Отличия касались и формата кадра, что породило существование двух различных типов кадров в сетях Ethernet.

Еще один формат кадра появился в результате усилий компании Novell по ускорению работы своего стека протоколов в сетях Ethernet.

И наконец, четвертый формат кадра стал результатом деятельности комитета 802.2 по приведению предыдущих форматов кадров к некоторому общему стандарту.

Различия в форматах кадров могут приводить к несовместимости в работе аппаратуры и сетевого программного обеспечения, рассчитанного на работу только с одним стандартом кадра Ethernet. Однако сегодня практически все сетевые адаптеры, драйверы сетевых адаптеров, мосты/коммутаторы и маршрутизаторы умеют работать со всеми используемыми на практике форматами кадров технологии Ethernet, причем распознавание типа кадра выполняется автоматически.

Ниже приводится описание всех четырех типов кадров Ethernet (здесь под кадром понимается весь набор полей, которые относятся к канальному уровню, то есть поля MAC и LLC уровней). Один и тот же тип кадра может иметь разные названия, поэтому ниже для каждого типа кадра приведено по нескольку наиболее употребительных названий:

  • кадр 802.3/LLC (кадр 802.3/802.2 или кадр Novell 802.2);
  • кадр Raw 802.3 (или кадр Novell 802.3);
  • кадр Ethernet DIX (или кадр Ethernet II);
  • кадр Ethernet SNAP.

Форматы всех этих четырех типов кадров Ethernet приведены на рисунке.


Форматы кадров Ethernet

Кадр 802.3/LLC

Заголовок кадра 802.3/LLC является результатом объединения полей заголовков кадров, определенных в стандартах IEEE 802.3 и 802.2.

Стандарт 802.3 определяет восемь полей заголовка (поле преамбулы и начальный ограничитель кадра на рисунке не показаны).
Поле преамбулы (Preamble)состоит из семи синхронизирующих байт 10101010. При манчестерском кодировании эта комбинация представляется в физической среде периодическим волновым сигналом с частотой 5 МГц.
Начальный ограничитель кадра (Start-of-frame-delimiter, SFD)состоит из одного байта 10101011. Появление этой комбинации бит является указанием на то, что следующий байт - это первый байт заголовка кадра.
Адрес назначения (Destination Address, DA)может быть длиной 2 или 6 байт. На практике всегда используются адреса из 6 байт. Первый бит старшего байта адреса назначения является признаком того, является адрес индивидуальным или групповым. Если он равен 0, то адрес является индивидуальным (unicast),a если 1, то это групповой адрес (multicast).Групповой адрес может предназначаться всем узлам сети или же определенной группе узлов сети. Если адрес состоит из всех единиц, то есть имеет шестнадцатеричное представление 0*FFFFFFFFFFFF, то он предназначается всем узлам сети и называется широковещательным адресом (broadcast).В остальных случаях групповой адрес связан только с теми узлами, которые сконфигурированы (например, вручную) как члены группы, номер которой указан в групповом адресе. Второй бит старшего байта адреса определяет способ назначения адреса - централизованный или локальный. Если этот бит равен 0 (что бывает почти всегда в стандартной аппаратуре Ethernet), то адрес назначен централизованно, с помощью комитета IEEE. Комитет IEEE распределяет между производителями оборудования так называемые организационно уникальные идентификаторы (Organizationally Unique Identifier, OUI). Этот идентификатор помещается в 3 старших байта адреса (например, идентификатор 000081 определяет компанию Bay Networks). За уникальность младших 3-х байт адреса отвечает производитель оборудования. Двадцать четыре бита, отводимые производителю для адресации интерфейсов его продукции, позволяют выпустить 16 миллионов интерфейсов под одним идентификатором организации. Уникальность централизованно распределяемых адресов распространяется на все основные технологии локальных сетей - Ethernet, Token Ring, FDDI и т. д.

ВНИМАНИЕ В стандартах IEEE Ethernet младший бит байта изображается в самой левой позиции поля, а старший бит -в самой правой. Этот нестандартный способ отображения порядка бит в байте соответствует порядку передачи бит в линию связи передатчиком Ethernet. В стандартах других организаций, например RFC IETF, ITU-T, ISO, используется традиционное представление байта, когда младший бит считается самым правым битом байта, а старший - самым левым. При этом порядок следования байтов остается традиционным. Поэтому при чтении стандартов, опубликованных этими организациями, а также чтении данных, отображаемых на экране операционной системой или анализатором протоколов, значения каждого байта кадра Ethernet нужно зеркально отобразить, чтобы получить правильное представление о значении разрядов этого байта в соответствии с документами IEEE. Например, групповой адрес, имеющийся в нотации IEEE вид 1000 0000 0000 0000 1010 0111 1111 0000 0000 0000 0000 0000 или в шестнадцатеричной записи 80-00-A7-F0-00-00, будет, скорее всего, отображен анализатором протоколов в традиционном виде как 01-00-5E-0F-00-00.

Адрес источника (Source Address, SA)- это 2- или 6-байтовое поле, содержащее адрес узла - отправителя кадра. Первый бит адреса всегда имеет значение 0.
Длина (Length, L)- 2-байтовое поле, которое определяет длину поля данных в кадре.
Поле данных (Data)может содержать от 0 до 1500 байт. Но если длина поля меньше 46 байт, то используется следующее поле - поле заполнения, - чтобы дополнить кадр до минимально допустимого значения в 46 байт.
Поле заполнения (Padding)состоит из такого количества байт заполнителей, которое обеспечивает минимальную длину поля данных в 46 байт. Это обеспечивает корректную работу механизма обнаружения коллизий. Если длина поля данных достаточна, то поле заполнения в кадре не появляется.
Поле контрольной суммы (Frame Check Sequence, FCS)состоит из 4 байт, содержащих контрольную сумму. Это значение вычисляется по алгоритму CRC-32. После получения кадра рабочая станция выполняет собственное вычисление контрольной суммы для этого кадра, сравнивает полученное значение со значением поля контрольной суммы и, таким образом, определяет, не искажен ли полученный кадр.

Кадр 802.3 является кадром МАС-подуровня, поэтому в соответствии со стандартом 802.2 в его поле данных вкладывается кадр подуровня LLC с удаленными флагами начала и конца кадра. Формат кадра LLC был описан выше. Так как кадр LLC имеет заголовок длиной 3 (в режиме LLC1) или 4 байт (в режиме LLC2), то максимальный размер поля данных уменьшается до 1497 или 1496 байт.

Кадр Raw 8023,называемый также кадром Novell 8023,представлен на рисунке. Из рисунка видно, что это кадр подуровня MAC стандарта 802.3, но без вложенного кадра подуровня LLC. Компания Novell долгое время не использовала служебные поля кадра LLC в своей операционной системе NetWare из-за отсутствия необходимости идентифицировать тип информации, вложенной в поле данных, - там всегда находился пакет протокола IPX, долгое время бывшего единственным протоколом сетевого уровня в ОС NetWare.

Теперь, когда необходимость идентификации протокола верхнего уровня появилась, компания Novell стала использовать возможность инкапсуляции в кадр подуровня MAC кадра LLC, то есть использовать стандартные кадры 802.3/L"LC. Такой кадр компания обозначает теперь в своих операционных системах как кадр 802.2, хотя он является комбинацией заголовков 802.3 и 802.2.

Кадр Ethernet DIX/Ethernet II

Кадр Ethernet DIX, называемым.также кадром Ethernet II,имеет структуру, совпадающую со структурой кадра Raw 802.3. Однако 2-байтовое поле Длина(Ь) кадра Raw 802.3 в кадре Ethernet DIXиспользуется в качестве поля типа протокола. Это поле, теперь получившее название Type (Т) или EtherType, предназначено для тех же целей, что и поля DSAP и SSAP кадра LLC - для указания типа протокола верхнего уровня, вложившего свой пакет в поле данных этого кадра.

В то время как коды протоколов в полях SAP имеют длину в один байт, в поле Type для кода протокола отводятся 2 байта. Поэтому один и тот же протокол в поле SAP и поле Type будет кодироваться в общем случае разными числовыми значениями. Например, протокол IP имеет код 204810(0*0800) для поля Ether-Type и значение 6 для поля SAP. Значения кодов протоколов для поля Ethel-Type появились раньше значений SAP, так как фирменная версия Ethernet DIX существовала до появления стандарта 802.3, и ко времени распространения оборудования 802.3 уже стали стандартами де-факто для многих аппаратных и программных продуктов. Так как структуры кадров Ethernet DIX и Raw 802.3 совпадают, то поле длины/типа часто в документации обозначают как поле L/T.

Кадр Ethernet SNAP

Для устранения разнобоя в кодировках типов протоколов, сообщения которых вложены в поле данных кадров Ethernet, комитетом 802.2 была проведена работа по дальнейшей стандартизации кадров Ethernet. В результате появился кадр Ethernet SNAP (SNAP - SubNetwork Access Protocol, протокол доступа к подсетям). Кадр Ethernet SNAP представляет собой расширение кадра 802.3/LLC за счет введения дополнительного заголовка протокола SNAP, состоящего из двух полей: OUI и Type. Поле Type состоит из 2-х байт и повторяет по формату и назначению поле Type кадра Ethernet II (то есть в нем используются те же значения кодов протоколов). Поле OUI (Organizationally Unique Identifier) определяет идентификатор организации, которая контролирует коды протоколов в поле Type. С помощью заголовка SNAP достигнута совместимость с кодами протоколов в кадрах Ethernet II, а также создана универсальная схема кодирования протоколов. Коды протоколов для технологий 802 контролирует IEEE, которая имеет OUI, равный 000000. Если в будущем потребуются другие коды протоколов для какой-либо новой технологии, для этого достаточно указать другой идентификатор организации, назначающей эти коды, а старые значения кодов останутся в силе (в сочетании с другим идентификатором OUI).

Так как SNAP представляет собой протокол, вложенный в протокол LLC, то в полях DSAP и SSAP записывается код ОхАА, отведенный для протокола SNAP. Поле Control заголовка LLC устанавливается в 0х03, что соответствует использованию ненумерованных кадров.

Заголовок SNAP является дополнением к заголовку LLC, поэтому он допустим не только в кадрах Ethernet, но и в кадрах протоколов других технологий 802. Например, протокол IP всегда использует структуру заголовков LLC/SNAP при инкапсуляции в кадры всех протоколов локальных сетей: FDDI, Token Ring, 100VG-AnyLAN, Ethernet, Fast Ethernet, Gigabit Ethernet.

Правда, при передаче пакетов IP через сети Ethernet, Fast Ethernet и Gigabit Ethernet протокол IP использует кадры Ethernet DIX.

Использование различных типов кадров Ethernet

Автоматическое распознавание типов кадров Ethernet выполняется достаточно несложно. Для кодирования типа протокола в поле EtherType указываются значения, превышающие значение максимальной длины поля данных, равное 1500, поэтому кадры Ethernet II легко отличить от других типов кадров по значению поля L/T. Дальнейшее распознавание типа кадра проводится по наличию или отсутствию полей LLC. Поля LLC могут отсутствовать только в том случае, если за полем длины идет начало пакета IPX, а именно 2-байтовое поле контрольной суммы пакета, которое всегда заполняется единицами, что дает значение в 255 байт. Ситуация, когда поля DSAP и SSAP одновременно содержат такие значения, возникнуть не может, поэтому наличие двух байт 255 говорит о том, что это кадр Raw 802.3. В остальных случаях дальнейший анализ проводится в зависимости от значений полей DSAP и SSAP. Если они равны 0*АА, то это кадр Ethernet SNAP, а если нет, то 802.3/LLC.

В табл. 2 приведены данные о том, какие типы кадров Ethernet обычно поддерживают реализации популярных протоколов сетевого уровня.

Таблица 2.Типы кадров Ethernet, поддерживающие реализации популярных протоколов сетевого уровня.

Рис. 1. Формат кадра Ethernet DIX (II)

Первые два поля заголовка отведены под адреса:

DA (Destination Address) - МАС-адрес узла назначения;

SA (Source Address) - МАС-адрес узла отправителя. Для доставки кадра достаточно одного адреса - адреса назначения; адрес источника помещается в кадр для того, чтобы узел, получивший кадр, знал, от кого пришел кадр и кому нужно на него ответить. Принятие решения об ответе не входит в компетенцию протокола Ethernet, это дело протоколов верхних уровней. Ethernet же только выполнит такое действие, если с сетевого уровня поступит соответствующее указание.

Поле Т (Туре, или EtherType) содержит условный код протокола верхнего уровня, данные которого находятся в поле данных кадра, например шестнадцатеричное значение 08-00 соответствует протоколу IP. Это поле требуется для поддержки интерфейсных функций мультиплексирования и демультиплексирования кадров при взаимодействии с протоколами верхних уровней.

Поле данных может содержать от 46 до 1500 байт. Если длина пользовательских данных меньше 46 байт, то это поле дополняется до минимального размера байтами заполнения. Эта операция требуется для корректной работы метода доступа Ethernet (он рассматривается в следующем разделе).

Поле контрольной последовательности кадра (Frame Check Sequence, FCS) состоит из 4 байт контрольной суммы. Это значение вычисляется по алгоритму CRC-32.

Кад р Ethernet DIX (II) не отражает разделения канального уровня Ethernet на уровень MAC и уровень LLC: его поля поддерживают функции обоих уровней, например интерфейсные функции поля Г относятся к функциям уровня LLC, в то время как все остальные поля поддерживают функции уровня MAC.

Существуют еще три стандартных формата кадра Ethernet:

  • Кадр 802.3/LLC является стандартом комитета IEEE 802 и построен в соответствии с принятым разбиением функций канального уровня на уровень MAC и уровень LLC. Поэтому результирующий кадр является вложением кадра LLC, определяемого стандартом 802.2, в кадр MAC, определяемого стандартом 802.3.
  • Кадр Raw 802.3, или Novell 802.3, появился в результате усилий компании Novell по ускорению разработки своего стека протоколов в сетях Ethernet.
  • Кадр Ethernet SNAP стал результатом деятельности комитета 802.2 по приведениюпредыдущих форматов кадров к некоторому общему стандарту и приданию кадру необходимой гибкости для учета в будущем возможностей добавления полей или изменения их назначения.

Как уже было сказано, в настоящее время оборудованием Ethernet используются только кадры Ethernet DIX (II). Остальные форматы кадров, в том числе кадр 802.3/LLC, попрежнему формально являющийся стандартным, вышли из употребления из-за более сложного формата, который оказался не нужен в условиях существования единой технологии канального уровня.




Top