Big endian или Little endian в сети? - PullRequest
18 голосов
/ 15 июня 2009

В каком порядке байтов происходит передача данных по сети? Это Little Endian или Big Endian? Как он преобразуется в соответствующий порядок байтов, когда данные достигают хоста?

Ответы [ 3 ]

23 голосов
/ 15 июня 2009

«Сетевой порядок байтов» - это Big Endian, и протоколы, такие как TCP, используют его для целочисленных полей (например, номеров портов). Такие функции, как htons и ntohs могут использоваться для преобразования.

Сами по себе данные не имеют порядка байтов, полностью определяемого приложением, если только вы не используете Уровень представления , например XDR.

2 голосов
/ 15 июня 2009

Передается в любом порядке, в котором вы его отправляете.

Традиционно в интернет-протоколах используется обратный порядок байтов, потому что машины, выполняющие большую часть связи, были порядковыми номерами.

Однако, если вы определяете свои собственные структуры для отправки по сети, нет необходимости следовать этому соглашению.

В программировании на С, как правило, для преобразования часто используют макросы htons или ntohs.

1 голос
/ 15 июня 2009

, если вы используете tcp, используя htons ((короткий) порт), вы можете использовать сетевой безопасный протокол (в основном, с прямым порядком байтов) и не заботиться о маленьких и больших порядковых номерах.

если вам нужно конвертировать использовать http://www.codeguru.com/forum/showthread.php?t=292902

Хорошо объяснил

...