IP 的有趣写法

通常我们学到和看到的都是诸如:127.0.0.1, 10.0.2.1,这样的写法,但是除了这些还有其他的写法吗?

不同系统的特殊IP写法

Linux

$ ping 0
PING 0 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.053 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.037 ms

MAC

$ ping 0
PING 0 (0.0.0.0): 56 data bytes
ping: sendto: No route to host
ping: sendto: No route to host

Windows

> ping 0

正在 Ping 0.0.0.0 具有 32 字节的数据:
PING:传输失败。常见故障。
PING:传输失败。常见故障。
PING:传输失败。常见故障。
PING:传输失败。常见故障。

0.0.0.0 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 0,丢失 = 4 (100% 丢失),

IP 中可选的 0

就像 IPv6,IPv4 中也有一部分 0 是可以省略不写的。

$ ping 127.1
PING 127.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.033 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.085 ms
$ ping 192.168.51

正在 Ping 192.168.0.51 具有 32 字节的数据:

它将 10.50.1 转换为 10.50.0.1,在最后一位数字之前添加必要的零。

当 IP 最后一位 数字溢出

IP 的最后以为超过 255,并且前面短缺,形如:10.513、10.0.513 等

$ ping 10.0.513
PING 10.0.513 (10.0.2.1): 56 data bytes
64 bytes from 10.0.2.1: icmp_seq=0 ttl=61 time=10.189 ms
64 bytes from 10.0.2.1: icmp_seq=1 ttl=61 time=58.119 ms

ping 10.0.513,转换为 10.0.2.1。最后一位数字可以解释为 2 x 256 + 1。它把值移到左边。

十进制 IP 表示法

$ ping 167772673
PING 167772673 (10.0.2.1): 56 data bytes
64 bytes from 10.0.2.1: icmp_seq=0 ttl=61 time=15.441 ms
64 bytes from 10.0.2.1: icmp_seq=1 ttl=61 time=4.627 ms

十六进制 IP 表示法

$ ping 0xA000201
PING 0xA000201 (10.0.2.1): 56 data bytes
64 bytes from 10.0.2.1: icmp_seq=0 ttl=61 time=7.329 ms
64 bytes from 10.0.2.1: icmp_seq=1 ttl=61 time=18.350 ms

八进制 IP 表示

$ ping 10.0.2.010
PING 10.0.2.010 (10.0.2.8): 56 data bytes

末尾的 010 会以八进制进行转换。

有一个有用的命令行IP计算器叫做 sipcalc (开源的),你可以用它来进行十进制和十六进制的转换。

sipcalc: https://github.com/sii/sipcalc

# linux 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×