Как преобразовать порядок сетевых байтов в порядок байтов хоста и наоборот для адресов IPv6 в C?

Может ли кто-нибудь объяснить концепцию сетевого порядка байтов и порядка байтов хоста для адресов ipv6.

1 ответ

В IPv6 фактически нет разницы.

Следующее предполагает C на Linux и Windows:

В IPv4 адрес хранится как 32-разрядное целое число без знака, поэтому на него влияет порядковый номер системы. Поэтому он должен быть преобразован в сетевой порядок байтов, прежде чем он может быть отправлен по проводам.

Но адрес IPv6 хранится в sockaddr_in6 структура, в поле in6_addr которая также является структурой, содержащей массив из 16 беззнаковых 8-битных символов.

Поэтому, поскольку адрес IPv6 всегда эффективно в порядке байтов в сети, нет необходимости выполнять какое-либо преобразование порядка байтов при работе с адресами IPv6, например, возвращенными из getaddrinfo(), Вы можете просто относиться к in6_addr структура как непрозрачные данные.

Другие вопросы по тегам