В каком слое выполняется преобразование big / little endian? - PullRequest
0 голосов
/ 20 июня 2019

Предположим, пакет отправлен по UDP.Мне интересно, в каком слое выполняется преобразование полезных данных в старшие / младшие порядковые номера.

Ответы [ 2 ]

1 голос
/ 20 июня 2019

Почему вы думаете, что сделано сделано?Транспортный протокол не имеет представления о ваших данных, он передает байт .Вы, как разработчик протокола приложения, должны решить и обеспечить отправку ваших данных с определенным порядком байтов.

UDP не знает, что четыре последовательных байта где-то в пакете образуют 32-битное целое число, дляпример.Они могут также формировать четыре 1-байтовых значения, например, кодовые точки UTF-8.Вы хотите, чтобы UDP случайным образом инвертировал ваши строки?

См. Также Отправка пакетов UDP с правильным порядком байтов .

0 голосов
/ 20 июня 2019

«Преобразование в обратном порядке» протокола обычно выполняется на уровне, который обрабатывает протокол.

Например: программа / библиотека NTP сама создает NTP-сообщение в порядке сетевых байтов перед передачей сообщения на уровень UDP (= отправка). Уровень UDP создает заголовок UDP в сетевом порядке байтов, но не меняет полезную нагрузку (= сообщение NTP).

Протоколы нижнего уровня не знают и не заботятся о том, какие протоколы верхнего уровня переносятся в полезной нагрузке. Есть несколько исключений или пограничных случаев, таких как выгрузка контрольной суммы в NIC.

...