菜鸟笔记
提升您的技术认知

IP地址0.0.0.0是什么意思?

严格说来,0.0.0.0已经不是一个真正意义上的IP地址了。
  它表示的是这样一个集合:
  1、所有不清楚的主机和目的网络。这里的“不清楚”是指在本机的路由表里没有特定条目指明如何到达。
  2、对本机来说,它就是一个“收容所”,所有不认识的“三无”人员,一 律送进去。
  3、如果在网络设置中设置了缺省网关,那么Windows系统会自动产生一个目的地址为0.0.0.0的缺省路由。

就是表示所有的IP地址.
比如一个tomcat配置文件中,如果监听的IP地址设置了 0.0.0.0 就表示你的这个tomcat服务器监听在本机的所有IP地址上,通过任何一个IP地址都可以访问到.
如果本地的IP地址有 192.168.1.10, 172.16.2.10,那么访问你这个tomcat就可以 http://192.168.1.10:8080/http://172.16.2.10:8080/ 都可以访问

参考RFC文档:

0.0.0.0/8 - Addresses in this block refer to source hosts on “this”
network. Address 0.0.0.0/32 may be used as a source address for this
host on this network; other addresses within 0.0.0.0/8 may be used to
refer to specified hosts on this network ([RFC1122], Section 3.2.1.3).

根据RFC文档描述,它不只是代表本机,0.0.0.0/8可以表示本网络中的所有主机,0.0.0.0/32可以用作本机的源地址,0.0.0.0/8也可表示本网络上的某个特定主机,综合起来可以说0.0.0.0表示整个网络。它的作用是帮助路由器发送路由表中无法查询的包。如果设置了全零网络的路由,路由表中无法查询的包都将送到全零网络的路由中去。

在路由器配置中可用0.0.0.0/0表示默认路由,作用是帮助路由器发送路由表中无法查询的包。如果设置了全零网络的路由,路由表中无法查询的包都将送到全零网络的路由中去。严格说来,0.0.0.0已经不是一个真正意义上的IP地址了。它表示的是这样一个集合:所有未知的主机和目的网络。这里的“未知”是指在本机的路由表里没有特定条目指明如何到达

关于IP 0.0.0.0

其实在ip v4 中,这个地址不不合法的,但是在我们现在的计算机系统中,这个地址其实是很重要的。

我直接说两种常用的地方

场景一:网络地址

我们直接看一个命令,在windows中

//打印本机的TCP连接情况
netstat -ano

我们看到有0.0.0.0:80 和 0.0.0.0:0 ,Local Address代表是本地地址,Foreign Address是远端地址。
这里是apache 的服务器在侦听本地的80端口,但这里显示的ip是0.0.0.0,意思是如果本机有多个ip地址,数据都会通过80端口发送到服务器,所以这个地址是代表所有ip地址的意思,在foreign address那里,就代表所有的ip,后面的:0代表接受所有端口,在早期的系统中是允许Socket只接受特定的IP地址和端口的连接请求的。

场景二:路由表

查看系统的路由表

route print

在路由表中0.0.0.0代表默认路由,就是在系统中没有设置路由的时候自动选择的路由。