Упаковка IP в uint32
Является ли упаковка char IP[4] (192.168.2.1) в uint32 детализированной как часть каких-либо RSI/ISO/ органов стандартизации (т. Е. Кто-нибудь здесь https://en.wikipedia.org/wiki/List_of_technical_standard_organisations)? Я знаю, что это стандарт для разных языков и инструментов, но мне интересно, является ли он частью какого-либо международного стандарта, и если да, то какой? Это должно детализировать, например, используемый порядок байтов.
Нужно знать, как я пишу спецификацию, и я не хочу заново изобретать колесо, описывая технику.
2 ответа
Все IP-адреса (и, фактически, все многобайтовые номера, используемые в стандартном сетевом стеке), отправленные по проводам, находятся в " сетевом порядке", который имеет порядковый номер.
То, как представить четыре байта чего-либо в программе, зависит от программиста, хотя они, как правило, позволяют компилятору решать, какой из них, конечно, использует то, что использует нативное оборудование.
Из чего определяется порядок байтов в сети как big-endian?...
RFC1700 заявил, что так и должно быть. (и определил сетевой порядок байтов как big-endian). Теперь он заменен RFC-3232, но эта часть остается прежней.
В документации интернет-протоколов существует соглашение о том, чтобы выражать числа в десятичном виде и отображать данные в "старшем порядке" [COHEN]. То есть поля описываются слева направо, с наиболее значимым октетом слева и наименее значимым октетом справа.
Ссылка, которую они делают, это
On Holy Wars and a Plea for Peace
Cohen, D.
Computer
Тезисы можно найти на IEN-137 или на этой странице IEEE.
Резюме:
Какой путь выбран, не имеет большого значения. Более важно согласовать порядок, чем согласованный порядок.
Делается вывод, что схемы с прямым и обратным порядком байтов могли быть возможны. Нет лучшей / худшей схемы, и ее можно использовать вместо другой, если она согласована во всей системе / протоколе.
Это зависит от того, куда направляется этот IPv4-адрес.
Для фактического использования IP, то есть в сетевых пакетах, упаковка всегда использует сетевой порядок байтов, т.е.
Если вы используете что-то другое, то вы, конечно, можете определить упаковку так, как хотите.