ping 1.1 如何转换为 ping 1.0.0.1?

网络工程 ipv4
2021-07-05 11:23:23

我需要这些 ip 地址速记的规则。

C:\Users\avina>ping 1.1

Pinging 1.0.0.1 with 32 bytes of data:
Reply from 1.0.0.1: bytes=32 time=3ms TTL=58
Reply from 1.0.0.1: bytes=32 time=4ms TTL=58
Reply from 1.0.0.1: bytes=32 time=4ms TTL=58
Reply from 1.0.0.1: bytes=32 time=5ms TTL=58

Ping statistics for 1.0.0.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 3ms, Maximum = 5ms, Average = 4ms
2个回答

这是有类 IPv4 网络时代的旧遗物。

如果没有子网划分,只有一个 B 类网络,主机地址有 2 个八位字节,在某些情况下,对所有主机使用线性编号 0-65535 (0000h-FFFFh) 会很方便,而不是两个独立的数字。(至少这就是我认为的原因。)

因此x.y.(z*256+t),除了通常的x.y.z.t. 例如,地址 128.42.1.6 可以写为“128.42.262”。

这同样适用于 A 类地址x.(y*65536+z*256+t),例如,地址 10.1.33.27 可以写为“10.74011”。

(作为旁注,出于某种原因,它也会接受八进制和十六进制的数字。实际上,如果你用十六进制写上面的例子会更清楚:10.1.33.27 是“0xA.0x1.0x21.0x1B”,而 10.74011 是“0xA.0x1211B”。)

这在许多忠实地复制相同 IP 地址解析代码的系统中幸存下来,包括 Windows 或 Linux(最近才从 OpenBSD 中清除)。

这篇超级用户帖子更详细地描述了它:https : //superuser.com/revisions/486904/3

这遵循(很少使用)约定,即0可以在书面中省略中间八位字节 - 这在 IPv6 中使用双重::符号更为突出

1.1扩展为1.0.0.1like 例如127.1扩展为127.0.0.1. 同样a.b.c扩展为a.b.0.c甚至只是a扩展为0.0.0.a(与无符号 32 位表示法一致)。

实际上,IPv4 地址是一个无符号的 32 位整数。常见的a.b.c.d符号是真的a<<24|b<<16|c<<8|d当 onlya.b被使用时,它是a<<24|ba.b.c真的a<<24|b<<16|c(谢谢你!)