DHCP客户端通过和DHCP服务器的交互通讯以获得IP地址租约。为了从DHCP服务器获得一个IP地址,在标准情况下DHCP客户端和DHCP服务器之间会进行四次通讯。DHCP协议通讯使用端口UDP 67(服务器端)和UDP 68(客户端)进行通讯,UDP68端口用于客户端请求,UDP67用于服务器响应,并且大部分DHCP协议通讯使用广播进行。

DHCP客户端和DHCP服务器的这四次通讯过程

1、DHCP DISCOVER

当DHCP客户端计算机处于以下三种情况之一时,触发DHCPDISCOVER广播消息:

当TCP/IP协议作为DHCP客户端(自动获取IP地址)进行初始化(DHCP客户端启动计算机、启用网络适配器或者连接到网络时);

DHCP客户端请求某个IP地址被DHCP服务器拒绝,通常发生在已获得租约的DHCP客户端连接到不同的网络中;

DHCP客户端释放已有租约并请求新的租约。

此时,DHCP客户端发起DHCPDISCOVER广播消息,向所有DHCP服务器获取IP地址租约。此时由于DHCP客户端没有IP地址,因此在数据包中,使用0.0.0.0作为源IP地址,然后广播地址255.255.255.255作为目的地址。在此请求数据包中同样会包含客户端的MAC地址和计算机名,以便DHCP服务器进行区分。

如果没有DHCP服务器答复DHCP客户端的请求,DHCP客户端在等待1秒后会再次发送DHCPDISCOVER广播消息。除了第一个DHCPDISCOVER广播消息外,DHCP客户端还会发出三个DHCPDISCOVER广播消息,等待时延分别为9秒、13秒和16秒加上一个长度为0~1000毫秒之间的随机时延。如果仍然无法联系DHCP服务器,则认为自动获取IP地址失败,默认情况下将随机使用APIPA(自动专有IP地址,169.254.0.0/16)中定义的未被其他客户使用的IP地址,子网掩码为255.255.0.0,但是不会配置默认网关和其他TCP/IP选项,因此只能和同子网的使用APIPA地址的客户端计算机进行通讯。你可以通过注册表中的DWORD键值IPAutoconfigurationEnabled来禁止客户端计算机使用APIPA地址进行自动配置,此键值位于

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

当其值设置为0时,则不使用APIPA地址进行自动配置。

在Windows XP和Windows Server 2003中,针对客户端计算机的TCP/IP选项中有一个备用配置选项,只有当客户端计算机配置为DHCP客户端(自动获取IP地址)时才有此备用配置。你可以通过备用配置来为DHCP客户端在无法联系DHCP服务器时为DHCP客户端指定静态IP地址,如下图所示:

如果没有配置APIPA地址和备用IP地址,则DHCP客户端会每隔5分钟再发送DHCPDISCOVER广播消息,直到从DHCP服务器获取IP地址为止。

2、DHCP OFFER

所有接收到DHCP客户端发送的DHCPDISCOVER广播消息的DHCP服务器会检查自己的配置,如果具有有效的DHCP作用域和富余的IP地址,则DHCP服务器发起DHCPOFFER广播消息来应答发起DHCPDISCOVER广播的DHCP客户端,此消息包含以下内容:

客户端MAC地址;

DHCP服务器提供的客户端IP地址;

DHCP服务器的IP地址;

DHCP服务器提供的客户端子网掩码;

其他作用域选项,例如DNS服务器、网关、WINS服务器等;

租约期限等。

因此DHCP客户端没有IP地址,所以DHCP服务器同样使用广播进行通讯:源IP地址为DHCP服务器的IP地址,而目的IP地址为255.255.255.255。同时,DHCP服务器为此客户保留它提供的IP地址,从而不会为其他DHCP客户分配此IP地址。如果有多个DHCP服务器给予此DHCP客户端回复DHCPOFFER消息,则DHCP客户端接受它接收到的第一个DHCPOFFER消息中的IP地址。

3、DHCP REQUEST

当DHCP客户端接受DHCP服务器的租约时,它将发起DHCPREQUEST广播消息,告诉所有DHCP服务器自己已经做出选择,接受了某个DHCP服务器的租约。

在此DHCPREQUEST广播消息中包含了DHCP客户端的MAC地址、接受的租约中的IP地址、提供此租约的DHCP服务器地址等,所有其他的DHCP服务器将收回它们为此DHCP客户端所保留的IP地址租约,以给其他DHCP客户端使用。

此时由于没有得到DHCP服务器最后确认,DHCP客户端仍然不能使用租约中提供的IP地址,所以在数据包中仍然使用0.0.0.0作为源IP地址,广播地址255.255.255.255作为目的地址。

4、DHCP ACK

提供的租约被接受的DHCP服务器在接收到DHCP客户端发起的DHCPREQUEST广播消息后,会发送DHCPACK广播消息进行最后的确认,在这个消息中同样包含了租约期限及其他TCP/IP选项信息。

如果DHCP客户端的操作系统为Windows 2000及其后版本,当DHCP客户端接收到DHCPACK广播消息后,会向网络发出三个针对此IP地址的ARP解析请求以执行冲突检测,确认网络上没有其他主机使用DHCP服务器提供的IP地址,从而避免IP地址冲突。如果发现该IP已经被其他主机所使用(有其他主机应答此ARP解析请求),则DHCP客户端则会广播发送(因为它仍然没有有效的IP地址)DHCPDECLINE消息给DHCP服务器拒绝此IP地址租约,然后重新发起DHCP DISCOVER进程。此时,在DHCP服务器管理控制台中,会显示此IP地址为BAD_ADDRESS。

