我知道在IPv4中可以将IP地址写成整数形式,例如2130706433
而不是127.0.0.1
。
这种可能性的原因是什么?
在IPv6中是否有类似的表示方法?
我尝试过用ping -6 1
命令去ping ::1
,但是失败了(主机不存在)。
IPv4地址可以用多种方式表示。例如默认环回IP可以是以下之一:
第一种表示法(8位十进制点分)被广泛使用,其他表示法虽然少用但允许使用inet_addr POSIX标准函数。新的inet_ntop/inet_pton POSIX标准函数处理IPv4和IPv6地址时只保留了第一种熟悉的表示法。
对于IPv6,标准定义了16位十六进制点分表示法,其中可选的十进制点分尾缀(用于嵌入IPv4)和可选的零压缩。
例如:
然后仍有多种表示单个地址的方法。为避免混淆,RFC 5952建议使用规范形式以获得唯一表示法。
IPv4地址只是一个32位的数字。您可以用任何表示此类数字的方式来表示它(十进制,十六进制,八进制)。点分十进制表示法更实用。
您可以对IPv6地址执行相同的操作,只是这些地址是128位的数字——用十进制形式更难理解。
通常的工具只会处理通常的表示法。 十进制不属于这些表示法之一。