在具有普通回送接口的Linux机器上:
$ ifconfig lo lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:36621784 errors:0 dropped:0 overruns:0 frame:0 TX packets:36621784 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:6752024976 (6.2 GiB) TX bytes:6752024976 (6.2 GiB)
当我ping任何127.0.0.0/8范围内的添加地址时,我得到一个回应:
$ ping -c1 127.7.23.4 PING 127.7.23.4 (127.7.23.4) 56(84) bytes of data. 64 bytes from 127.7.23.4: icmp_seq=1 ttl=64 time=0.045 ms --- 127.7.23.4 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.045/0.045/0.045/0.000 ms
这种行为是特别的Linux,因为我没有看到我的Mac OS X Lion机器上。 我没有任何IP别名设置的回环接口,这是我所期望的待办事项这项工作。
为什么会发生这种情况,是否是预期的行为?
Windows也有这种行为。 我想这是rfc 3330的不同解释
127.0.0.0/8 – 该块被分配用作互联网主机回送地址。 由更高级别的协议发送到该块内任何地址的数据报应循环回主机内部。 这通常只使用127.0.0.1/32进行回送,但是任何地方的任何networking都不应该出现该块内的地址[RFC1700,第5页]。
它看起来像Linux解释这意味着127.0.0.0/8范围内的任何(甚至一个未configuration的地址)应该循环回来,从而得到一个ping响应。
行为在RFC 1700中有logging 。 127.7.23.4也是一个回送地址,也分配给本地机器。 (还会分配什么?)
IP地址:: = {<networking号>,<主机号码>}
…
{127,<any>}
内部主机回送地址。 不应该出现在主机之外。
没有要求使这个范围内的所有地址都能工作,但是在处理那些不允许你指定一个端口但只有一个IP地址的协议的时候,它是非常方便的。 拥有多个本地IP地址允许您运行这些服务器的多个实例以供本地使用。
这确实是特定于Linux(也可能是其他操作系统)。
但是,当您阅读RFC 1700或lonetworking掩码设置时,回送networking应被视为A类。
供你参考:
BSD盒(如Mac OS X)仅限于127.0.0.1/32(根据RFC 3300 – 2002年9月的规定,仅为127.0.0.1)。
Windows盒响应127.0.0.0/8(即从127.0.0.1到127.254.255.255)。
所以,这次Windows似乎是对的(直到2002年);)