如果没有其他主机使用此IP地址,则DHCP客户端的TCP/IP使用租约中提供的IP地址完成初始化,从而可以和其他网络中的主机进行通讯。至于其他TCP/IP选项,如DNS服务器和WINS服务器等,本地手动配置将覆盖从DHCP服务器获得的值。

租约续约

DHCP服务器将IP地址提供给DHCP客户端时,会包含租约的有效期,默认租约期限为8天(691200秒)。除了租约期限外,还具有两个时间值T1和T2,其中T1定义为租约期限的一半,默认情况下是四天(345600秒),而T2定义为租约期限的的7/8,默认情况下为7天(604800秒)。当到达T1定义的时间期限时,DHCP客户端会向提供租约的原始DHCP服务器发起DHCP REQUEST请求对租约进行更新,如果DHCP服务器接受此请求则回复DHCP ACK消息,包含更新后的租约期限;如果DHCP服务器不接受DCHP客户端的租约更新请求(例如此IP已经从作用域中去除),则向DHCP客户端位于回复DHCP NACK消息,此时DHCP客户端立即发起DHCP DISCOVER进程以寻求IP地址。如果DHCP客户端没有从DHCP服务器得到任何回复,则继续使用此IP地址直到到达T2定义的时间限制。此时,DHCP客户端再次向提供租约的原始DHCP服务器发起DHCP REQUEST请求对租约进行更新,如果仍然没有得到DHCP服务器的回复则发起DHCP DISCOVER进程以寻求IP地址。

DHCP详细工作过程相关推荐

  1. 主动模式下FTP的详细工作过程

    文中有不对或者有不清楚的地方,请大家告诉我,谢谢!   主动模式下FTP的详细工作过程   PORT FTP是常用的FTP工作方式,当客户端的连接请求到来时,FTP服务器会利用默认的21端口与客户端建 ...

  2. LLC开关电源详细工作过程

    LLC工作过程详述 1 简述 2 主拓扑 3 具体工作过程 3.1 fsf_{s}fs​>frf_{r}fr​时工作过程 3.1 fr1<fs<frf_{r1}<f_{s}&l ...

  3. 【转】DHCP工作过程详解

    DHCP动态主机配置协议的作用我想作为网管的兄弟们都应该知道了,这里我就不多废话了,今天我要谈的是DHCP的工作过程,了解了工作过程,要排除故障就容易了. 一.DHCP客户机初始化: 1. 寻找DHC ...

  4. 理解并取证:DHCP的工作原理、怎么检测IP地址冲突

    动态主机配置协议(Dynamic Host Configuration Protocol, DHCP)被设计用于动态的为网络中的主机分配IP地址及其它相关的TCP/IP属性,它属于客户/服务模式的应用 ...

  5. DHCP的工作原理、怎么检测IP地址冲突

    原帖地址:http://7658423.blog.51cto.com/7648423/1270601 理解DHCP的雏形BOOTP(Bootstrap Protocol) DHCP的为什么要替代BOO ...

  6. DHCP详细配置实验总结

      DHCP(Dynamic Host Configuration Protocol)动态主机配置协议,安装了该服务的服务器就是DHCP服务器,在DHCP服务器端,设定一个地址池,为本网段内那些开机前 ...

  7. DCHP详细工作流程及分析

    原文链接:https://blog.csdn.net/Andy_93/article/details/78238931 DHCP的作用: DHCP 全称Dynamic Host configurati ...

  8. DHCP relay的工作过程以及DHCP option82的作用

    DHCP一家子(不包括DHCPv6)包括DHCP Client.DHCP Server.DHCP Relay以及DHCP Snooping,之后我会一个个详细学习之后发出来.今天讲述一下DHCP re ...

  9. DHCP工作过程及DHCP中继

    DHCP(Dynamic Host Configuration Protocol) 动态主机配置协议 常见的配置参数:IP.掩码.网关.DNS.域名 其他:ftp地址.IP电话的电话号码.无线当中的一 ...

最新文章

  1. WPF窗口长时间无人操作鼠标自动隐藏
  2. 双网卡双ip实现双线路共用
  3. linux 正则查找email_Linux 正则表达式详解
  4. 苏州大学计算机考研复试经验,苏州大学计算机考研复试经验总结.docx
  5. Boost:parallel grep测试程序
  6. 计算机应用技术的创新
  7. 《SAS编程与数据挖掘商业案例》学习笔记之八
  8. Eclipse导入他人的Maven工程报错
  9. 解决IE浏览器URL乱码的问题
  10. Linux学习之Linux系统目录简概
  11. 高颜值:Redis官方可视化工具,功能强大!
  12. oracle算加权平均的函数,如何用变异函数计算加权平均数?
  13. 深度学习三巨头也成了大眼萌,这个一键转换动画电影形象的网站「太火」了...
  14. http转https后资源加载不显示
  15. 「诗人艺术家ll著名诗人」胭脂茉莉十四行诗10首
  16. java中flush()的作用的是什么?与close有什么联系
  17. 如何将ES6转换成ES5?
  18. 项目管理10大知识领域及5大过程
  19. Afterlogic xmail 邮局软件不能收email 设置
  20. 推荐一个腾讯出品的Android UI框架 —— QMUI

热门文章

  1. 杂记整理二:linux与程序安装
  2. How your face shapes your economic chances
  3. java--遍历自定义数组
  4. poj 1716 差分约束
  5. 德布罗意波与神经网络与粒子
  6. 学习率对神经网络迭代次数的影响
  7. python显示控制台行情_python命令行查看股票基本行情数据
  8. pythontxt文件怎么读_python怎么读txt文件
  9. acs880变频器选型手册_据说这是变频器知识里讲的最全的了,小编拿来分享给大家!...
  10. python django并发访问挂掉,解决django高并发时数据库连接量过大的问题(实现连接池的方法)...