IP地址的最后一段

IP地址的最后一段,ip,ping,Ip,Ping,我正在编写ping实用程序来检查连接。我们的IP范围从X.X.X.0到X.X.X.24 Ping X.X.X.08-提供未知主机 Ping X.X.X.008-提供未知主机 Ping X.X.X.8-获得成功响应 最后一个八位字节应该有多少位 但是当我ping X.X.X.007或X.X.X.07或X.X.X.7工作时,我得到了成功的响应 能给我缺少的东西遮光吗?通常,最后一个八位组是X.X.X.001还是.01或.1并不重要。 请参见192.168.0.1和.01上的ping结果以及.00

我正在编写ping实用程序来检查连接。我们的IP范围从X.X.X.0到X.X.X.24

Ping X.X.X.08
-提供未知主机

Ping X.X.X.008
-提供未知主机

Ping X.X.X.8
-获得成功响应

最后一个八位字节应该有多少位


但是当我ping X.X.X.007或X.X.X.07或X.X.X.7工作时,我得到了成功的响应


能给我缺少的东西遮光吗?

通常,最后一个八位组是X.X.X.001还是.01或.1并不重要。 请参见192.168.0.1和.01上的ping结果以及.001=>它们的结果都是.1

通常,最后一个八位字节是X.X.X.001还是.01或.1并不重要。 请参见192.168.0.1和.01上的ping结果以及.001=>它们的结果都是.1
这几乎完全取决于
ping的实现,但最可能的原因是
08
被视为八进制数,因为它以
0
开头

而且,由于有效的八进制数字限制为
0..7
,因此它假定它不是一个数字IP地址,而是一个要查找的名称(例如,在DNS中)

此八进制行为可通过以下记录进行确认(在Windows下):

C:\Users\Pax> ping 192.168.1.061
Pinging 192.168.1.49 with 32 bytes of data:
Reply from 192.168.1.61: Destination host unreachable.
:
由于
618(6x8+1)=4910,因此从输出的第一行开始,
061
似乎被视为八进制。随后的几行虽然声称正在ping
.61
地址,但都是假的。这是因为这是我的实际机器,如果我在没有前导零的情况下运行,它工作正常:

C:\Users\Pax>ping 192.168.1.61
Pinging 192.168.1.61 with 32 bytes of data:
Reply from 192.168.1.61: bytes=32 time<1ms TTL=128
:
C:\Users\Pax>ping 192.168.1.61
使用32字节数据ping 192.168.1.61:

192.168.1.61回复:bytes=32 time这几乎完全取决于
ping
的实现,但最可能的原因是
08
被视为八进制数,因为它以
0
开头

而且,由于有效的八进制数字限制为
0..7
,因此它假定它不是一个数字IP地址,而是一个要查找的名称(例如,在DNS中)

此八进制行为可通过以下记录进行确认(在Windows下):

C:\Users\Pax> ping 192.168.1.061
Pinging 192.168.1.49 with 32 bytes of data:
Reply from 192.168.1.61: Destination host unreachable.
:
由于
618(6x8+1)=4910,因此从输出的第一行开始,
061
似乎被视为八进制。随后的几行虽然声称正在ping
.61
地址,但都是假的。这是因为这是我的实际机器,如果我在没有前导零的情况下运行,它工作正常:

C:\Users\Pax>ping 192.168.1.61
Pinging 192.168.1.61 with 32 bytes of data:
Reply from 192.168.1.61: bytes=32 time<1ms TTL=128
:
C:\Users\Pax>ping 192.168.1.61
使用32字节数据ping 192.168.1.61:

从192.168.1.61回复:bytes=32 times我怀疑这只是因为十进制1和八进制1是相同的东西:-)我怀疑这只是因为十进制1和八进制1是相同的东西:-)明白了。目前我没有在任何零的前面加前缀,如果它有意义的话。所以在代码中,为了安全起见,当最后一段小于10时,不加前缀是有意义的。谢谢@paxdiablo@jeevjyotsinghchhabda,我宁愿建议不在任何段前面加零,而不仅仅是最后一个。例如,
192.168.10.1
192.168.010.1
是两个完全不同的IP地址。后者与
192.168.8.1
相同。在我的例子中,我为给定的Ip范围生成Ip,所以我只需要处理最后一个八位元。谢谢你。目前我没有在任何零的前面加前缀,如果它有意义的话。所以在代码中,为了安全起见,当最后一段小于10时,不加前缀是有意义的。谢谢@paxdiablo@jeevjyotsinghchhabda,我宁愿建议不在任何段前面加零,而不仅仅是最后一个。例如,
192.168.10.1
192.168.010.1
是两个完全不同的IP地址。后者与
192.168.8.1
相同。在我的例子中,我为给定的Ip范围生成Ip,所以我只需要处理最后一个八位元。再次感谢