DHCP工作原理

客户端通过DHCP服务器获取地址参数主要有三个场景:首次接入网络的客户端获取地址,DHCP客户端重用曾经使用过的地址和DHCP客户端希望租期到期后继续使用该地址。

  • 首次接入网络的客户端获取地址

无中继场景DHCP客户端首次接入网络

在没有部署DHCP中继的场景下,首次接入网络DHCP客户端与DHCP服务器的报文交互过程如图1所示。

图1无中继场景中DHCP客户端首次接入网络的报文交互示意图

第一步:发现阶段

首次接入网络的DHCP客户端以广播方式发送DHCP DISCOVER报文给同一网段内的所有设备。

DHCP DISCOVER报文中携带了客户端的MAC地址(chaddr字段)、需要请求的参数列表选项(Option55)、广播标志位(flags字段)等信息。

第二步:提供阶段

与DHCP客户端位于同一网段的DHCP服务器都会接收到DHCP DISCOVER报文,DHCP服务器从跟接收DHCP DISCOVER报文接口的IP地址处于同一网段的地址池中选择一个可用的IP地址,然后通过DHCP OFFER报文发送给DHCP客户端。

为了防止分配出去的IP地址与现网地址冲突,DHCP服务器在发送DHCP OFFER报文前,通过发送源地址为DHCP服务器IP地址、目的地址为预分配出去IP地址的ICMP ECHO REQUEST报文,进行地址冲突探测:

  1. 在指定的时间内没有收到应答报文,表示网络中没有客户端使用这个IP地址,将地址分配给客户端;

  2. 收到应答报文,表示网络中已经使用此IP地址,则把此地址列为冲突地址,然后等待重新接收到DHCP DISCOVER报文后按照前面介绍的选择IP地址的优先顺序重新选择可用的IP地址。


DHCP服务器在地址池中为客户端分配IP地址的顺序如下:

  1. DHCP服务器上已配置的与客户端MAC地址静态绑定的IP地址。

  2. 客户端发送的DHCP DISCOVER报文中Option50(请求IP地址选项)指定的地址。

  3. 地址池内查找“Expired”状态的IP地址,即曾经分配给客户端的超过租期的IP地址。

  4. 在地址池内随机查找一个“Idle”状态的IP地址。(华为交换机V200R009C00及之前版本,按照IP地址从大到小的顺序查找)

  5. 如果未找到可供分配的IP地址,则地址池依次自动回收超过租期的(“Expired”状态)和处于冲突状态(“Conflict”状态)的IP地址。回收后如果找到可用的IP地址,则进行分配。


第三步:选择阶段

如果有多个DHCP服务器向DHCP客户端回应DHCP OFFER报文,则DHCP客户端一般只接收第一个收到的DHCP OFFER报文,然后以广播方式发送DHCP REQUEST报文,该报文中包含客户端想选择的DHCP服务器标识符(即Option54)和客户端IP地址(即Option50,填充了接收的DHCP OFFER报文中yiaddr字段的IP地址)。

DHCP客户端广播发送DHCP REQUEST报文通知所有的DHCP服务器,它将选择某个DHCP服务器提供的IP地址,其他DHCP服务器可以重新将曾经分配给客户端的IP地址分配给其他客户端。

第四步:确认阶段

当DHCP服务器收到DHCP客户端发送的DHCP REQUEST报文后,DHCP服务器回应DHCP ACK报文,表示DHCP REQUEST报文中请求的IP地址分配给客户端使用。

DHCP客户端收到DHCP ACK报文,会广播发送免费ARP报文,探测本网段是否有其他终端使用服务器分配的IP地址:

  1. 在指定时间内没有收到回应,客户端使用此地址。

  2. 收到了回应,客户端向服务器发送DHCP DECLINE报文,并重新向服务器请求IP地址,同时,服务器会将此地址列为冲突地址。

当DHCP服务器收到DHCP客户端发送的DHCP REQUEST报文后,如果DHCP服务器由于某些原因无法分配DHCP REQUEST报文中Option50填充的IP地址,则发送DHCP NAK报文作为应答,通知DHCP客户端无法分配此IP地址。DHCP客户端需要重新发送DHCP DISCOVER报文来申请新的IP地址。

有中继场景DHCP客户端首次接入网络

