Answers:
唯一的事情是您不是说“所有地址都应该具有访问权限”,而是在防火墙和/或服务器软件和/或其他安全层(例如tcpwrappers)中完成的。
在这种情况下,0.0.0.0表示“本地计算机上的所有IP地址”(实际上可能是“本地计算机上的所有IPv4地址”)。因此,如果您的网络服务器机器有两个IP地址,即192.168.1.1和10.1.2.1,并且您允许apache之类的网络服务器守护程序在0.0.0.0上进行侦听,则在这两个IP地址上都可以访问它。但只能联系那些IP地址和Web端口。
请注意,在不同的上下文中(路由),0.0.0.0通常表示默认路由(除本地网络中的路由等之外,指向Internet“其余”的路由)。
0.0.0.0
表示仅在/0
0.0.0.0
IP地址的0.0.0.0
含义可能会非常不同,具体取决于使用位置。
0.
)一样,该地址不是有效的地址,不能分配给实际的网络接口。netstat
命令的输出中(这是您所要求的),这意味着给定的套接字正在侦听计算机具有的所有可用IP地址;当一台计算机具有多个IP地址时,套接字只能绑定到特定的地址和端口对,或者绑定到端口和所有地址;如果您在此处看到IP地址,则表示套接字仅在该端口和该特定地址上侦听;如果看到0.0.0.0
,则表示它正在侦听计算机所有地址上的该端口,包括回送一个(127.0.0.1
)。ping 0.0.0.0
在Windows系统上导致错误消息。
curl 0.0.0.0
connection refused
在Arch Linux上产生。ping 0.0.0.0
另一方面,似乎是一个别名ping 127.0.0.1
,可以正常使用。
connection refused
可能是因为curl默认情况下尝试连接到端口80 / tcp。尝试使用来查找打开的端口,nmap -sV localhost
然后使用631 / tcp:进行查找curl 0.0.0.0:631
。
Lee B的答案是正确的,但是如果您有兴趣,这里提供了一些相关的RFC。
0.0.0.0:
根据RFC1122第3.1.2.3节:
现在,使用以下IP地址表示法来概括A,B和C类IP地址的重要特殊情况:
{ <Network-number>, <Host-number> } or { <Network-number>, <Subnet-number>, <Host-number> }
...
(a) { 0, 0 } This host on this network. MUST NOT be sent, except as a source address as part of an initialization procedure by which the host learns its own IP address.
就是这样,“此网络上的此主机” ...正如李B的回答所指出的那样,它转换为主机上所有可用的IP地址。在0.0.0.0上托管服务将自动在每个可寻址接口上托管该服务。
127.0.0.1:
127.0.0.0/8-此块分配为用作Internet主机回送地址。由高级协议发送到该块内任意位置的地址的数据报将在主机内部循环。通常仅使用127.0.0.1/32进行环回即可实现。如[RFC1122]第3.2.1.3节中所述,整个127.0.0.0/8块中的地址不会合法出现在任何地方的任何网络上。
0.0.0.0与回送地址127.0.0.1之间的区别在于,回送地址旨在允许主机本身内具有完全功能的IP接口,而不管其余网络设置(如果有)是什么样子。发送到回送设备的所有流量将立即在其上接收。环回网络并不是指“自己”的主机,而是更像主机中有一个小型网段,设备,进程和套接字可以打开并连接到该网段。