不常见的IP表示法

3

我知道在IPv4中可以将IP地址写成整数形式,例如2130706433而不是127.0.0.1

这种可能性的原因是什么?

在IPv6中是否有类似的表示方法?

我尝试过用ping -6 1命令去ping ::1,但是失败了(主机不存在)。

2个回答

4

IPv4地址可以用多种方式表示。例如默认环回IP可以是以下之一:

  • 127.0.0.1
  • 0177.0.0.1
  • 0x7f.0.0.1
  • 127.0.1
  • 127.1
  • 2130706433
  • 017700000001
  • 0x7f000001

第一种表示法(8位十进制点分)被广泛使用,其他表示法虽然少用但允许使用inet_addr POSIX标准函数。新的inet_ntop/inet_pton POSIX标准函数处理IPv4和IPv6地址时只保留了第一种熟悉的表示法。

对于IPv6,标准定义了16位十六进制点分表示法,其中可选的十进制点分尾缀(用于嵌入IPv4)和可选的零压缩。

例如:

  • 2001:0db8:85a3:0000:0000:8a2e:9370:7334
  • 2001:0db8:85a3::8a2e:9370:7334

然后仍有多种表示单个地址的方法。为避免混淆,RFC 5952建议使用规范形式以获得唯一表示法。


1

IPv4地址只是一个32位的数字。您可以用任何表示此类数字的方式来表示它(十进制,十六进制,八进制)。点分十进制表示法更实用。

您可以对IPv6地址执行相同的操作,只是这些地址是128位的数字——用十进制形式更难理解。

通常的工具只会处理通常的表示法。 十进制不属于这些表示法之一。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接