大家好,我是IT售前工程师Bernie。
本文简要介绍下,在计算机网络中DHCP的技术原理,欢迎阅读。
我们知道,无论是手机、电脑、笔记本,还是其他智能终端,只要连上wifi或者网线,就能够直接上网。当我们查看笔记本的IP信息时,就会显示当前设备的IP地址、网关地址、子网掩码等,这些信息是计算机网络中数据包中必须的,放在数据报头。
但是,我们并没有手动的配置上述信息。
设备的IP是怎么来的呢?
小伙伴们不妨查看下自己的笔记本Inte.NET选项,不出意外的话就会显示“自动获得IT地址的默认配置”。其实,这些IP是通过DHCP服务器下发,自动获取的。
接下来,我们以简单办公场景讲一下DHCP服务的概念和技术原理。
DHCP的英文全称是Dynamic Host Configuration Protocol,动态主机配置协议。
直白一点讲就是:计算机网络中,端设备可以在DHCP服务器上动态获得IP地址、子网掩码和网关地址,以便可以在网络中标注自己的身份,获得上网的资格。
比如一个局域网中,有一台pc和一部手机,双方都连接到路由器。那么,pc和手机都可以从路由器上得到IP地址、网关地址和子网掩码。在这里,路由器就是他们的dhcp服务器。
那么他们是如何获取IP地址的呢?这里要重点讲一下
当一台终端设备,插入网线或者连接WIFI时。在初始化阶段,它是没有IP地址的。那么这时第一个任务就是通过广播的形式寻找子网下的dhcp服务器。
我们知道,在计算机网络中任何一条数据包都是要包含源IP地址、目的IP地址的。这里就矛盾了,因为pc3发送广播消息的目的就是获取IP地址,它既不知道自己的IP地址应该是多少,也不知道dhcp服务器的地址是多少。
这里往往会给这个数据包赋值源IP为0.0.0.0,目的IP为255.255.255.255.
特别说明一点, 0.0.0.0并不是一个真正意义的IP地址,它其实是缺省路由,即:告诉对方我不知自己IP是多少,所以用0.0.0.0代替。
而255.255.255.255也不是一个严格意义的IP地址,它是限制广播地址,即:告诉同一个网段的所有端设备,这里的设备都注意啦!255.255.255.255是不能被路由器转发的,因为它本身并没有太多意义。
这个广播消息会被二层交换机发送到同一个vlan下的所有设备中,包括pc1、pc2、dhcp1和dhcp2。
由于pc1和pc2是端设备,不具备dhcp的功能,他们会自动忽略这个广播消息,
dhcp server1和dhcp server2接收到IP地址获取的请求消息时,他们都会分配一个IP地址、网关地址和掩码等信息给pc3。
这时候,pc3就会接收到两套不同的IP信息,他们都可以正常使用。同一网段中有几个dhcp服务器,就会分配给pc3几套IP地址信息。
注意:这里不仅仅包含IP信息,还包含这个IP的使用期限,过了期限就会自动回收或者自动续期。比如:宽带路由器的dhcp租用周期最小1min,最大是两天,默认值为120min。
上面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也要知道的。
终于到了最后一步,这一步的工作就是确认。
当收到pc3的选择结果后,dhcp server1会更新自己的路由表和mac 地址映射表,同时也会发送一条确认消息给pc3。
由于dhcp2之前分配给pc3的IP地址落选了,那么,它将把IP回收,以便在后续分配给其他的接入设备。同时,也会更新自己的mac地址表和路由表。
以上便是计算机网络终端设备获取DHCP服务的全过程,整个过程包含4个部分:discover、offer、request和ack。他们是层层递进、环环相扣的关系。
特别说明:DHCP服务器分配出去的IP是临时租用!一般情况下,只要不设置租用时间为infinite(永久租用),端设备需要在租期到达50%的时候,给dhcp server发送request数据包更新自己的租用时间。