有DHCP中继的场景中,首次接入网络的DHCP客户端和DHCP服务器的工作原理与无中继场景时DHCP客户端首次接入网络的工作原理相同。主要差异是DHCP中继在DHCP服务器和DHCP客户端之间转发DHCP报文,以保证DHCP服务器和DHCP客户端可以正常交互。

图2 有中继场景中DHCP客户端首次接入网络的报文交互示意图

第一步:发现阶段

DHCP中继接收到DHCP客户端广播发送的DHCP DISCOVER报文后,进行如下处理:

  1. 检查DHCP报文中的hops字段,如果大于16,则丢弃DHCP报文;否则,将hops字段加1,并继续下面的操作。

  2. 检查DHCP报文中的giaddr字段。如果是0,将giaddr字段设置为接收DHCP DISCOVER报文的接口IP地址。如果不是0,则不修改该字段,继续下面的操作。

  3. 将DHCP报文的目的IP地址改为DHCP服务器或下一跳中继的IP地址,源地址改为中继连接客户端的接口地址,通过路由转发将DHCP报文单播发送到DHCP服务器或下一跳中继。

如果DHCP客户端与DHCP服务器之间存在多个DHCP中继,后面的中继接收到DHCP DISCOVER报文的处理流程同前面所述。


Hops:表示当前的DHCP报文经过的DHCP中继的数目。该字段由客户端或服务器设置为0,每经过一个DHCP中继时,该字段加1。

giaddr(gateway ip address):表示第一个DHCP中继的IP地址。DHCP服务器会根据此字段来判断出客户端所在的网段地址,从而选择合适的地址池,为客户端分配该网段的IP地址。服务器还会根据此地址将响应报文发送给此DHCP中继,再由DHCP中继将此报文转发给客户端。


第二步:提供阶段

DHCP服务器接收到DHCP DISCOVER报文后,选择与报文中giaddr字段为同一网段的地址池,并为客户端分配IP地址等参数,然后向giaddr字段标识的DHCP中继单播发送DHCP OFFER报文。

DHCP中继收到DHCP OFFER报文后,会进行如下处理:

  1. 检查报文中的giaddr字段,如果不是接口的地址,则丢弃该报文;

    否则,继续下面的操作。

  2.  DHCP中继检查报文的广播标志位。

    如果广播标志位为1,则将DHCP OFFER报文广播发送给DHCP客户端;

    否则将DHCP OFFER报文单播发送给DHCP客户端。

第三步和第四步处理过程和无中继场景处理过程相同

  • 客户端重用曾经使用过的地址

DHCP客户端非首次接入网络时,可以重用曾经使用过的地址。如图3所示,DHCP客户端与DHCP服务器交互DHCP报文,以重新获取之前使用的IP地址等网络参数


是否支持重用曾经使用过的IP地址,因不同客户端而异。


图3 DHCP客户端重用曾经使用过的IP地址的报文交互过程

第一步:选择阶段

客户端广播发送包含前一次分配的IP地址的DHCP REQUEST报文,报文中的Option50(请求的IP地址选项)字段填入曾经使用过的IP地址。

第二步:确认阶段

DHCP服务器收到DHCPREQUEST报文后,根据DHCP REQUEST报文中携带的MAC地址来查找有没有相应的租约记录,如果有则返回DHCP ACK报文,通知DHCP客户端可以继续使用这个IP地址。否则,保持沉默,等待客户端重新发送DHCP DISCOVER报文请求新的IP地址。

  • DHCP客户端更新租期

DHCP服务器采用动态分配机制给客户端分配IP地址时,分配出去的IP地址有租期限制。租期到期或者客户端下线释放地址后,服务器会收回该IP地址,收回的IP地址可以继续分配给其他客户端使用。如果DHCP客户端希望继续使用该地址,需要更新IP地址的租期。

图4 DHCP客户端更新租期示意图

  1.  当租期达到50%(T1)时,DHCP客户端会自动以单播的方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。

    如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功(即租期从0开始计算);

    如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址。

  2. 当租期达到87.5%(T2)时,如果仍未收到DHCP服务器的应答,DHCP客户端会自动以广播的方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。

    如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功(即租期从0开始计算);

    如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址。

  3. 如果租期时间到时都没有收到服务器的回应,客户端停止使用此IP地址,重新发送DHCP DISCOVER报文请求新的IP地址。

