Порядок байт в сети
Чтобы создать интернет, независимый от архитектуры конкретной машины или от сетевого оборудования, мы должны определить стандартное представление данных. Посмотрим, что происходит, когда одна машина посылает 32-битовое целое число другой машине. Физическое оборудование передает последовательность бит от первой машины ко второй, не меняя их порядка. Тем не менее, не все машины хранят 32-битовые целые числа одинаково. В одних (называемых "с наименьшего конца") младший адрес памяти содержит самый младший байт целого числа. В других (называемых "с наибольшего конца") младшая ячейка памяти хранит старший байт числа. А некоторые все еще запоминают целые числа в группах 16-битовых слов, причем младшие адреса содержат младшее слово числа, но байты в этих словах поменялись своими местами. Поэтому, прямое копирование байт с одной машины на другую может изменить значение числа.
Стандартизация порядка байт для целых чисел особенно важна для интернета, так как межсетевые пакеты содержат двоичные числа, указывающие такую информацию, как адрес назначения и длина пакета. Такие числа должны пониматься как отправителем, так и получателем. Протоколы TCP/IP решают проблему порядка байт, определяя стандартный сетевой порядок байт, который должны использовать все машины для двоичных полей в межсетевых пакетах. Каждый ГВМ преобразует двоичные элементы из локального представления в стандартный сетевой порядок перед передачей пакета; он преобразует сетевой порядок байт в свой порядок при приеме пакета. Естественно поле данных пользователя в пакете не обрабатывается по этому стандарту - пользователи вольны форматировать свои данные так, как они пожелают. Конечно, большинство пользователей полагается на стандартные прикладные программы и не сталкивается с проблемой порядка байт напрямую. Межсетевой стандарт порядка байт определяет, что целые числа посылаются таким образом, что самый старший(значимый) байт передается первым(т.е. в стиле "с наибольшего конца"). Если посмотреть на последовательность байт пакета тогда, когда он передается от одной машины к другой, то у двоичного целого в этом пакете самый старший байт находится ближе всего к началу пакета, а самый младший байт находится ближе всего к концу пакета. Было выдвинуто много аргументов в пользу использования того или иного представления данных, и межсетевой стандарт до сих пор время от времени подвергается критике. Тем не менее, все согласились с тем, что такой стандарт необходим, и точная форма его не так уж и важна.