应用层-第三节:动态主机配置协议DHCP
Posted 快乐江湖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了应用层-第三节:动态主机配置协议DHCP相关的知识,希望对你有一定的参考价值。
文章目录
本节对应视频如下
一:DHCP概述
DHCP:中文名为动态主机配置协议,用于内部网或网络服务供应商自动分配IP地址及其他信息。DHCP使用C/S方式在DHCP服务器上运行DHCP服务器进程,也可简称为vDHCP服务器;在用户主机上运行DHCP客户进程,也可简称为DHCP客户。DHCP是TCP/IP协议体系中的应用层协议,它使用运输层UDP所提供的服务,也就是说DHCP报文服务在运输层会被封装为UDP用户数据报,DHCP服务器使用的UDP端口是67,DHCP客户使用的UDP端口是68。封装有DHCP报文的UDP用户数据报在网络层会被封装为IP数据报,然后再根据所使用的网络接口封装成相应的数据链路层的帧进行发送(例如封装为以太网帧)
二:DHCP工作过程举例
如下,假设网络中有两台DHCP服务器和一台用户主机
-
当启用主机的DHCP后,DHCP客户将广播发送DHCP发现报文。封装该报文的IP数据报的
- 源地址为
0.0.0.0
,这是因为主机还未分配到IP地址,因此使用改地址代替 - 目的地址为
255.255.255.255
,之所以进行广播发送,是因为主机现在不知道网络中有哪几个DHCP服务器,它们的IP地址各是什么
- 源地址为
-
由于是广播的IP数据报,因此网络中所有设备的都会收到该IP数据报,并对其层层解封出封装有DHCP发现报文的用户数据报
- 对于DHCP客户,其应用层没有监听该UDP用户数据报目的端口67的进程,也就是DHCP服务器进程,因此无法交付DHCP发现报文,只能丢弃
- 对于DHC服务器,其应用层始终运行着DHCP服务器进程,因此会接受该DHCP发现报文并作出响应
-
DHCP服务器收到DHCP发现报文后,根据其中封装的DHCP客户端的MAC地址来查找自己的数据库,看是否有针对该MAC地址的配置信息
- 如果有,则使用这些配置信息构建并发送DHCP提供报文
- 如果没有,则采用默认配置信息来构建并发送DHCP提供报文
-
封装该报文的IP数据报的源IP地址为DHCP服务器的IP地址,目的IP地址仍然为广播地址。使用广播地址的原因是主机目前还没有配置IP地址,为了使主机可以收到,只能发送广播
-
这样一来,网络中所有设备都会收到该IP数据报,并对其层层解封,解封出封装有DHCP提供报文的UDP用户数据报
- 对于DHCP服务器,其应用层没有监听该UDP用户数据报目的端口68的进程,也就是DHCP客户进程,因此无法交付DHCP提供报文,只能丢弃
- 对于DHCP客户,其应用层始终运行着DHCP客户进程,因此会接受该DHCP提供报文并作出相应处理
-
DHCP客户会根据DHCP提供报文中的事物ID,来判断该报文是否是自己所请求的报文。也就是说,如果该事物ID与自己之前所发送的DHCP发现报文中封装的事物ID相等就表明这是自己所请求的报文,就可以接收该报文,否则丢弃
-
DHCP提供报文中还封装有配置信息,例如IP地址、子网掩码、地址租期、默认网关、DNS服务器等等
-
DHCP服务器从自己的IP地址池中挑选租用给主机的IP地址时,会使用ARP来确保所选IP地址未被网络中其他主机占用
-
对于本例,DHCP客户会收到两个DHCP服务器发来的DHCP提供报文,DHCP客户会从中选择一个,一般来说先到先得,并向所选择的DHCP服务器发送DHCP请求报文,封装该报文的IP数据报的
- 源地址仍然为
0.0.0.0
,因为此时DHCP客户才从多个DHCP服务器中挑选一个作为自己的DHCP服务器,首先需要征得该服务器的同意,之后才能正式使用向该DHCP服务器租用的IP地址 - 目的地址仍然为广播地址,其目的在于不用向网络中的每一个DHCP服务器单播发送DHCP请求报文,来告知它们是否请求作为自己的DHCP服务器
- 源地址仍然为
-
DHCP请求报文中封装有事物ID、DHCP客户端MAC地址、接受的租约中的IP地址、提供次租约的DHCP服务器端的IP地址等信息
-
对于本例,假设DHCP客户选择DHCP服务器1作为自己的DHCP服务器,并且DHCP服务器1接受该请求,于是DHCP服务器1给DHCP客户发送DHCP确认报文,疯转该报文的IP数据报的
- 源地址为DHCP服务器1的IP地址
- 目的地址仍然为广播地址
-
DHCP客户收到该确认报文后,就可以使用所租用到的IP地址了
-
在使用租用到的IP地址之前,主机还会使用ARP检测该IP地址是否已经被网络中的其他主机占用
- 若被占用:给DHCP服务器发送DHCP DECLINE报文撤销IP地址租约,并重新发送DHCP发现报文
- 若未占用:就可以使用租约中的IP地址与网络中其他主机通信了
-
当租用期过了一半时,DHCP客户会向DHCP服务器1发送DHCP请求报文,来请求更新租用期,封装该报文的IP数据报的
- 源地址为DHCP客户先前租用到的IP地址
- 目的IP地址为DHCP服务器1的地址
-
DHCP服务器如果同意则发回DHCP确认报文,这样DHCP就得到了新的租用期
-
DHCP服务器若不同意则发挥DHCP否认报文,这时,DHCP客户必须停止使用之前租用到的IP地址,并重新发送DHCP发现报文来重新申请IP地址
-
DHCP服务器若未响应则在租用期过了87.5%时,DHCP客户必须重新发送DHCP请求报文,然后继续等待DHCP服务器可能做出的反应
- 若DHCP还是未响应,则租用期结束后,DHCP客户必须立即停止使用之前租用的IP地址,并重新发送DHCP发现报文来重新申请IP地址
- 若DHCP还是未响应,则租用期结束后,DHCP客户必须立即停止使用之前租用的IP地址,并重新发送DHCP发现报文来重新申请IP地址
-
DHCP客户可以随时提前终止DHCP服务器所提供的租用期,这时只需要向DHCP发送DHCP释放报文即可
综上如下
三:DHCP中继代理
DHCP中继代理(DHCP relay agent):是一种网络设备或软件,它允许DHCP(动态主机配置协议)客户端在不同的子网中获取IP地址。DHCP客户端通常是计算机、路由器、交换机或其他网络设备,它们需要IP地址以连接到网络并进行通信。在一个网络中,DHCP服务器通常只能为同一子网中的客户端提供IP地址,因为DHCP协议使用广播消息来分配IP地址,而广播消息只能在同一子网内传播。这时,DHCP中继代理就派上用场了。DHCP中继代理位于不同的子网之间,可以将DHCP请求从一个子网转发到另一个子网中的DHCP服务器,并将响应从服务器转发回请求的子网。DHCP中继代理通常是路由器或交换机上的功能,可以通过配置路由器或交换机上的DHCP中继代理来实现。在配置DHCP中继代理时,需要指定DHCP服务器的IP地址和转发的接口或子网。当DHCP客户端发送请求时,DHCP中继代理会将请求转发到指定的DHCP服务器,并将响应转发回客户端。使用DHCP中继代理可以有效地简化网络管理,减少IP地址的浪费,并提高网络的可靠性和灵活性
以上是关于应用层-第三节:动态主机配置协议DHCP的主要内容,如果未能解决你的问题,请参考以下文章
计算机网络湖科大微课堂笔记 p67-70 应用层概述客户-服务器方式和对等方式动态主机配置协议DHCP域名系统DNS
计算机网络—— 应用层(123):应用层概述客户/服务器方式(C/S方式)和对等方式(P2P方式)动态主机配置协议DHCP