今天给大家讲解一下DHCP的原理和技术细节。本文从DHCP基本原理、实现流程和DHCP重启后的流程和租约和续约机制三个方面对DHCP进行了全方位的讲解,基本上涵盖了DHCP的全方面。

一、DHCP基本原理

DHCP,Dynamic Host Configuration Protocol,动态主机配置协议,是一种可以使主机开机后自动获取IP地址、子网掩码、DNS等信息的技术手段。应用DHCP技术,不仅可以简化用户的上网流程,方便用户上网,如果从企业的角度来说,还可以实现对公司内部网络用户的管理。
DHCP是一种C/S模式的网络协议,要想实现DHCP功能,首先主机必须支持DHCP Client功能,其次网络中还必须拥有一台DHCP服务器,并且主机和该服务器之间必须能够正常通信。因为DHCP中有些报文时以广播的形式,因此DHCP Server和DHCP Client一般必须要在一个子网内。(后面我们会讲到,如果确实不在一个网段,还可以配置DHCP中继来解决这个问题)
DHCP服务器,既可以是一台主机,华为和思科系列路由交换设备也可以实现DHCP服务器功能。
DHCP使用UDP协议实现通信,网络层协议号字段为0x11,DHCP Client端口号68,DHCP Server端口67。

二、DHCP实现流程

DHCP实现流程一共有4个阶段,具体如下图所示:

(一)发现阶段

当主机刚刚开机运行,此时他不知道此时网络中是否存在DHCP服务器,DHCP服务器是谁,因此它必须首先确定网络中的DHCP服务器身份。因此,新上线主机会发送DHCP Discover报文, 该报文是一个广播报文,源IP地址为0.0.0.0,目的IP地址为255.255.255.255。源MAC地址为自己的MAC地址,目的MAC地址为ffff-ffff-ffff。该报文会在二层网络中洪泛,因此如果网络中存在DHCP服务器,则DHCP服务器会收到该报文。

(二)提供阶段

当网络中的DHCP服务器收到了DHCP Client发送的DHCP报文后,DHCP就进入了提供阶段。在这个阶段,DHCP Server会根据管理员的相关配置,给DHCP Client提供一个可用的IP地址,同时给其提供DNS、子网掩码等信息。
DHCP Server会发送DHCP Offer信息给DHCP Client提供上述信息,该报文也是一个广播报文,源IP地址为DHCP Server的IP地址,目的IP地址为DHCP Server给该DHCP Client分配的IP地址,源MAC地址为DHCP Server的MAC地址,目的MAC地址为DHCP Client的MAC地址。(注,在这里有的设备上DHCP Offer报文也是广播,其实也能够实现DHCP的功能)

(三)请求阶段

在DHCP Client收到DHCP Server发送的DHCP Offer报文后,就进入了DHCP请求阶段,在DHCP请求阶段,DHCP已经得到了DHCP Server分配给它的IP地址,DHCP Client在得到该IP地址后,却不会马上使用,DHCP Client会向DHCP Server发送DHCP Request报文,正式向DHCP Server申请使用该IP地址。
DHCP Request报文,源IP地址为0.0.0.0(因为这时还没有得到DHCP服务器的回应,因此此时这个IP地址还不能正常使用,因此在这里源IP地址还是0.0.0.0)。目的地址为255.255.255.255。(注:在这里其实DHCP Client其实已经知道了DHCP Server的IP地址,因此其实这里使用DHCP Server的IP地址其实也是可以的,因此,有些设备对此做了优化,因为这样可以减少网络中的广播洪范流量)源MAC和目的MAC地址分别是DHCP Client的和DHCP Server的MAC地址。

(四)确认阶段

当DHCP Server收到DHCP Client发送的DHCP Request报文后,DHCP进入确认阶段。DHCP Server会向DHCP Client发送DHCP Reply报文,表示同意DHCP Client使用该IP地址。
DHCP Reply报文(有时也被称为DHCP ACK报文),源IP地址为DHCP Server的IP地址,目的IP地址为DHCP Client的IP地址,源目MAC为DHCP Server和Client的MAC地址。

三、重启PC后的DHCP过程及DHCP续约机制

(一)重启PC后的DHCP过程

目前,PC机对于DHCP有记忆功能,会记住当前网络中DHCP服务器的IP地址和上次分配给自己的IP地址。因此,当PC重启后,通常不会按照上述的4个步骤按部就班的申请IP地址,而是通常会直接进入第三个阶段,直接向DHCP Server发送DHCP Request报文,请求自己上一次获得的IP地址。如果DHCP同意,则会回应DHCP Reply报文,如果该IP地址已经被占用,或者其他情况造成DHCP Server不把该IP地址分配给DHCP Client,则DCHP Server会回应DHCP NACK报文,表示拒绝。这时,PC就必须重新进行DHCP四个阶段。

(二)DHCP续约机制

DHCP存在租约和续约机制,在默认情况下,当PC机申请到一个DHCP地址后,使用时间为一天,管理员也可以手动修改该时间,最短为1小时。当PC申请的DHCP IP地址到达租约时间后,该IP地址就不可以继续使用,因此PC会在租约到期之前进行续约。
通常情况下,DHCP Client会进行两次续约,一次是在租约期的50%时候,DHCP Cient会向DHCP Server发送DHCP Reqruest报文,如果收到DHCP Server的回应,则续约成功。第二次续约是在租约期的87.5%的时候,DHCP会再次向DHCP Server发送DHCP Request报文,申请租约。如果此时仍为收到DHCP响应的DCHP ACK报文,则就必须要重新进行DHCP的四个阶段,重新申请IP地址。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200/article/details/118858510

DHCP技术原理详解相关推荐

  1. Web端即时通讯技术原理详解

    Web端即时通讯技术原理详解 前言 在web端的IM即时通讯应用,由于浏览器的兼容性以及其固有的"客户端请求服务器处理并响应"的C/S通信模型,造成了要在浏览器中实现一个兼容性较好 ...

  2. 新手入门:史上最全Web端即时通讯技术原理详解

    前言 有关IM(InstantMessaging)聊天应用(如:微信,QQ).消息推送技术(如:现今移动端APP标配的消息推送模块)等即时通讯应用场景下,大多数都是桌面应用程序或者native应用较为 ...

  3. Java技术原理详解

    一.Java 运行原理  1.高级语言运行过程  在程序真正运行在CPU上之前,必须要让OS的kernel理解我们在编辑器或者IDE里根据每种语言的语法规则敲入的源代码,kernel才能做出相关的调度 ...

  4. 新手入门贴:史上最全Web端即时通讯技术原理详解

    前言 有关IM(InstantMessaging)聊天应用(如:微信,QQ).消息推送技术(如:现今移动端APP标配的消息推送模块)等即时通讯应用场景下,大多数都是桌面应用程序或者native应用较为 ...

  5. openwrt dhcp不分配_【装维技巧】DHCP工作原理详解(上)

    各位小伙伴们,又是元寒气满满的一天,最近在后台听到不少人对静态配置IP地址的种种抱怨: 以上问题,各位兄弟们有遇到过吗 莫急,小维来为各位小伙伴们支招 其实吧,有了动态主机配置协议DHCP(Dynam ...

  6. Android热修复技术原理详解(最新最全版本)

    本文框架 什么是热修复? 热修复框架分类 技术原理及特点 Tinker框架解析 各框架对比图 总结   通过阅读本文,你会对热修复技术有更深的认知,本文会列出各类框架的优缺点以及技术原理,文章末尾简单 ...

  7. 北斗GPS同步时钟(授时系统)技术原理详解

    1. 前言 由计算机网络系统组成的 分布式系统 ,若想协调一致进行: IT 行业的 " 整点开拍 " . " 秒杀 " . "Leader 选举 &q ...

  8. 【android】插件化技术原理详解

      作为移动端的黑科技,插件化技术一直受大厂的青睐.插件化技术有减少宿主Apk体积,可以独立更新,模块化开发等优点,让宿主APP极具扩展性.那么,现在就来聊聊其中的技术实现,国际惯例,先上效果图 这篇 ...

  9. 软件定义网络 (SDN)技术原理详解

    一.SDN相关概念 1.大二层网络 互联网时代,用户的访问称之为南北向流量,而数据中心之间的数据传递成为东西向流量. 很多情况下,需要不同的数据中心之间进行数据访问,数据同步.而去同步这些流量要求对这 ...

  10. AOP之@AspectJ技术原理详解

    一AOP 1 主要功能 2 主要目标 3 适用对象 4 AOP与OOP的关系 二Android中使用AspectJ 1 Gradle 配置示 2 基本概念 21 切面Aspect 22 连接点Join ...

最新文章

  1. pandas drop 删除行和列的方法
  2. java调用exe_要精通Java,先研究它的执行原理
  3. 排序二叉树BST(binary search/sort tree)
  4. python selenium 弹窗获取元素_python中能否使用selenium获取弹窗的文本内容?
  5. DCMTK:DcmItem和DcmSequenceOfItem的路径功能测试程序
  6. BFS HDOJ 2102 A计划
  7. iPhone将NSString转换编码集为gb2312或者gbk的方法
  8. 算法五——字符串匹配(中)
  9. 30分钟轻松入门Spring MVC
  10. [转载] ANTLR——词法分析
  11. Android 应用开发(35)---View与ViewGroup的概念
  12. c++用一级运算比较大小_Python 学习笔记:Python 中的数字和数字型运算
  13. 天津天狮学院关于2021年天狮专升本新生入学缴费有关事项的通知
  14. 动漫学日语《白熊咖啡厅》(更新中)
  15. 用C#一步步写串口通信
  16. Linux安装RabbitMQ详细教程
  17. OpenGL - SSAO
  18. 春学期C语言程序设计,2019年春季学期《C语言程序设计II》课程总结
  19. 百度竞价新人提升赚钱概率的方法
  20. 8K视频大?带你来算算

热门文章

  1. leetcode—25.链表排序题目leetcode总结
  2. Leetcode—6.相向双指针的剩余题型python解答
  3. 深度学习2.0-41.GRU原理及实战
  4. 统计学习方法读书笔记2-极大似然估计与梯度下降法
  5. 向模块化进军,创建类
  6. Android Framework内核之旅
  7. 让Oracle跑得更快2—基于海量数据的数据库设计与优化
  8. 49多项式04——标准分解式、不可约多项式、因式分解及唯一性定理、重因式
  9. 有哪些让人相见恨晚的Python库(一)
  10. 矩阵论第二章总结:范数理论及应用(脑图)