首页 > 解决方案 > 如何将网络字节顺序转换为主机字节顺序,反之亦然,用于 C 中的 IPv6 地址?

问题描述

谁能解释ipv6 地址的网络字节顺序和主机字节顺序的概念。

标签: networkingroutingipv6htonl

解决方案


在 IPv6 中,实际上没有区别。

以下假设在 Linux 和 Windows 上使用 C:

在 IPv4 中,地址存储为无符号 32 位整数,因此受系统字节序的影响。因此,它必须先转换为网络字节顺序,然后才能在线发送。

但是 IPv6 地址存储在一个sockaddr_in6结构中,在一个字段in6_addr中,该字段也是一个包含 16 个无符号 8 位字符数组的结构。

因此,由于 IPv6 地址始终有效地按网络字节顺序排列,因此在处理 IPv6 地址时无需进行任何字节顺序转换,例如从getaddrinfo(). 您可以简单地将in6_addr结构视为不透明数据。


推荐阅读