在我们电脑的ip配置里,有静态配置 ip 地址和动态获取 ip 地址两种选择。
![5a49081192ad671e4cfc5a2492888ef1.png](https://i-blog.csdnimg.cn/blog_migrate/ee74c9803e3bcd9a9ffe8a512637ff1c.jpeg)
我敢保证绝大部分人使用的都是动态获取 ip 地址,因为如果自己静态配置的话,容易出错,例如你不小心配置了一个已经被其他人在使用的 ip 地址。所以我们一般选择的是动态获取 ip 地址。注意,这里的 ip 地址不仅仅是指主机的唯一标识,还指DNS、网关等 ip 地址。
![30de280dc2a619b62545e691ae33bcd7.png](https://i-blog.csdnimg.cn/blog_migrate/aac2bdb3d96a8554716c1233b63a8f7f.jpeg)
对于动态获取 ip 地址,如果你的电脑关机重启了之后,此时可以说你的电脑如同一个初生的婴儿,啥 ip 也没有。这个时候最重要的事情就是让自己获得一个 ip ,好让自己可以去冲浪,可是问题来了,你该给谁发送报文以此来获取 ip 呢?
有人可以会说,我可以给 DHCP 服务器发送一个报文来动态获取 ip,然而问题是,你知道 DHCP 服务器的 ip 是多少吗?你不知道,你是一个刚出生的婴儿,你啥也不知道。
居然我们不知道该找谁来给我们分配一个 ip 地址,那就只能暴力一点,发个广播吧,告诉所有人,我急需一个 ip 地址。于是,我们发了一个广播通知了所有人。
![cfeb48d87127eedf05934aa4c87e2303.png](https://i-blog.csdnimg.cn/blog_migrate/ad3866f018452ba43276e9f2227f755a.jpeg)
目的 ip 填 255.255.255.255 代表这是一个广播报文,会发给局域网内的所有主机。其他主机收到广播报文之后,会进行判断这个广播报文是否是发给自己的,如果是发给自己的,则进行处理,否则就把这个广播报文丢弃。
这个时候, DHCP 服务器终于收到了我的广播,这个时候问题来了,DHCP服务器是如何知道我是来请求一个 ip 的呢?
为了解决这个问题,我们需要在报文里做一个标记,告诉 DHCP服务器我是来请求报文的,于是,啥也没有的我,在报文的源地址里填了 0.0.0.0。当DHCP服务器看到报文的源地址是 0.0.0.0时, 就知道我还没有被分配过 ip,急需一个ip来去冲浪了。
![e2b90f17ab40241b872e2e29aaded229.png](https://i-blog.csdnimg.cn/blog_migrate/f09f45712cd791490be0ea28a112d898.jpeg)
于是,DHCP服务器赶紧找了一个没有被使用ip地址发给我,并且把这个 ip 地址标记为 已使用的状态。
有人可能会说,我没有 ip 地址,DHCP服务器怎么发送给我呢?好吧,我没有 ip 地址,但我有全球唯一的 Mac地址啊。这样,我就能顺利着拿到我的 各种 ip参数了。
![e89bef03dd9acc6555411b6eba23879c.png](https://i-blog.csdnimg.cn/blog_migrate/c21f88165ca5d670f0237b78fba06b86.jpeg)
总结下:
255.255.255.255这个地址一般用来广播的时候使用,而0.0.0.0这个地址可以代表这是一个还没有分配 ip 的主机。
不过0.0.0.0还有其他作用,代表主机还没有分配ip地址只是其中的一个用处。例如:充当默认路由来使用,当一个路由器要发送路由表中无法查询的包时,如果设置了全零网络的路由时,我们就可以把这个包丢给全零网络的路由。