【发布时间】:2012-03-09 13:32:08
【问题描述】:
我知道可以将 IPv4 中的 IP 写为整数,例如2130706433 而不是 127.0.0.1。
这种可能性的原因是什么?
IPv6 有类似的表示法吗?
我尝试使用ping -6 1 ping ::1,但这不起作用(主机不存在)。
【问题讨论】:
我知道可以将 IPv4 中的 IP 写为整数,例如2130706433 而不是 127.0.0.1。
这种可能性的原因是什么?
IPv6 有类似的表示法吗?
我尝试使用ping -6 1 ping ::1,但这不起作用(主机不存在)。
【问题讨论】:
IPv4 地址可以用多种方式表示。例如,默认环回 IP 可以是以下之一:
第一种表示法(全 8 位点分十进制)被广泛使用,其余的很少使用,但 inet_addrPOSIX 标准函数允许使用。在处理 IPv4 和 IPv6 地址的较新的 inet_ntop/inet_pton POSIX 标准函数中只保留了第一个熟悉的符号。
对于 IPv6,标准定义的 16 位十六进制点分符号带有可选的十进制点分尾(用于嵌入式 IPv4)以及可选的零压缩。
例如:
然后仍然有单个地址的多种表示形式。为避免由此产生的混淆,RFC 5952 建议使用允许唯一表示法的规范形式。
【讨论】:
IPv4 地址只是一个 32 位数字。你可以用任何可以表示这样一个数字的方式来表示它(十进制、十六进制、八进制)。点符号a.b.c.d 更加实用。
您可以对 IPv6 地址做同样的事情,除了那些是 128 位数字 - 以十进制形式更难理解。
通常的工具只会处理通常的符号。十进制不是其中之一。
【讨论】: