问题:    很多用户在使用路由器的DHCP服务器过程中都有一个疑问,DHCP有个设置项目是设置DHCP地址的租约时间,如果设置的比较短,是否会出现租约时间到了以后会重新去获取ip地址,造成用户断网?今天就此问题,将DHCP关于租约时间方面的工作原理介绍一下。
 
DHCP租约时间工作原理:
     一旦 DHCP客户端成功地从服务器哪里取得 DHCP租约之后,除非其租约已经失效并且IP地址也重新设定回 0.0.0.0 ,否则就无需再发送 DHCPdiscover 信息了,而会直接使用已经租用到的IP地址向之前之 DHCP服务器发出 DHCPrequest 信息,DHCP服务器会尽量让客户端使用原来的IP地址,如果没问题的话,直接响应 DHCPack 来确认则可。如果该地址已经失效或已经被其它机器使用了,服务器则会响应一个 DHCPNACK 封包给客户端,要求其从新执行 DHCPdiscover。

至于IP的租约期限却是非常考究的,并非如我们租房子那样简单, 以 NT 为例子:DHCP工作站除了在开机的时候发出 DHCPrequest 请求之外,在租约期限一半的时候也会发出 DHCPrequest ,如果此时得不到 DHCP服务器的确认的话,工作站还可以继续使用该IP;当租约期过了87.5%时,如果客户机仍然无法与当初的DHCP服务器联系上,它将与其它 DHCP服务器通信。如果网络上再没有任何DHCP协议服务器在运行时,该客户机必须停止使用该IP地址,并从发送一个Dhcpdiscover数据包开 始,再一次重复整个过程。要是您想退租,可以随时送出 DHCPRELEASE 命令解约,就算您的租约在前一秒钟才获得的。

跨网络的 DHCP运作 从前面描述的过程中,我们不难发现:DHCPDISCOVER 是以广播方式进行的,其情形只能在同一网络之内进行,因为 router 是不会将广播传送出去的。但如果 DHCP服务器安设在其它的网络上面呢?由于 DHCP客户端还没有IP环境设定,所以也不知道 Router 地址,而且有些 Router 也不会将 DHCP广播封包传递出去,因此这情形下 DHCPDISCOVER 是永远没办法抵达 DHCP服务器那端的,当然也不会发生 OFFER 及其它动作了。要解决这个问题,我们可以用 DHCPAgent (或 DHCPProxy )主机来接管客户的 DHCP请求,然后将此请求传递给真正的 DHCP服务器,然后将服务器的回复传给客户。这里,Proxy 主机必须自己具有路由能力,且能将双方的封包互传对方。

若不使用 Proxy,您也可以在每一个网络之中安装 DHCP服务器,但这样的话,一来设备成本会增加,而且,管理上面也比较分散。当然喽,如果在一个十分大型的网络中,这样的均衡式架构还是可取的。端视您的实际情况而定了。

最新文章

  1. 读谭浩强C语言数据结构有感(1)
  2. Zabbix自带模板监控MySQL
  3. 修改Mac]Bringing interface etch0:Device
  4. js基础之ajax
  5. Centos 7配置LAMP
  6. Nginx作为静态内容服务器(Windows环境)
  7. java值传递
  8. CVE-2014-1767 漏洞分析(2015.1)
  9. CoolBlog开发笔记第2课:搭建开发环境
  10. java unicode和字符串间的转换
  11. CentOS7设置固定IP
  12. 异常详细信息: System.InvalidOperationException: 对象的当前状态使该操作无效
  13. Spring boot(四)thymeleaf使用介绍
  14. C#并发集合(转)
  15. K-means算法的原理、优缺点及改进(转)
  16. 【BZOJ】【3673】可持久化并查集 & 【3674】可持久化并查集加强版
  17. config对象
  18. Unix高级编程Note1
  19. vlc源码分析(一) RTSP会话流程
  20. 【LeetCode】105. Construct Binary Tree from Preorder and Inorder Traversal

热门文章

  1. java_method_正则校验
  2. 关于RESTful
  3. 【JavaScript】JavaScript教程之------------------JavaScript实现
  4. hdu 5100 Chessboard
  5. android Base64加密解密
  6. NOI 2005 维修数列
  7. OI记忆口诀
  8. yui datatable动态修改行号
  9. Surrounded Regions——LeetCode
  10. Linux下的memset函数