客户端在租期时间到之前,如果用户不想使用分配的IP地址,会触发DHCP客户端向DHCP服务器发送DHCP RELEASE报文,通知DHCP服务器释放IP地址的租期。DHCP服务器会保留这个DHCP客户端的配置信息,将IP地址列为曾经分配过的IP地址中,以便后续重新分配给该客户端或其他客户端。

如图5所示,部署DHCP中继时,更新租期的过程与上述过程相似。

图5客户端通过DHCP中继更新租期示意图

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
目录: 网盘文件,永久连接 01 OSPF部分-HCIE路由技术深入 02 OSPF部分-IP FRR 03 OSPF部分-OSPF RFC1583兼容 04 BGP部分-Peer Group 05 BGP部分-路由反射器 06 BGP部分-联盟 07 BGP部分-团体属性 08 BGP部分-路由衰减 09 中间系统部分-基础及历史 10 中间系统部分-拓扑结构及路由类型 11 中间系统部分-网络类型及邻居关系 12 中间系统部分-地址结构 13 中间系统部分-报文结构及类型 14 中间系统部分-邻居建立 15 中间系统部分-数据库LSDB同步 16 中间系统部分-拓扑计算及路由形成 17 中间系统部分-接口开销 18 中间系统部分-与OSPF对比 19 中间系统部分-配置及案例 20 MPLS部分-基础 21 MPLS部分-报文结构 22 MPLS部分-标签转发行为 23 MPLS部分-LSP的建立 24 MPLS部分 25 MPLS部分-环路检测机制 26 MPLS部分-静态LSP配置 27 MPLS部分-LDP理论 28 MPLS部分-标签的发布和管理 29 MPLS部分-PHP倒数第二跳弹出和特殊标签 30 MPLS部分-LDP配置及案例 31 MPLS部分-问题及解决方案 32 MPLS部分-传统VPN的缺陷 33 MPLS部分-基础及架构 34 MPLS部分-隧道技术的实现 35 MPLS部分-VRF技术 36 MPLS部分-MP-BGP技术 37 MPLS部分-RD 38 MPLS部分-RT 39 MPLS部分-MPLS VPN报文转发过程及总结 40 MPLS部分-MPLS VPN配置及案例 41 MPLS部分-OSPF Sham-Link 42 MPLS部分-OSPF在MPLS VPN中的特别设计 43 IPV6技术部分-历史背景及展望 44 IPV6技术部分-特点及报文结构 45 IPV6技术部分-地址格式 46 IPV6技术部分-地址类型 47 IPV6技术部分-地址规划 48 IPV6技术部分-EUI-64规范 49 IPV6技术部分-基础配置 50 IPV6技术部分-NDP(NS和NA) 51 PV6技术部分-NDP(RS和RA) 52 IPV6技术部分-Path MTU 53 IPV6技术部分-NDP配置 54 IPV6技术部分-邻居状态跟踪 55 IPV6技术部分-DHCPv6理论 56 IPV6技术部分-DHCPv6配置-Windows2008 57 IPV6技术部分-DHCPv6配置 58 IPV6技术部分-路由理论 59 IPV6技术部分-路由配置 60 IPV6技术部分-过渡技术介绍 61 IPV6技术部分-手动隧道 62 IPV6技术部分- 6to4隧道 63 IPV6技术部分-IPv6 ISATAP隧道 64 IPV6技术部分-MSDP 65 IPV6技术部分-Smart-Link理论 66 其他技术部分-Smart-Link配置 67 其他技术部分-Monitor-Link 68 VXLAN部分-数据中心及大二层网络 69 VXLAN部分-基础 70 VXLAN部分-网络架构 71 VXLAN部分-报文结构 72 VXLAN部分-工作机制 73 VXLAN部分-工作机制-续 74 VXLAN部分-报文转发流程 75 VXLAN部分-部署方式和应用场景 76 VXLAN部分-命令解释及案例 77 VXLAN部分-配置案例 78 排错部分-Eth-Trunk 79 排错部分-MSTP 80 排错部分-DHCP 81 排错部分-VRRP 82 排错部分-OSPF 83 排错部分-MUX VLAN 84 排错部分-BGP Control 85 排错部分-Telnet 86 MPLS部分-网络及体系结构

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值