不常见的 IP 符号

rek*_*ire 3 ip ipv4 ipv6 notation

我知道可以将 IPv4 中的 IP 写为整数,例如2130706433而不是127.0.0.1

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

IPv6 有类似的表示法吗?

我尝试ping -6 1ping ::1,但这不起作用(主机不存在)。

jll*_*gre 5

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 标准函数允许。在处理 IPv4 和 IPv6 地址的较新的inet_ntop/inet_pton POSIX 标准函数中,仅保留了第一个熟悉的符号。

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

例如:

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

那么单个地址仍然有多种表示形式。为了避免由此产生的混乱,RFC 5952建议采用允许唯一符号的规范形式。