Стандарт Ethernet, определенный в документе IEEE 802.3, дает описание единственного формата кадра уровня MAC. Так как в кадр уровня MAC должен вкладываться кадр уровня LLC, описанный в документе IEEE 802.2, то по стандартам IEEE в сети Ethernet может использоваться только единственный вариант кадра канального уровня, заголовок которого является комбинацией заголовков подуровней MAC и LLC.
Тем не менее, на практике в сетях Ethernet на канальном уровне используются кадры четырех различных форматов (типов). Один и тот же тип кадра может иметь разные названия, поэтому далее для каждого типа кадров приведено несколько наиболее употребительных названий.
q Кадр Ethernet DIX, или Ethernet II, появился в результате работы консорциума трех фирм Digital, Intel и Xerox в 1980 году, представившего на рассмотрение комитету 802.3 свою фирменную версию стандарта Ethernet в качестве проекта международного стандарта.
q Однако комитет 802.3 принял стандарт, отличающийся в некоторых деталях от предложения DIX, причем отличия касались и формата кадра. Так возник формат кадра 802.3/LLC, 802.3/802.2, или Novell 802.2.
q Кадр Raw 802.3, или Novell 802.3, появился в результате усилий компании Novell по ускорению работы своего стека протоколов в сетях Ethernet.
q Кадр Ethernet SNAP стал результатом деятельности комитета 802.2 по приведению предыдущих форматов кадров к некоторому общему стандарту и приданию кадру необходимой гибкости, что позволило бы в будущем добавлять новые поля или изменять их назначение.
Различия в форматах кадров могут приводить к несовместимости в работе аппаратуры и сетевого программного обеспечения, рассчитанного на функционирование только с одним стандартом кадра Ethernet. Однако сегодня практически все сетевые адаптеры, драйверы сетевых адаптеров, мосты/коммутаторы и маршрутизаторы умеют работать со всеми используемыми на практике форматами кадров технологии Ethernet, причем распознавание типа кадра происходит автоматически.
Форматы всех этих четырех типов кадров Ethernet приведены на рис. 1.

