Задать вопрос
@AlexChAR

Длина payload в ethernet 802.3 кодируется всего двумя байтами. Как?

ethernet 802.3
Фрэйм разбит на сегменты
Преамбула.. дст срц мак там всякие, а потом идут length и payload
length - длинна в байтах всех последующих блоков данных до блока с контрольной суммой. Кодируется двумя байтами!
payload - полезная нагрузка, имеет длину до 1500 байт.

Каким образом можно указать длину в 1500 байт когда максимальное значение которое мы можем указать двумя байтами это 255?
  • Вопрос задан
  • 203 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
GavriKos
@GavriKos
когда максимальное значение которое мы можем указать двумя байтами это 255?

255 это 1 байт.
1111 1111 - 8 бит, 1 байт.
А 2 байта поболе будут )
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Zerg89
1 байт 2^8=255
-1_111 1111 1111 1111 - 16 бит, 2 байта
2 байта (2^16)=2^15=-32 768..32 768 1 бит уходит под отрицательные значения
Ps хотя это 2 байта integer
А так как здесь отрицательные не нужны скорее всего просто 2^16=0..65 535
Ответ написан
Комментировать
@res2001
Developer, ex-admin
1. Максимальное значение, которое можно записать в 2 байта - 0xFFFF, т.е. 65535
2. Если внимательно посмотришь стандарт IEEE 802.3 п.3, то там поле, которое ты называешь length называется Length/Type. Т.е. это не просто length - это такой зверь в двойном обличии. Если значение этих двух байт <=0x600 то это поле воспринимается как length. Если >0x600, то это Type. Под Type в данном случае понимается EtherType. Например для протокола IP EtherType == 0x800. Некоторые значения EtherType можешь посмотреть на вики: https://en.wikipedia.org/wiki/EtherType.
К слову, на сегодняшний день в типичной сети почти всегда это поле интерпретируется как EtherType. В этом случае длина пакета должна быть закодирована на уровне вышестоящего протокола, т.е. где-то там в payload.
Реально у Ethernet есть другой способ определения длины пакета - после завершения передачи происходит удаление сигнала carrierSense и межфреймовая задержка. По этим признакам физика понимает, что пакет получен. После этого уже можно проверить Length/Type, посчитать контрольную сумму и провести другие проверки.
3. Интерпретация Length используется для протокола LLC (IEEE 802.2), если я правильно помню.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы