当前位置: 首页 > news >正文

DHCP协议原理(网络协议)

DHCP简介

定义

DHCP(动态主机配置协议)是一种网络管理协议,能够自动为局域网中的每台计算机分配IP地址及其他网络配置参数,包括子网掩码默认网关和DNS服务器等。这一机制极大简化了网络管理,尤其在大型局域网中,管理员无需手动为每台计算机配置TCP/IP协议,从而节省了时间并减少了因IP地址重复导致的网络问题。

子网掩码是一种用于区分网络部分和主机部分的32位数字,通常以四个十进制数表示(例如:255.255.255.0)。它在IP地址中扮演重要角色,帮助网络设备识别哪些设备位于同一子网内。

默认网关是网络设备用于发送数据到不同子网或外部网络的路由器地址。它充当了设备与其他网络之间的出口,确保数据能够正确传输。

应用

DHCP非常适合经常移动位置的设备。在Windows系统中,通过控制面板的网络图标进入网络连接后,可以在TCP/IP协议的属性中选择“自动获得IP地址”和“自动获得DNS服务器地址”,这表明计算机将通过DHCP协议动态获取网络配置。

DHCP工作流程

下图局域网中充当DHCP服务器的是路由器,未分配IP地址的设备是客户端。

  • 在传输层,DHCP消息封装的协议是UDP。DHCP客户端使用的UDP端口是68,而DHCP服务器使用的UDP端口是67。
  • 在网络层,DHCP消息使用IP协议,并且将协议字段的数值设置为0x11(17换算为十六进制即为0x11)指明IP头部之内封装的协议为UDP协议。
  • 在数据链路层,由于网络层载荷类型为IPv4数据包,所以数据链路层头部的类型字段封装的数值是0x0800。

发现阶段

DHCP客户端寻找DHCP服务器。DHCP客户端以广播方式(因为DHCP服务器的IP地址对于客户端来说是未知的)发送DHCP发现信息来寻找DHCP服务器,即向地址255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。

提供阶段

DHCP服务器提供IP地址。在网络中接收到DHCP发现信息的DHCP服务器都会做出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户端,向DHCP客户端发送一个包含出租的IP地址和其他设置的DHCP提供信息。

选择阶段

DHCP客户端选择某台DHCP服务器提供的IP地址。如果有多台DHCP服务器向DHCP客户端发来的DHCP提供信息,则DHCP客户端只接收第一个收到的DHCP提供信息,然后它就以广播方式回答一个DHCP请求信息,该信息中包含向它所选定的DHCP服务器请求IP地址的内容。之所以要以广播方式回答,是为了通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址。

确认阶段

DHCP服务器确认所提供的IP地址。当DHCP服务器收到DHCP客户端回答的DHCP请求信息之后,它便向DHCP客户端发送一个包含它所提供的IP地址和其他设置的DHCP确认信息,告诉DHCP客户端可以使用它所提供的IP地址,然后DHCP客户端便将其TCP/IP协议与网卡绑定。另外,除DHCP客户端选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址

重新登录

以后DHCP客户端每次重新登录网络时,就不需要再发送DHCP发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户端继续使用原来的IP地址,并回答一个DHCP确认信息。如果此IP地址已无法再分配给原来的DHCP客户端使用时(比如此IP地址已分配给其他DHCP客户端使用)​,则DHCP服务器给DHCP客户端回答一个DHCP否认信息。当原来的DHCP客户端收到此DHCP否认信息后,它就必须重新发送DHCP发现信息来请求新的IP地址。

更新租约

DHCP服务器向DHCP客户端出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户端要延长其IP租约,则必须更新其IP租约。DHCP客户端启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。

DHCP报文

报文格式

字段作用 

操作类型

在DHCP协议中用于区分消息的方向。0x01表示客户端发出的消息(如DHCP发现和请求),而0x02表示服务器发出的消息(如DHCP提供、确认和否认)。这种设计确保了在DHCP通信中,客户端和服务器能够明确识别彼此的消息类型,从而实现有效的网络配置和管理。

硬件类型

在DHCP消息中用于指定硬件地址的类型。例如,0x01代表以太网(IEEE 802.3),这是最常见的硬件类型,用于描述基于有线网络的设备。 0x06表示IEEE 802.11,通常用于无线局域网(WLAN)。

硬件地址长度

硬件地址长度字段用于指示该媒介的地址长度。在以太网中,MAC地址的长度为6个字节(即6个八位组),因此在DHCP消息中,这个字段的值设置为0x06。

交互ID

DHCP客户端在接收到DHCP服务器发出的DHCP提供消息后,会检查该消息的交互ID:如果两者的交互ID相同,客户端接受这个IP地址。如果交互ID不同,客户端忽略这个消息。确保了在同一子网中多个DHCP客户端能够正确识别和处理来自DHCP服务器的响应,避免了混淆和冲突。

标志

指示客户端希望以单播还是广播形式接收服务器的响应。如果客户端希望接收单播,它会将标志字段设置为 0x0000;如果希望接收广播,则设置为 0x8000。这种设计确保了客户端在不同的网络状态下能灵活地选择通信方式,从而提高了 DHCP 协议的灵活性和效率。

客户端前IP地址

在DHCP消息中用于指示客户端当前正在使用的IP地址。这在续租过程中尤为重要,因为客户端需要通知服务器其现有地址,以便于续租或处理请求。

你的IP地址

当DHCP服务器向DHCP客户端提供和确认一个IP地址时,它就会将这个字段的值设置为提供和确认给客户端的那个IP地址。

服务器IP地址

标识DHCP服务器的IP地址。在DHCP服务器回应客户端的DHCP发现消息或DHCP请求消息时,它会在相应的消息中设置这个字段。

代理设备IP地址

标识DHCP代理中继的IP地址。当DHCP代理接收到来自客户端的请求并转发给服务器时,会填入该字段,以便服务器知道请求来自哪个网络。这在跨越不同子网时尤为重要,确保DHCP服务器能够正确回复。

客户端硬件地址

标识DHCP客户端的硬件地址。当DHCP客户端在局域网中以广播的形式发送DHCP发现消息时,它就会将这个字段的值设置为自己的硬件地址值。

可选项

这个字段是可选的。当DHCP客户端希望DHCP服务器提供其他配置参数,或者DHCP服务器向DHCP客户端提供其他参数时,都会通过设置可选项字段来进行询问、提供、请求和确认。在DHCP服务器和DHCP客户端交互配置参数时,它们除IP地址之外还应该/可以交互的参考包括但不限于:该地址的租期、子网掩码、默认网关地址和DNS服务器地址。

推荐一下

0voice · GitHub

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Appium高级话题:混合应用与原生应用测试策略
  • js中箭头函数与普通函数的区别
  • idea 恢复 pom 文件呈现灰色并带删除线
  • 将Java程序打包成EXE程序
  • 【云原生安全篇】一文掌握Harbor集成Trivy应用实践
  • 重头开始嵌入式第四十一天(数据结构 树 哈希表)
  • 【图像拼接】基于SIFT/SURF特征算法的图像拼接,matlab实现
  • 图分类!!!
  • Linux——应用层自定义协议与序列化
  • uniapp中使用picker-view选择时间
  • HTTP 协议格式大揭秘:Fiddler 助阵,网络交互全掌握!
  • 如何使用 Python 发送带附件的电子邮件
  • 阿里云AI基础设施全面升级,模型算力利用率提升超20%
  • html 与 md 文件数据格式转换
  • Java反序列化利用链篇 | URLDNS链
  • 「面试题」如何实现一个圣杯布局?
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • canvas 五子棋游戏
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • JSDuck 与 AngularJS 融合技巧
  • KMP算法及优化
  • pdf文件如何在线转换为jpg图片
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • Python打包系统简单入门
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • React-Native - 收藏集 - 掘金
  • 当SetTimeout遇到了字符串
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 聚簇索引和非聚簇索引
  • 聊一聊前端的监控
  • 漂亮刷新控件-iOS
  • 浅谈Golang中select的用法
  • 无服务器化是企业 IT 架构的未来吗?
  • 追踪解析 FutureTask 源码
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​configparser --- 配置文件解析器​
  • #include到底该写在哪
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • (03)光刻——半导体电路的绘制
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (4) PIVOT 和 UPIVOT 的使用
  • (LLM) 很笨
  • (超详细)语音信号处理之特征提取
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (原)Matlab的svmtrain和svmclassify
  • .net core 的缓存方案
  • .NET Core 项目指定SDK版本
  • .net framework 4.0中如何 输出 form 的name属性。
  • .Net MVC4 上传大文件,并保存表单
  • .net2005怎么读string形的xml,不是xml文件。
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • .NET和.COM和.CN域名区别
  • .NET开源项目介绍及资源推荐:数据持久层