我们中的大多数人都按照很​​久以前被教导的方式来写我们的 IP 地址:127.0.0.110.0.2.1, ...... 但是一段时间后就会变得无聊,不是吗?

幸运的是,有几种写 IP 地址的方法,因此您可以惹恼同事、客户或将其用作绕过某些(输入)过滤器的安全措施。

并非所有行为都是平等的

我首先通过这个小技巧了解了 IP 地址的不同写法。

在 Linux 上:

$ 平 0
PING 0 (127.0.0.1) 56(84) 字节的数据。
来自 127.0.0.1 的 64 个字节:icmp_seq=1 ttl=64 time=0.053 ms
来自 127.0.0.1 的 64 个字节:icmp_seq=2 ttl=64 time=0.037 ms

这会将 `` 翻译成127.0.0.1. 但是,在 Mac 上:

$ 平 0
PING 0 (0.0.0.0):56 个数据字节
ping: sendto: 没有到主机的路由
ping: sendto: 没有到主机的路由

在这里,它将 `` 翻译成 null-route 0.0.0.0

零是可选的

就像在IPv6 地址中一样,IP 地址中的一些零 (0) 是可选的。

$ 平 127.1
PING 127.1 (127.0.0.1):56 个数据字节
来自 127.0.0.1 的 64 个字节:icmp_seq=0 ttl=64 time=0.033 ms
来自 127.0.0.1 的 64 个字节:icmp_seq=1 ttl=64 time=0.085 ms

但请注意,计算机不能只是“猜测”它需要在何处填入零。以这个为例:

$平10.50.1
PING 10.50.1 (10.50.0.1):56 个数据字节
icmp_seq 0 的请求超时

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

IP地址溢出

这是另一个巧妙的技巧。你可以溢出一个数字。

例如:

$平10.0.513
PING 10.0.513 (10.0.2.1):56 个数据字节
来自 10.0.2.1 的 64 个字节:icmp_seq=0 ttl=61 time=10.189 ms
来自 10.0.2.1 的 64 个字节:icmp_seq=1 ttl=61 time=58.119 ms

我们 ping 10.0.513,转换为10.0.2.1。最后一位数字可以解释为2x 256 + 1. 它将值向左移动。

十进制 IP 表示法

我们可以使用我们的 IP 地址的十进制表示。

$平167772673
PING 167772673 (10.0.2.1):56 个数据字节
来自 10.0.2.1 的 64 个字节:icmp_seq=0 ttl=61 time=15.441 ms
来自 10.0.2.1 的 64 个字节:icmp_seq=1 ttl=61 time=4.627 ms

这转化16777267310.0.2.1

十六进制 IP 符号

好吧,如果十进制表示法有效,那么 HEX 也应该有效——对吗?当然可以!

$ 平 0xA000201
PING 0xA000201 (10.0.2.1):56 个数据字节
来自 10.0.2.1 的 64 个字节:icmp_seq=0 ttl=61 time=7.329 ms
来自 10.0.2.1 的 64 个字节:icmp_seq=1 ttl=61 time=18.350 ms

十六进制值A000201转换为10.0.2.1. 通过在值前加上0x,我们表示后面的内容应该被解释为十六进制值。

八进制 IP 符号

以这个为例。

$平10.0.2.010
PING 10.0.2.010 (10.0.2.8):56 个数据字节

请注意最后一个.010八位字节是如何被翻译成的.8

使用 sipcalc 查找这些值

有一个名为sipcalc的有用命令行 IP 计算器,您可以使用它进行十进制和十六进制转换。

 

via https://ma.ttias.be/theres-more-than-one-way-to-write-an-ip-address/

写 IP 地址的方法不止一种
标签: