特别说明一点, 0.0.0.0并不是一个真正意义的IP地址,它其实是缺省路由,即:告诉对方我不知自己IP是多少,所以用0.0.0.0代替。
而255.255.255.255也不是一个严格意义的IP地址,它是限制广播地址,即:告诉同一个网段的所有端设备,这里的设备都注意啦!255.255.255.255是不能被路由器转发的,因为它本身并没有太多意义。
这个广播消息会被二层交换机发送到同一个vlan下的所有设备中,包括pc1、pc2、dhcp1和dhcp2。
第2步:offer
由于pc1和pc2是端设备,不具备dhcp的功能,他们会自动忽略这个广播消息,
dhcp server1和dhcp server2接收到IP地址获取的请求消息时,他们都会分配一个IP地址、网关地址和掩码等信息给pc3。
这时候,pc3就会接收到两套不同的IP信息,他们都可以正常使用。同一网段中有几个dhcp服务器,就会分配给pc3几套IP地址信息。
注意:这里不仅仅包含IP信息,还包含这个IP的使用期限,过了期限就会自动回收或者自动续期。比如:宽带路由器的dhcp租用周期最小1min,最大是两天,默认值为120min。
第3步:request
上面pc3一条广播得到了2套不一样的IP信息,显然它是不能全部霸占的,只能使用1套。于是,pc3会选取其中的一套(一般选择最先到达的那个)。比如IP1的先到达,pc3就会选择IP1作为自己的IP地址信息。
这样就结束了?
并没有!
因为dhcp server1并不知道自己提供的IP地址被选中了,同样,dhcp server2也不知道自己提供的IP地址被淘汰了。
所以需要pc3发一条广播消息告知自己的选择结果。
有的小伙伴可能会感到奇怪,明明pc3已经有了自己的IP了,为何数据报中还是用0.0.0.0.这是因为还没有得到确认,也不能发送单播告知dhcp server1,其他的dhcp server也要知道的。
第4步:ack
终于到了最后一步,这一步的工作就是确认。
当收到pc3的选择结果后,dhcp server1会更新自己的路由表和mac 地址映射表,同时也会发送一条确认消息给pc3。
由于dhcp2之前分配给pc3的IP地址落选了,那么,它将把IP回收,以便在后续分配给其他的接入设备。同时,也会更新自己的mac地址表和路由表。