图解DHCP协议,搞懂你的电脑/手机如何自动获取IP的

大家好,我是IT售前工程师Bernie 。
本文简要介绍下,在计算机网络中DHCP的技术原理,欢迎阅读 。
我们知道,无论是手机、电脑、笔记本,还是其他智能终端,只要连上wifi或者网线,就能够直接上网 。当我们查看笔记本的IP信息时,就会显示当前设备的IP地址、网关地址、子网掩码等,这些信息是计算机网络中数据包中必须的,放在数据报头 。
 

图解DHCP协议,搞懂你的电脑/手机如何自动获取IP的

文章插图
 
但是,我们并没有手动的配置上述信息 。
设备的IP是怎么来的呢?
小伙伴们不妨查看下自己的笔记本Inte.NET选项,不出意外的话就会显示“自动获得IT地址的默认配置” 。其实,这些IP是通过DHCP服务器下发,自动获取的 。
【图解DHCP协议,搞懂你的电脑/手机如何自动获取IP的】 
图解DHCP协议,搞懂你的电脑/手机如何自动获取IP的

文章插图
 
接下来,我们以简单办公场景讲一下DHCP服务的概念和技术原理 。
什么是DHCP?DHCP的英文全称是Dynamic Host Configuration Protocol,动态主机配置协议 。
直白一点讲就是:计算机网络中,端设备可以在DHCP服务器上动态获得IP地址、子网掩码和网关地址,以便可以在网络中标注自己的身份,获得上网的资格 。
比如一个局域网中,有一台pc和一部手机,双方都连接到路由器 。那么,pc和手机都可以从路由器上得到IP地址、网关地址和子网掩码 。在这里,路由器就是他们的dhcp服务器 。
 
图解DHCP协议,搞懂你的电脑/手机如何自动获取IP的

文章插图
 
那么他们是如何获取IP地址的呢?这里要重点讲一下
DHCP服务原理第1步:discover当一台终端设备,插入网线或者连接WIFI时 。在初始化阶段,它是没有IP地址的 。那么这时第一个任务就是通过广播的形式寻找子网下的dhcp服务器 。
我们知道,在计算机网络中任何一条数据包都是要包含源IP地址、目的IP地址的 。这里就矛盾了,因为pc3发送广播消息的目的就是获取IP地址,它既不知道自己的IP地址应该是多少,也不知道dhcp服务器的地址是多少 。
这里往往会给这个数据包赋值源IP为0.0.0.0,目的IP为255.255.255.255.
 
图解DHCP协议,搞懂你的电脑/手机如何自动获取IP的

文章插图
 
特别说明一点,0.0.0.0并不是一个真正意义的IP地址,它其实是缺省路由,即:告诉对方我不知自己IP是多少,所以用0.0.0.0代替 。
而255.255.255.255也不是一个严格意义的IP地址,它是限制广播地址,即:告诉同一个网段的所有端设备,这里的设备都注意啦!255.255.255.255是不能被路由器转发的,因为它本身并没有太多意义 。
这个广播消息会被二层交换机发送到同一个vlan下的所有设备中,包括pc1、pc2、dhcp1和dhcp2 。
 
图解DHCP协议,搞懂你的电脑/手机如何自动获取IP的

文章插图
 
第2步:offer由于pc1和pc2是端设备,不具备dhcp的功能,他们会自动忽略这个广播消息,
dhcp server1和dhcp server2接收到IP地址获取的请求消息时,他们都会分配一个IP地址、网关地址和掩码等信息给pc3 。
这时候,pc3就会接收到两套不同的IP信息,他们都可以正常使用 。同一网段中有几个dhcp服务器,就会分配给pc3几套IP地址信息 。
 
图解DHCP协议,搞懂你的电脑/手机如何自动获取IP的

文章插图
 
注意:这里不仅仅包含IP信息,还包含这个IP的使用期限,过了期限就会自动回收或者自动续期 。比如:宽带路由器的dhcp租用周期最小1min,最大是两天,默认值为120min 。
第3步:request上面pc3一条广播得到了2套不一样的IP信息,显然它是不能全部霸占的,只能使用1套 。于是,pc3会选取其中的一套(一般选择最先到达的那个) 。比如IP1的先到达,pc3就会选择IP1作为自己的IP地址信息 。
这样就结束了?
并没有!
因为dhcp server1并不知道自己提供的IP地址被选中了,同样,dhcp server2也不知道自己提供的IP地址被淘汰了 。
所以需要pc3发一条广播消息告知自己的选择结果 。
 
图解DHCP协议,搞懂你的电脑/手机如何自动获取IP的

文章插图
 
有的小伙伴可能会感到奇怪,明明pc3已经有了自己的IP了,为何数据报中还是用0.0.0.0.这是因为还没有得到确认,也不能发送单播告知dhcp server1,其他的dhcp server也要知道的 。


推荐阅读