Рис. 1. Форматы кадров Ethernet
Заголовок кадра 802.3/LLC является результатом объединения полей заголовков кадров, определенных в стандартах IEEE 802.3 и 802.2.
Стандарт 802.3 определяет восемь полей заголовка (на рисунке поле преамбулы и начальный ограничитель кадра не показаны).
q Поле преамбулы состоит из семи синхронизирующих байтов — 10101010. При манчестерском кодировании эта комбинация представляется в физической среде периодическим волновым сигналом с частотой 5 МГц.
q Начальный ограничитель кадра (Start-of-Frame-Delimiter, SFD) состоит из одного байта 10101011. Появление этой комбинации битов является указанием на то, что следующий байт — это первый байт заголовка кадра.
q Адрес назначения (Destination Address, DA) может быть длиной 2 или 6 байт. На практике всегда используются MAC-адреса из 6 байт.
q Адрес источника (Source Address, SA) — это 2- или 6-байтное поле, содержащее MAC-адрес узла — отправителя кадра. Первый бит адреса всегда имеет значение 0.
q Длина (Length, L) — 2-байтное поле, которое определяет длину поля данных в кадре.
q Поле данных может содержать от 0 до 1500 байт. Но если длина поля меньше 46 байт, то используется следующее поле — поле заполнения, дополняющее кадр до минимально допустимого значения в 46 байт.
q Поле заполнения состоит из такого количества байтов заполнителей, которое обеспечивает минимальную длину поля данных в 46 байт. Это обеспечивает корректную работу механизма обнаружения коллизий. Если длина поля данных больше или равна минимальной, то поле заполнения в кадре отсутствует.
q Поле контрольной последовательности кадра (Frame Check Sequence, FCS) состоит из 4 байт контрольной суммы. Это значение вычисляется по алгоритму CRC-32.
Кадр 802.3 является кадром подуровня MAС, поэтому в соответствии со стандартом 802.2 в его поле данных вкладывается кадр подуровня LLC с удаленными флагами начала и конца кадра.
Поле DSAP (Destination Service Access Point — точка входа службы приемника) служит для хранения кода протокола, которому адресовано содержимое поля данных. Соответственно, поле SSAP (Source Service Access Point — точка входа службы источника) используется для указания кода протокола, от которого посылаются данные. Применение двух полей для целей демультиплексирования довольно нетипично, обычно протоколы обходятся одним полем, например, протокол IP всегда посылает свои пакеты протоколу IP, а протокол IPX — протоколу IPX. Два поля полезны в тех случаях, когда вышележащий протокол поддерживает несколько режимов работы, так что протокол на узле-отправителе может использовать различные значения DSAP и SSAP для уведомления узла получателя о переходе в новый режим работы. Поле Control (управление) обеспечивает надежность передачи кадров. Фактически, эта функция работает только в режиме LLC2, в этом случае поле Control состоит из двух байтов. В режимах LLC1 и LLC3 поле Control состоит из одного байта и полезной работы не выполняет.
Так как кадр LLC имеет заголовок длиной 3 (в режиме LLC1) или 4 байта (в режиме LLC2), то максимальный размер поля данных уменьшается до 1497 или 1496 байт.
Кадр Raw 802.3, называемый еще кадром Novell 802.3, также представлен на рис. 1. Из рисунка видно, что он представляет собой кадр подуровня MAC стандарта 802.3, но без вложенного кадра подуровня LLC. Компания Novell долгое время не использовала служебные поля кадра LLC в своей операционной системе NetWare, поскольку не было необходимости идентифицировать тип информации, вложенной в поле данных — там всегда находился пакет протокола IPX, долгое время бывшего единственным протоколом сетевого уровня в ОС NetWare.
Теперь, когда необходимость в идентификации протокола верхнего уровня появилась, компания Novell стала использовать возможность инкапсуляции в кадр подуровня MAC кадра LLC, то есть возможность применять стандартные кадры 802.3/LLC. Такой кадр компания обозначает теперь в своих операционных системах как кадр 802.2, хотя он является комбинацией заголовков 802.3 и 802.2.
Кадр Ethernet DIX, называемый также кадром Ethernet II, имеет структуру, совпадающую со структурой кадра Raw 802.3 (см. рис. 1). Однако 2-байтное поле длины (L) кадра Raw 802.3 в кадре Ethernet DIX используется в качестве поля типа (Type, T) протокола. Это поле предназначено для тех же целей, что и поля DSAP и SSAP кадра LLC — для указания типа протокола верхнего уровня, вложившего свой пакет в поле данных этого кадра.
В то время как коды протоколов в полях SAP имеют длину 1 байт, в поле типа для кода протокола отводятся 2 байта. Поэтому один и тот же протокол в поле SAP и поле типа будет кодироваться в общем случае разными числовыми значениями. Например, протокол IP имеет код 204810 (0x0800) для поля типа и значение 6 для поля SAP. Значения кодов протоколов для поля типа появились раньше значений для поля SAP, так как фирменная версия Ethernet DIX существовала до появления стандарта 802.3, и ко времени распространения оборудования 802.3 эти значения уже стали стандартами де-факто для многих аппаратных и программных продуктов. Так как структуры кадров Ethernet DIX и Raw 802.3 совпадают, то поле длины/типа часто в документации обозначают как поле L/T. При этом числовое значение этого поля определяет его смысл: если значение меньше 1500, то это поле длины, а если больше — то типа.
Для устранения разнобоя в кодировках типов протоколов, сообщения которых вложены в поле данных кадров Ethernet, комитетом 802.2 была проведена работа по дальнейшей стандартизации кадров Ethernet. В результате появился кадр Ethernet SNAP (SubNetwork Access Protocol — протокол доступа к подсетям). Кадр Ethernet SNAP (см. рис. 1) представляет собой расширение кадра 802.3/LLC за счет введения дополнительного заголовка протокола SNAP, состоящего из двух полей: OUI и типа. Поле типа состоит из 2 байт и повторяет по формату и назначению поле типа кадра Ethernet II (то есть в нем используются те же значения кодов протоколов). Поле OUI определяет уже знакомый нам организационно уникальный идентификатор — то есть идентификатор организации, которая контролирует коды протоколов в поле типа. С помощью заголовка SNAP достигнута совместимость с кодами протоколов в кадрах Ethernet II, а также создана универсальная схема кодирования протоколов. Коды протоколов для технологий 802 контролирует организация IEEE, идентификатор OUI которой равен 000000. Если в будущем потребуются другие коды протоколов для какой-либо новой технологии, для этого достаточно будет указать другой идентификатор организации, назначающей эти коды, а старые значения кодов останутся в силе (в сочетании с другим идентификатором OUI).
Так как SNAP представляет собой протокол, вложенный в протокол LLC, то в полях DSAP и SSAP записывается код 0xAA, отведенный для протокола SNAP. В управляющем поле заголовка LLC устанавливается значение 0x03, что соответствует использованию ненумерованных кадров.
Заголовок 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, для протоколов сетевого уровня возникает проблема: пользоваться всегда одним и тем же типом кадра, применять все четыре или же отдавать предпочтение только некоторым из них?
Протокол IP может использовать два типа кадров: оригинальный кадр Ethernet II и наиболее структурно сложный кадр Ethernet SNAP. Предпочтительным типом кадра для протокола IP является кадр Ethernet II.
Современные сетевые адаптеры автоматически распознают тип кадра Ethernet, используя значения полей кадров. Например, кадры Ethernet II легко отличить от других типов кадров по значению поля L/T: если оно больше 1500, значит, это поле является полем типа протокола (T), так как значения кодов протоколов выбраны так, что они всегда больше 1500. В свою очередь наличие поля T говорит о том, что это кадр Ethernet II, который единственный использует это поле в данной позиции кадра.
Протокол IPX «является максималистом», он может работать со всеми четырьмя типами кадров Ethernet. Он распознает кадры Ethernet II описанным способом, а если кадр принадлежит к другому типу (поле L/T имеет значение меньшее или равное 1500), то выполняется дальнейшая проверка по наличию или отсутствию полей LLC. Поля LLC могут отсутствовать только в том случае, если за полем длины идет начало пакета IPX, а именно 2-байтное поле, которое всегда заполняется единицами, что дает значение 0xFFFF, или два байта по 255. Ситуация, когда поля DSAP и SSAP одновременно содержат такие значения, возникнуть не может, поэтому наличие двух байтов 255 говорит о том, что это кадр Raw 802.3.
В остальных случаях дальнейший анализ проводится в зависимости от значений полей DSAP и SSAP. Если они равны 0xAA, то это кадр Ethernet SNAP, а если нет, то 802.3/LLC.