0%

DHCP协议简要记录

动态主机设置协议(英语:Dynamic Host Configuration Protocol,缩写:DHCP),又称动态主机组态协定,是一个用于IP网络的网络协议,位于OSI模型的应用层,使用UDP协议工作,主要有两个用途:

  • 用于内部网或网络服务供应商自动分配IP地址给用户;
  • 用于内部网管理员对所有电脑作中央管理。

DHCP分配机制

DHCP提供了两种地址分配机制,可以根据网络需求为不同的客户端选择不同的分配策略。

  • 动态分配机制:通过DHCP为客户端分配一个有使用期限的IP地址。若客户端没有及时续约,到达使用期限后,该IP地址则可能会被其它客户端使用。
  • 静态分配机制:通过DHCP为特定的客户端分配固定的IP地址。该IP地址可被此客户端永久使用

DHCP服务端为DHCP客户端分配IP地址时,采用的顺序如下:

  • DHCP服务端中与DHCP客户端的MAC地址静态绑定的IP地址;
  • DHCP客户端曾经使用过的IP地址;
  • 最先找到的可用IP地址;
  • 若无可用的IP地址,则依次查询超过租期、发生冲突的IP地址,若找到就进行分配,否则报错处理。

因此,DHCP客户端重启后,也能获得相同的IP地址。

DHCP基本流程

DHCP协议报文采用UDP方式封装,DHCP服务端侦听67号端口,DHCP客户端侦听68号端口。

DHCP的基本工作流程分为4个阶段:发现阶段、提供阶段、请求阶段、确认阶段。

发现阶段

DHCP客户端在本地网段中广播一个DHCP Discover报文来寻找能够分配IP地址的DHCP服务端。

因为客户端此时还不知道自己以及服务端的地址,所以源IP地址0.0.0.0目标MAC地址255.255.255.255,本地网段中的每一台主机均能收到报文,但只有DHCP服务端才会响应。

DHCP Discover报文还带有一个XID字段用于辨别发送端和接收端。

提供阶段

本地网段的DHCP服务端收到Discover报文后,通过广播发送DHCP Offer报文,目标MAC地址255.255.255.255,报文中包含了服务端提供的IP地址、租期等信息。

DHCP客户端通过对比DHCP Discover报文和DHCP Offer报文中的XID字段是否相同,来判断DHCP Offer是否发送给自己。

请求阶段

若本地网段中存在多个DHCP服务端,则每个DHCP服务端均会回应DHCP Offer报文。通常,DHCP客户端会选择最先收到的DHCP Offer报文,并广播DHCP Request报文来表明选择哪个DHCP服务端。

由于还没得到DHCP服务端的最终确认,DHCP客户端依然以0.0.0.0为源IP地址、255.255.255.255为目标MAC地址来进行广播

若DHCP客户端在一定时间内一直没收到DHCP Offer报文,则重新发送DHCP Discover报文。

确认阶段

DHCP服务端收到DHCP Request广播报文后,发送DHCP Ack报文作为回应,DHCP Ack报文包含有服务端提供的IP地址和其它网络参数。DHCP Ack报文和DHCP Offer报文的参数不能有冲突,否则DHCP服务端会回应DHCP Nak报文。

当DHCP客户端收到DHCP Ack报文后,会发送免费ARP报文来探测IP地址是否正被其它客户端使用。

另外,除了DHCP客户端选择的DHCP服务端外,其它服务端都将收回此前为客户端提供的IP地址。

DHCP租期

DHCP服务端每次为DHCP客户端分配一个IP地址时,会约定一个IP地址的租期,通常是24小时。

若设定T1时刻是租期到一半的时候,T2时刻是租期到87.5%的时候;在T1时刻,DHCP客户端会单播一个DHCP Request报文给DHCP服务端,请求续租IP地址,若客户端收到服务端回应的DHCP Ack报文,则表示续租成功;若直到T2时刻,DHCP客户端还没收到DHCP Ack报文,就会广播一个DHCP Request报文,继续请求续租IP地址,若客户端收到DHCP Ack报文,则表示续租成功;

若直到租期到期,DHCP客户端都没收到DHCP Ack报文,就必须停止使用原来的IP地址。DHCP客户端将从发现阶段开始,重新申请一个IP地址。

DHCP报文(补充)

DHCP主要的报文类型有8种,常见的5种报文类型有:DHCP DiscoverDHCP OfferDHCP RequestDHCP AckDHCP Release,用得少的3种报文类型有:DHCP NakDHCP DeclineDHCP Inform

  • DHCP Decline报文

    当DHCP客户端收到DHCP Ack报文后,会发送免费ARP报文,若检测到申请的IP地址正被其它客户端使用,则DHCP客户端发送DHCP Decline报文,拒绝分配的IP地址,并重新向DHCP服务端申请IP地址。

  • DHCP Release报文

    当DHCP客户端想要释放获得的IP地址时,就向DHCP服务端发送DHCP Release报文,DHCP服务端收到报文后,可将该IP地址分配给其它客户端。

  • DHCP Inform报文

    DHCP客户端通过手动方式获得IP地址后,还想向DHCP服务端获取更多网络参数(例如默认网关地址、DNS服务器地址)时,客户端就向服务端发送DHCP Inform报文进行申请。

客户端状态机


参考资料

37 张图详解 DHCP :给你 IP 地址的隐形人

DHCP工作原理

DHCP原理及配置

DHCP基本概念

动态主机设置协议- 维基百科,自由的百科全书