为什么可以ping 127.1?


11

我知道IPv6允许省略连续的零。但是IPv4呢?我在Internet上找不到任何对此的引用,包括Wikipedia和RFC 791 – Internet协议。该文档 建议在IPv4地址中使用“前导零可以省略”(搜索术语“省略”)。不够具体。

看看这个shell会话:

[~]$ ping -c 1 127.1
PING 127.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.040 ms

--- 127.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.040/0.040/0.040/0.000 ms
[~]$ ping -c 1 127.0.1
PING 127.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.044 ms

--- 127.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.044/0.044/0.044/0.000 ms
[~]$ ssh 127.1 :
The authenticity of host '127.1 (127.0.0.1)' can't be established.
ECDSA key fingerprint is 04:48:fa:f2:ef:95:7c:35:46:39:2e:d3:89:dd:cd:87.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '127.1' (ECDSA) to the list of known hosts.
alex@127.1's password: 

显然,ping和ssh都将127.1和127.0.1理解为与127.0.0.1相同。在哪里指定?


7
Stack Overflow帖子中链接的此手册页可能就在您的小巷。
nerdwaller

1
那是一种古老的记谱法,但是是的:它确实起作用:-)
Sander Steffann

1
@nerdwaller:请发布答案。(如果您弄清楚原因ping 0.0.0.0ping 0工作方式相同,则加分。)
user1686

Answers:


14

大约一年前,有一个Stack Overflow帖子问类似的问题(此帖子)。

主要原因是inet_aton()手册页)如何将八位位组转换为二进制地址。

A B C D

四个数字部分中的每一个都指定地址的一个字节。字节从左到右分配,以产生二进制地址。

abc

部分a和b指定二进制地址的前两个字节。c部分被解释为16位值,该值定义了二进制地址的最右边两个字节。该符号适用于指定(过时的)B类网络地址。

b

a部分指定了二进制地址的第一个字节。b部分被解释为24位值,该值定义了二进制地址的最右边的三个字节。该符号适用于指定(过时的)C类网络地址。

一种

值a被解释为一个32位值,该值直接存储到二进制地址中,而无需任何字节重新排列。

这不是POSIX.anything定义的-但是它的使用范围非常广泛。


1
太棒了,我还检查了您在Stack Overflow上链接到的帖子。它对如何使用不同的数字系统具有深刻的见解。@grawity Wikipedia表示当前网络为0.0.0.0/8。我假设0.0.0.0/32必须是当前主机,并且ping仅要求/ 32“ networks”。我还没有找到明确的参考。
Alexandre de Verteuil

2
@AlexandredeVerteuil:ping需要主机,而不是网络...所以,对于IPv4是/ 32。
user1686

3

这是古老的分类寻址遗物。127.1表示网络127,主机1。(而且,是127.257合法的,因为网络127可以拥有256个以上的主机。


127.257特别是127.0.1.1,这是我实际上在适用于Windows 8.0的旧KMS服务器激活器上看到的地址
Paul Stelian
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.