передача битов в дейтаграмме ip (IPv4) - PullRequest
2 голосов
/ 03 сентября 2010

Биты в Ethernet передаются первым LSB, но дейтаграмма IPv4 должна передаваться в порядке байтов с прямым порядком байтов.

например. предположим, что Ethernet-кадр с адресом назначения равен 12-34-56-78-9A-BC, переносящим IP-дейтаграмму в поле данных. Как я понимаю, в следующем порядке будут передаваться биты:

preamble-SFD-destination addr ---- (остаток заголовка ethernet) ---- (данные ethernet)

preamble-SFD-destination addr ---- (остаток заголовка Ethernet) ---- версия ---- длина заголовка ---- (остаток дейтаграммы IP)

preamble-SFD-12-34-56-78-9A-BC ---- (остальная часть заголовка Ethernet) ---- 4 ---- 15 ---- (остальная часть дейтаграммы IP)

Вопрос 1: Какая из следующих передач верна?

передача кадра Ethernet по проводам с LSB в каждом байте первым

preamble-SFD-01001000 00101100 01101010 00011110 01011001 00111101 ---- (остальная часть заголовка Ethernet) ---- 11110010 ---- (остальная часть дейтаграммы IP)

передача кадра Ethernet по проводам с LSB в каждом байте вначале, но заголовок IP передается как MSB в каждом байте вначале

preamble-SFD-01001000 00101100 01101010 00011110 01011001 00111101 ---- (остальная часть заголовка Ethernet) ---- 01001111 ---- (остальная часть дейтаграммы IP)

Вопрос 2: Поскольку кадр Ethernet передается с LSB в каждом байте первым, будут ли биты в части данных (датаграмма IPv4) передаваться как LSB в каждом байте вначале?

Если да, почему мы говорим, что дейтаграмма IPv4 передается в порядке байтов с прямым порядком байтов

1 Ответ

2 голосов
/ 04 сентября 2010

Порядок байтов с прямым порядком байтов в дейтаграмме IPv4 не имеет никакого отношения к порядку битов в проводе.

Логически, думайте о кадре Ethernet как о последовательности байтов, пока не дойдете до физического уровня.

Некоторые технологии физического уровня Ethernet (более старые, более медленные) обеспечивают прямое преобразование каждого байта в 8-битный в проводе, в первую очередь младший бит. (Как только вы доберетесь до скоростей 1G / 10G, все будет просто ...)

В вашем примере, с версией = 4 и длиной заголовка = 15, первый байт дейтаграммы IP будет 0x4F, который будет передаваться как 11110010.


«Порядок байтов с прямым порядком байтов» относится к порядку байтов в многобайтовых полях.

Например: поле «Общая длина» в заголовке IPv4 представляет собой 16-разрядное значение, занимающее байты 2 и 3. Если общая длина составляет 1000 байтов - 0x3E8 в шестнадцатеричном виде - это будет отправлено как 0x03 (байт 2) затем 0xE8 (байт 3). (Принимая во внимание, что если бы он был прямым порядком байтов, это было бы 0xE8 в байте 2 и 0x03 в байте 3.)

...