В компьютерных сетях кадр Ethernet представляет собой блок данных протокола канального уровня и использует базовые механизмы транспорта физического уровня Ethernet . Другими словами, блок данных по каналу Ethernet передает кадр Ethernet в качестве полезной нагрузки. [2]
Кадру Ethernet предшествуют преамбула и разделитель начального кадра (SFD), которые являются частью пакета Ethernet на физическом уровне . Каждый кадр Ethernet начинается с заголовка Ethernet, который содержит MAC-адреса назначения и источника в качестве первых двух полей. Средняя часть кадра представляет собой полезные данные, включая любые заголовки для других протоколов (например, Интернет-протокола ), переносимых в кадре. Кадр заканчивается последовательностью проверки кадра (FCS), которая представляет собой 32-битную проверку циклическим избыточным кодом , используемую для обнаружения любого повреждения данных при передаче.
Пакет данных по сети и кадр в качестве его полезной нагрузки состоят из двоичных данных. Ethernet передает данные, начиная с самого старшего октета (байта); однако в каждом октете первым передается младший бит. [а]
Внутренняя структура кадра Ethernet указана в IEEE 802.3. [2] В таблице ниже показан полный пакет Ethernet и кадр внутри него в том виде, в каком он был передан, для размера полезной нагрузки до MTU 1500 октетов. [b] Некоторые реализации Gigabit Ethernet и другие высокоскоростные варианты Ethernet поддерживают более крупные кадры, известные как большие кадры .
Дополнительный тег 802.1Q занимает дополнительное пространство в кадре. Размеры полей для этой опции показаны в скобках в таблице выше. IEEE 802.1ad (Q-in-Q) допускает использование нескольких тегов в каждом кадре. Здесь этот вариант не показан.
Пакет Ethernet начинается с семиоктетной (56-битной) преамбулы и однооктетного (8-битного) разделителя начального кадра (SFD). [c] Значения битов преамбулы чередуются между 1 и 0, что позволяет приемникам синхронизировать свои часы на битовом уровне с передатчиком. За преамбулой следует SFD, который заканчивается цифрой 1 вместо 0, чтобы нарушить битовую структуру преамбулы и сигнализировать о начале фактического кадра. [1] : раздел 4.2.5
Схема приемопередатчика физического уровня (сокращенно PHY) необходима для подключения Ethernet MAC к физической среде. Соединение между PHY и MAC не зависит от физической среды и использует шину из семейства независимых от среды интерфейсов ( MII , GMII , RGMII , SGMII , XGMII ). Преамбула и представление SFD зависят от ширины шины:
Сразу за SFD следует MAC-адрес назначения , который является первым полем в кадре Ethernet.
Заголовок содержит MAC-адреса назначения и источника (каждый длиной шесть октетов), поле EtherType и, опционально, тег IEEE 802.1Q или тег IEEE 802.1ad .
Поле EtherType имеет длину два октета и может использоваться для двух разных целей. Значения 1500 и ниже означают, что он используется для указания размера полезных данных в октетах, а значения 1536 и выше указывают, что он используется в качестве EtherType, чтобы указать, какой протокол инкапсулирован в полезные данные кадра. При использовании в качестве EtherType длина кадра определяется расположением межпакетного разрыва и допустимой последовательностью проверки кадра (FCS).
Тег IEEE 802.1Q или тег IEEE 802.1ad , если он присутствует, представляет собой четырехоктетное поле, которое указывает членство в виртуальной локальной сети (VLAN) и приоритет IEEE 802.1p . Первые два октета тега называются идентификатором идентификатора протокола Tag (TPID) и дублируются как поле EtherType, указывающее, что кадр имеет тег 802.1Q или 802.1ad. 802.1Q использует TPID 0x8100. 802.1ad использует TPID 0x88a8.
Полезная нагрузка — это поле переменной длины. Его минимальный размер определяется требованием минимальной передачи кадра в 64 октета (байта). [d] С учетом заголовка и FCS минимальная полезная нагрузка составляет 42 октета при наличии тега 802.1Q [e] и 46 октетов при его отсутствии. Когда фактическая полезная нагрузка меньше минимальной, соответственно добавляются октеты заполнения. Стандарты IEEE определяют максимальную полезную нагрузку в 1500 октетов. Нестандартные большие кадры позволяют передавать большую полезную нагрузку в сетях, созданных для их поддержки.
Последовательность проверки кадра (FCS) представляет собой четырехоктетную проверку циклическим избыточным кодом (CRC), которая позволяет обнаруживать поврежденные данные во всем кадре, полученном на стороне получателя. Согласно стандарту, значение FCS вычисляется как функция полей защищенного кадра MAC: адреса источника и назначения, поля длины/типа, данных клиента MAC и заполнения (то есть всех полей, кроме FCS).
Согласно стандарту, это вычисление выполняется с использованием алгоритма CRC-32 со сдвигом влево ( полином = 0x4C11DB7, начальный CRC = 0xFFFFFFFF, CRC дополняется после, проверочное значение = 0x38FB2284). Стандарт гласит, что данные передаются первыми младшим битом (бит 0), а в FCS первым передается старший бит (бит 31). [1] : раздел 3.2.9. Альтернативой является вычисление CRC с использованием сдвига вправо CRC-32 (полином = 0xEDB88320, начальный CRC = 0xFFFFFFFF, CRC дополняется после, проверочное значение = 0x2144DF1C), что приведет к получению CRC, который представляет собой битовую инверсию FCS, при которой сначала передаются как данные, так и наименее значимый бит CRC, что приводит к идентичным передачам.
Стандарт гласит, что получатель должен рассчитать новую FCS по мере получения данных, а затем сравнить полученную FCS с FCS, рассчитанную получателем. Альтернативой является вычисление CRC как для полученных данных, так и для FCS, что приведет к фиксированному ненулевому значению «проверки». (Результат ненулевой, поскольку CRC дополняется после генерации CRC). Поскольку данные принимаются сначала младшим битом, и чтобы избежать необходимости буферизации октетов данных, приемник обычно использует сдвиг вправо CRC-32. Это делает значение «проверки» (иногда называемое «магической проверкой») 0x2144DF1C. [5]
Однако аппаратная реализация CRC с логическим сдвигом вправо может использовать регистр сдвига с линейной обратной связью со сдвигом влево в качестве основы для расчета CRC, меняя местами биты и приводя к проверочному значению 0x38FB2284. Поскольку дополнение CRC может выполняться после вычисления и во время передачи, то, что остается в аппаратном регистре, является недополненным результатом, поэтому остаток для реализации сдвига вправо будет дополнением 0x2144DF1C = 0xDEBB20E3, а для сдвига влево реализация, дополнение 0x38FB2284 = 0xC704DD7B.
Конец кадра обычно обозначается символом конца потока данных на физическом уровне или потерей сигнала несущей; примером является 10BASE-T , где принимающая станция обнаруживает конец передаваемого кадра по потере несущей. Более поздние физические уровни используют явный конец данных или символ или последовательность конца потока , чтобы избежать двусмысленности, особенно когда несущая постоянно передается между кадрами; примером является Gigabit Ethernet с его схемой кодирования 8b/10b , в которой используются специальные символы, которые передаются до и после передачи кадра. [6] [7]
Межпакетный разрыв (IPG) — это время простоя между пакетами. После отправки пакета передатчики должны передать минимум 96 бит (12 октетов) состояния свободной линии перед передачей следующего пакета.
Существует несколько типов кадров Ethernet:
Различные типы кадров имеют разные форматы и значения MTU , но могут сосуществовать на одном физическом носителе. Различить типы кадров можно на основе таблицы справа.
Кроме того, все четыре типа кадров Ethernet могут дополнительно содержать тег IEEE 802.1Q для идентификации того, к какой VLAN он принадлежит, и его приоритета ( качества обслуживания ). Эта инкапсуляция определена в спецификации IEEE 802.3ac и увеличивает максимальный размер кадра на 4 октета.
Тег IEEE 802.1Q, если он присутствует, помещается между полями «Адрес источника» и «EtherType» или «Длина». Первые два октета тега — это значение идентификатора протокола тега (TPID), равное 0x8100. Оно расположено в том же месте, что и поле EtherType/Length в нетегированных кадрах, поэтому значение EtherType, равное 0x8100, означает, что кадр помечен, а истинное значение EtherType/Length находится после Q-тега. За TPID следуют два октета, содержащие информацию управления тегами (TCI) (приоритет IEEE 802.1p ( качество обслуживания ) и идентификатор VLAN). За Q-тегом следует остальная часть кадра, используя один из типов, описанных выше.
Кадрирование Ethernet II (также известное как DIX Ethernet , названное в честь DEC , Intel и Xerox , основных участников его разработки [8] ), определяет двухоктетное поле EtherType в кадре Ethernet , которому предшествуют MAC-адреса назначения и источника, которые идентифицирует протокол верхнего уровня , инкапсулированный данными кадра. В частности, значение EtherType 0x0800 указывает, что кадр содержит дейтаграмму IPv4 , 0x0806 указывает на дейтаграмму ARP , а 0x86DD указывает на дейтаграмму IPv6 . Дополнительную информацию см. в разделе «Значения EtherType» .
Поскольку этот отраслевой стандарт прошел формальный процесс стандартизации IEEE , поле EtherType было изменено на поле длины (данных) в новом стандарте 802.3. [g] Поскольку получателю по-прежнему необходимо знать, как интерпретировать кадр, стандарт требует, чтобы заголовок IEEE 802.2 соответствовал длине и определял тип. Много лет спустя стандарт 802.3x-1997 и более поздние версии стандарта 802.3 официально одобрили оба типа кадрирования. Кадрирование Ethernet II является наиболее распространенным в локальных сетях Ethernet из-за его простоты и меньших затрат.
Чтобы некоторые кадры, использующие кадрирование Ethernet II, а некоторые — исходную версию кадра 802.3, могли использоваться в одном и том же сегменте Ethernet, значения EtherType должны быть больше или равны 1536 (0x0600). Это значение было выбрано потому, что максимальная длина поля полезной нагрузки кадра Ethernet 802.3 составляет 1500 октетов (0x05DC). Таким образом, если значение поля больше или равно 1536, кадр должен быть кадром Ethernet II, причем это поле является полем типа. [9] Если оно меньше или равно 1500, это должен быть кадр IEEE 802.3, причем это поле является полем длины. Значения между 1500 и 1536 (исключая) не определены. [10] Это соглашение позволяет программному обеспечению определять, является ли кадр кадром Ethernet II или кадром IEEE 802.3, обеспечивая сосуществование обоих стандартов на одной и той же физической среде.
«Необработанный» формат кадров Novell 802.3 был основан на ранних разработках IEEE 802.3. Novell использовала это как отправную точку для создания первой реализации своего собственного сетевого протокола IPX через Ethernet. Они не использовали заголовок LLC, а запускали пакет IPX сразу после поля длины. Это не соответствует стандарту IEEE 802.3, но поскольку IPX всегда имеет FF в качестве первых двух октетов (в то время как в IEEE 802.2 LLC такой шаблон теоретически возможен, но крайне маловероятен), на практике это обычно сосуществует в проводном режиме с другими реализациями Ethernet. за примечательным исключением некоторых ранних форм DECnet , которых это сбивало с толку.
Novell NetWare использовала этот тип кадра по умолчанию до середины девяностых, и поскольку NetWare тогда была очень широко распространена, а IP — нет, в какой-то момент большая часть мирового трафика Ethernet проходила через «сырой» 802.3, несущий IPX. Начиная с NetWare 4.10, NetWare по умолчанию использует IEEE 802.2 с LLC (тип кадра NetWare Ethernet_802.2) при использовании IPX. [11]
Некоторые протоколы, например, разработанные для стека OSI , работают непосредственно поверх инкапсуляции IEEE 802.2 LLC, которая обеспечивает сетевые услуги как с установлением соединения, так и без установления соединения.
Инкапсуляция IEEE 802.2 LLC в настоящее время не получила широкого распространения в обычных сетях, за исключением крупных корпоративных установок NetWare , которые еще не перешли на NetWare over IP . В прошлом многие корпоративные сети использовали IEEE 802.2 для поддержки мостов прозрачной трансляции между сетями Ethernet и Token Ring или FDDI .
Существует интернет-стандарт для инкапсуляции трафика IPv4 в кадры IEEE 802.2 LLC SAP/SNAP. [12] Он практически никогда не реализуется в Ethernet, хотя используется в FDDI, Token Ring, IEEE 802.11 (за исключением диапазона 5,9 ГГц , где используется EtherType) [13] и других локальных сетях IEEE 802 . IPv6 также можно передавать через Ethernet с использованием IEEE 802.2 LLC SAP/SNAP, но, опять же, он почти никогда не используется.
Изучая заголовок LLC 802.2, можно определить, следует ли за ним заголовок SNAP. Заголовок LLC включает в себя два восьмибитных поля адреса, которые в терминологии OSI называются точками доступа к услугам (SAP); когда для исходного и целевого SAP установлено значение 0xAA, за заголовком LLC следует заголовок SNAP. Заголовок SNAP позволяет использовать значения EtherType со всеми протоколами IEEE 802, а также поддерживает пространства идентификаторов частных протоколов.
В IEEE 802.3x-1997 стандарт IEEE Ethernet был изменен, чтобы явно разрешить использование 16-битного поля после MAC-адреса в качестве поля длины или поля типа.
Набор протоколов AppleTalk v2 в Ethernet (« EtherTalk ») использует IEEE 802.2 LLC + инкапсуляцию SNAP.
Мы можем рассчитать накладные расходы протокола для Ethernet в процентах (размер пакета, включая IPG).
Мы можем рассчитать эффективность протокола для Ethernet.
Максимальная эффективность достигается при максимально допустимом размере полезной нагрузки и составляет:
для нетегированных кадров, поскольку размер пакета составляет максимум 1500 октетов полезной нагрузки + 8 октетов преамбулы + 14 октетов заголовка + 4 октета концевика + минимальный межпакетный промежуток, соответствующий 12 октетам = 1538 октетов. Максимальная эффективность составляет:
при использовании тегов VLAN 802.1Q.
Пропускную способность можно рассчитать по эффективности
где чистая скорость передачи данных физического уровня (скорость передачи данных по проводу) зависит от стандарта физического уровня Ethernet и может составлять 10 Мбит/с, 100 Мбит/с, 1 Гбит/с или 10 Гбит/с. Следовательно, максимальная пропускная способность для 100BASE-TX Ethernet составляет 97,53 Мбит/с без 802.1Q и 97,28 Мбит/с с 802.1Q.
Использование канала — это концепция, которую часто путают с эффективностью протокола. Он учитывает только использование канала, независимо от характера передаваемых данных – либо полезной нагрузки, либо служебных данных. На физическом уровне канал связи и оборудование не знают разницы между кадрами данных и управления. Мы можем рассчитать использование канала :
В общее время учитывается время прохождения туда и обратно по каналу, время обработки на хостах и время передачи данных и подтверждений. Время, потраченное на передачу данных, включает в себя данные и подтверждения.
Короткий кадр — это кадр Ethernet, длина которого меньше минимальной длины IEEE 802.3, равной 64 октетам. Короткие кадры чаще всего возникают в результате коллизий ; другими возможными причинами являются неисправность сетевой карты , опустошение буфера , несоответствие дуплексного режима или проблемы с программным обеспечением. [14]
Коды операций передаются первыми в старшем октете. В каждом октете сначала передаются младший бит. [...] Каждый октет кадра MAC, за исключением FCS, сначала передается младший бит.