Как Ethernet узнает, какова длина кадра?


17

Глядя на запись Ethernet в Википедии, я не могу понять, как указано, какова длина кадра Ethernet. Поле заголовка EtherType / Length, очевидно, может указывать либо тип фрейма, либо явную длину, и я предполагаю, что в случае с типом фрейма, он должен сделать какую-то другую логику, чтобы выяснить, как долго пакет. Например, если поле EtherType равно 0x0800, это указывает на полезную нагрузку IPv4, и поэтому принимающая сетевая карта должна будет проверить первые 32 бита полезной нагрузки, чтобы найти длину IP-пакета и, следовательно, выяснить общую длину кадр Ethernet, и знать, когда искать контрольную сумму конца кадра и промежуток между кадрами.

Это звучит правильно? Я также рассмотрел спецификацию IEEE 802.3 для Ethernet (часть 1, во всяком случае), которая, кажется, подтверждает это, но она довольно непрозрачна.


Ответы:


21

Подуровень физического кодирования отвечает за разграничение кадров и отправку их на уровень MAC.

Например, в Gigabit Ethernet схема кодирования 8B / 10B использует 10-битную кодовую группу для кодирования 8-битного байта. Два дополнительных бита сообщают, является ли байт управляющей информацией или данными. Управляющей информацией может быть Конфигурация, Start_of_packet, End_of_packet, IDLE, Carrier_extend, Error_propagation.

Так NIC знает, где начинается и заканчивается кадр. Это также означает, что длина кадра неизвестна до того, как он полностью декодируется, аналогично строке с нулевым символом в Си.


1
Это определено в стандарте IEEE 802.3-2015 (раздел третий), 36.2.4.2 и 36.2.4.15 (среди других мест в этой нечитаемой вещи они называют стандартом;).
Stefanct

1

Статья, на которую вы действительно хотите ответить на свой вопрос: http://en.wikipedia.org/wiki/Ethernet_II_framing ; который говорит:

Поскольку этот промышленный стандарт прошел официальный процесс стандартизации IEEE, поле EtherType было изменено на поле длины (данных) в новом стандарте 802.3. (Исходные пакеты Ethernet определяют их длину с кадрированием, которое его окружает, а не с явным подсчетом длины.) Поскольку получателю пакета все еще нужно знать, как интерпретировать пакет, стандарт требовал, чтобы заголовок IEEE 802.2 следовал за длиной и определял длину тип пакета.


Думаю, мне неясно, что означает «оригинальные Ethernet-пакеты, определяющие их длину с помощью обрамления». Биты преамбулы / начала кадра довольно ясны, но как клиент узнает, что конец кадра достигнут? Как он различает CRC и межкадровый разрыв? Является ли случайный электрический шум IFG легко отличимым от реального сигнала?
dirtside

Конец кадра в «классическом Ethernet» сигнализируется неправильной кодировкой.
Ватин 24.10.10

@womble, статья, на которую вы ссылаетесь, хороша, но цитата, которую вы цитировали, очень вводит в заблуждение вне контекста. Большинство кадров в сети Ethernet сегодня не используют явное поле длины.
Питер Грин

-3

По логике есть только три варианта:

  1. Используя статический размер кадра, как в.
  2. Указание размера фрейма в его заголовке или где-либо еще, или даже ограничение его некоторыми флагами.
  3. Нет отправки кадров вообще

Один из них работает в Ethernet, потому что в настоящее время нет других вариантов для современных сетей;) 1-й и 3-й не подходят для Ethernet, так что вы правы!


-3

Потребовалось время, чтобы решить это один раз, а теперь снова. Не так много информации о нем, что удивительно, поскольку это такой очевидный вопрос. Я наконец остановился на решении, что используются поля длины в заголовках пакетов. Смотрите следующую ссылку

http://www3.rad.com/networks/infrastructure/lans/etherform.htm#_ieee

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.