ToB企服应用市场:ToB评测及商务社交产业平台

标题: 网络应用层之(1)DHCPv4协议 [打印本页]

作者: 卖不甜枣    时间: 2024-6-25 01:43
标题: 网络应用层之(1)DHCPv4协议
网络应用层之(1)DHCPv4协议

  
   Author: Once Day Date: 2024年5月18日


  一位热衷于Linux学习和开辟的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦…


   漫漫长路,有人对你微笑过嘛…


  全系列文档可参考专栏:通讯网络技能_Once-Day的博客-CSDN博客。


  参考文章:
  
  
### 网络应用层之(1)DHCPv4协议 Author:Once Day Date: 2024年5月18日
漫漫长路,有人对你笑过嘛…
全系列文档可参考专栏:通讯网络技能_Once-Day的博客-CSDN博客。
参考文档:


  
1. 先容

1.1 DHCP协议先容

DHCP(Dynamic Host Configuration Protocol,动态主机设置协议)是一种网络管理协议,用于自动为参加网络的设备分配IP地点和其他网络设置参数。它简化了网络管理,使得设备可以即插即用,无需手动设置。
DHCP的前身是BOOTP(Bootstrap Protocol)(RFC0951),由Bill Croft和John Gilmore于1985年开辟,用于无盘工作站的IP地点分配。1993年,DHCP作为BOOTP的加强版被提出,由Ralph Droms紧张筹划和开辟。
1997年,DHCP成为RFC 2131尺度,得到广泛应用。2002年,DHCPv6(RFC 3315)发布,支持IPv6地点的动态分配。
随着网络规模的不停扩大,手动为每台设备分配IP地点变得越来越困难。对于服务器和路由器这种网络拓扑中的核心设备, 出于可靠性原因,通常是静态手工设置。但是大量的家用客户机和嵌入式设备,需要灵活的IP地点分配策略,其操纵者常常对网络知知趣识甚少,因此就需要一种会合服务来统一管理和自动分配IP地点。
DHCP广泛应用于各种网络环境,如家庭网络、企业网络、校园网等。它不仅适用于有线网络,也支持无线网络(如Wi-Fi)。当设备接入网络时,DHCP服务器会自动为其分配IP地点、子网掩码、默认网关、DNS服务器等参数,使设备可以或许正常通讯
当一台启动DHCP client功能的客户机首次接入网络时,将会经历如下游程:
DHCP固然极大便利了网络设置流程,但是也存在一些风险,如下所示:
在公共场所和公司办公场景,DHCP通常会搭配额外的认证服务流程,并绑定设备MAC和IP之间的关系,从而确保客户机受控接入,提高安全性。
1.2 DHCP和BOOTP协议的接洽

BOOTP协议是DHCP的前身,最初由Bill Croft和John Gilmore于1985年开辟,用于为无盘工作站自动分配IP地点。
BOOTP工作原理如下:
DHCP协议是在BOOTP的底子上发展而来,由Ralph Droms紧张筹划和开辟,于1993年提出。
DHCP在保存BOOTP根本功能的同时,举行了多方面的加强和扩展:

DHCP协议在筹划时充实思量了与BOOTP的兼容性,使得DHCP服务器可以或许同时为BOOTP和DHCP客户端提供服务:

目前,大多数DHCP服务器实现都同时支持DHCP和BOOTP协议,提供了很好的兼容性。例如,广泛使用的ISC DHCP服务器(DHCPD)默认支持BOOTP协议,可以为BOOTP客户端分配IP地点。Windows Server的DHCP服务也提供了BOOTP支持,通过设置选项可以启用BOOTP兼容模式。
1.3 DHCP相关的RFC文档

以下是与DHCP相关的紧张RFC文档列表:

涵盖了DHCP协议的各个方面,包括根本规范、选项界说、安全性、IPv6支持等,共同构成了DHCP协议的完整规范和参考资料。
2. 报文格式

2.1 DHCPv4报文格式

DHCPv4报文格式由固定长度的字段和可变长度的选项字段组成,如下所示

各字段分析如下:

2.2 BOOTP报文格式

DHCPv4是在BOOTP的底子上发展而来的,因此它们的报文格式根本同等:

DHCPv4在Bootp底子上,对报文的字段举行了加强表明和使用,如下:

BOOTP紧张用于无盘工作站的IP地点分配和引导步伐下载,而DHCPv4除了IP地点分配外,还支持传递更多的网络设置参数,如子网掩码、默认网关、DNS服务器等,适用于各种范例的网络设备。
2.3 DHCP报文选项

DHCP选项的格式如下:
  1. | -- 选项标签(8 bit) -- | -- 选项长度(8 bit) -- | -- 选项值(可变) -- |
复制代码
除了空白和结束添补选项之外,其他选项都由上面TLV格式组成,常见选项如下:
标签(代码)名称形貌0Pad添补选项,用于将选项字段添补到特定的边界1子网掩码指定客户端的子网掩码3路由器指定客户端的默认网关6域名服务器指定客户端的DNS服务器12主机名指定客户端的主机名15域名指定客户端的域名50哀求的IP地点客户端哀求的特定IP地点51IP地点租约时间指定分配给客户端的IP地点租约期53DHCP消息范例指定DHCP消息的范例(如DHCPDISCOVER、DHCPOFFER等)54服务器标识符标识DHCP服务器的IP地点56消息服务器向客户端发送的错误消息或其他信息58续约时间客户端在IP地点租约逾期前,应该开始实验续约的时间59重绑定时间假如客户端无法与原始服务器续约,它应该开始广播哀求新的租约的时间55参数哀求列表客户端哀求的特定设置参数列表61客户端标识符唯一标识客户端的信息255End选项字段的结束标记,表现没有更多的选项 当DHCP报文的选项字段长度超过了可用空间时,可以使用选项超载(Option Overload)机制来扩展选项字段。选项超载通过复用DHCP报文中的"文件名"(File)和"服务器主机名"(Sname)字段来传递额外的选项数据。
选项超载的工作原理如下:

假设一个DHCP服务器需要为客户端分配IP地点、子网掩码、默认网关、DNS服务器,而且还需要传递一些自界说的设置参数。选项字段的长度超过了可用空间,服务器决定使用选项超载机制。
DHCP报文的选项字段可能如下:
  1. Option 53 (DHCP Message Type): DHCP Offer
  2. Option 1 (Subnet Mask): 255.255.255.0
  3. Option 3 (Router): 192.168.1.1
  4. Option 6 (Domain Name Server): 8.8.8.8, 8.8.4.4
  5. Option 52 (Option Overload): 1
复制代码
额外的选项数据存储在"文件名"字段中:
  1. Option 128 (Custom Option): 0x01020304
  2. Option 129 (Custom Option): "example.com"
复制代码
当客户端收到这个DHCP Offer报文时,它会查抄"Option Overload"选项,发现额外的选项数据存储在"文件名"字段中,然后从该字段中读取并解析额外的选项数据,得到完整的设置信息。
2.4 DHCP消息范例

DHCP消息范例选项(选项代码53)是DHCP协议中最关键的选项之一,它用于标识DHCP消息的范例,以便客户端和服务器可以或许准确地表明和相应彼此的消息,每个DHCP消息都必须包含这个选项
代码消息范例形貌1DHCPDISCOVER客户端广播探求可用的DHCP服务器2DHCPOFFERDHCP服务器提供可用的IP地点和设置参数3DHCPREQUEST客户端哀求特定的IP地点,大概确认接受DHCP服务器的发起4DHCPDECLINE客户端拒绝DHCP服务器提供的IP地点5DHCPACKDHCP服务器确认客户端的IP地点哀求6DHCPNAKDHCP服务器拒绝客户端的IP地点哀求7DHCPRELEASE客户端释放IP地点,通知DHCP服务器8DHCPINFORM客户端哀求额外的设置参数,但不哀求IP地点 DHCP客户端和服务器通过这些消息范例来协调IP地点分配和网络设置的过程:
DHCP服务器处置处罚的消息范例

DHCP客户端处置处罚的消息范例(服务端是否发送广播与客户端哀求报文的flags有关)

2.5 DHCP服务端

   该表格信息来自RFC 2131: Dynamic Host Configuration Protocol (rfc-editor.org)
  根据RFC 2131文档的4.3.1节,以太网环境下DHCP服务器发送的三种消息(DHCPOFFER、DHCPACK和DHCPNAK)的报文字段如下:
字段DHCPOFFERDHCPACKDHCPNAK操纵码(op)2(相应消息)2(相应消息)2(相应消息)硬件地点范例(htype)111硬件地点长度(hlen)666中继跳跃步数(hops)000事务ID(xid)DHCPDISCOVER的xidDHCPREQUEST的xidDHCPREQUEST的xidsecs000ciaddr00大概
DHCPREQUEST的客户端地点0yiaddr提供给客户端的IP地点提供给客户端的IP地点0siaddr0大概下一个服务器地点0大概下一个服务器地点0flagsDHCPDISCOVER的flagsDHCPREQUEST的flagsDHCPREQUEST的flagsgiaddrDHCPDISCOVER的giaddrDHCPREQUEST的giaddrDHCPREQUEST的giaddrchaddrDHCPDISCOVER的chaddrDHCPREQUEST的chaddrDHCPREQUEST的chaddrsname服务器主机名或空服务器主机名或空空file启机文件名或空启机文件名或空空options必须包含选项必须包含选项必须包含选项 选项字段的要求如下:
OptionDHCPOFFERDHCPACKDHCPNAKRequested IP addressMUST NOTMUST NOTMUST NOTIP address lease timeMUSTMUST (DHCPREQUEST)
MUST NOT (DHCPINFORM)MUST NOTUse ‘file’/‘sname’ fieldsMAYMAYMUST NOTDHCP message typeDHCPOFFERDHCPACKDHCPNAKParameter request listMUST NOTMUST NOTMUST NOTMessageSHOULDSHOULDSHOULDClient identifierMUST NOTMUST NOTMAYVendor class identifierMAYMAYMAYServer identifier(54)MUSTMUSTMUSTMaximum message sizeMUST NOTMUST NOTMUST NOTAll othersMAYMAYMUST NOT 必须包含的选项有三类:消息范例(option 53)、服务器标识符(option 54)、IP地点租约时间(option 51,DHCPOFFER和DHCPACK)
2.6 DHCP客户端

   可参考文档:RFC 2131: Dynamic Host Configuration Protocol (rfc-editor.org)
  根据RFC 2131文档的4.4.1节,DHCP客户端发送的消息(DHCPDISCOVER、DHCPREQUEST、DHCPDECLINE、DHCPRELEASE和DHCPINFORM)的字段如下:
字段DHCPDISCOVERDHCPREQUESTDHCPDECLINEDHCPRELEASEDHCPINFORMop11111htype11111hlen66666hops00000xid随机生成DHCPOFFER的xid随机生成随机生成随机生成secs0或已过秒数0或已过秒数000或已过秒数flags0或10或1000或1ciaddr0'ciaddr’或00‘ciaddr’‘ciaddr’yiaddr00000siaddr00000giaddr00000chaddr客户端硬件地点客户端硬件地点客户端硬件地点客户端硬件地点客户端硬件地点sname服务器主机名或空服务器主机名或空空空服务器主机名或空file启机文件名或空启机文件名或空空空启机文件名或空options必须包含选项必须包含选项必须包含选项必须包含选项必须包含选项 补充分析:

options字段必须包含以下选项

3. 工作流程

3.1 DHCP服务器地点分配方式

DHCP服务器有三种紧张的IP地点分配方式:

除了这三种紧张的分配方式,DHCP服务器还可以通过以下方式优化IP地点分配:

3.2 DHCP客户端接入网络流程

   DHCP客户端和服务器交互表示图,来自华为IP知识百科:什么是DHCP?为什么要用DHCP? - 华为 (huawei.com)
  

一台新设备通过DHCP获取网络地点的流程通常包括以下步调:
(1) 客户端广播DHCP Discover消息,DHCP客户端启动时,本机接口上没有IP地点,通过本地链路发送广播报文探求服务器

(2) 服务器广播/单播DHCP Offer消息,DHCP服务器收到DHCPDISCOVER报文后,会给客户端提供IP地点和租期等信息

(3) 客户端广播DHCPRequest消息,DHCP客户端从收到的DHCPOFFER消息中选择合适的服务端举行回复

(4) 服务端广播/单播DHCP Ack消息,DHCP服务器收到DHCPRequest消息后,通过DHCPACK消息回复客户端:

客户端在吸收到DHCP ack广播后,会向网络发送三个针对此IP地点的ARP解析哀求以实行冲突检测,假如发现该IP地点已经被使用,客户机会发出一个DHCP decline数据包给DHCP服务器,拒绝此IP地点租约,并重新发送DHCP discover信息。
3.3 DHCP客户端续租

   DHCP客户端续租交互表示图,来自华为IP知识百科:什么是DHCP?为什么要用DHCP? - 华为 (huawei.com)
  

DHCP客户端在得到IP地点后,需要在租约期限内定期续租,以下是DHCP客户端续租的流程:
(1) T1时间点(Renewal时间点),T1时间点是租约时间的50%,例如,假如租约时间为8天,则T1时间点为4天

(2) DHCP服务器相应,假如DHCP服务器可以续租客户端的IP地点,它会相应一个DHCPACK消息,确认续租哀求

(3) T2时间点(Rebinding时间点),T2时间点是租约时间的87.5%,例如,假如租约时间为8天,则T2时间点为7天

(4) DHCP服务器相应,任何收到DHCPREQUEST消息的DHCP服务器都可以相应一个DHCPACK消息,确认续租哀求

假如客户端在T2时间点之后仍未收到DHCPACK消息,则它必须停止使用当前的IP地点,并重新启动DHCP流程,从DHCPDISCOVER阶段开始哀求新的IP地点。
3.4 DHCP中继场景接入网络流程

   DHCP中继场景交互表示图,来自华为IP知识百科:什么是DHCP?为什么要用DHCP? - 华为 (huawei.com)
  

在DHCP中继场景下,DHCP客户端和服务器之间的交互流程与直连场景类似,以下是DHCP中继场景下的大致流程:
(1) DHCP Discover,客户端广播DHCPDISCOVER消息,哀求IP地点

(2) DHCP Offer,DHCP服务器收到转发的DHCPDISCOVER消息,选择一个可用的IP地点,并发送DHCPOFFER消息给中继代理

(3) DHCP Request,客户端吸收到一个或多个DHCPOFFER消息,选择此中一个,并广播DHCPREQUEST消息

(4) DHCP Ack,DHCP服务器收到转发的DHCPREQUEST消息,确认IP地点分配,并发送DHCPACK消息给中继代理

与直连场景相比,DHCP中继场景有以下紧张差别:

在DHCP客户端视角,DHCP中继与DHCP服务器一样,交互流程和直连场景无异。在DHCP中继和DHCP服务器之间,所有交互报文都是单播报文,两者的IP信息都是固定的,因此无需通过广播报文举行发现和查找。
3.5 DHCP客户端状态机

   DHCP客户端状态变动图,来自37 张图详解 DHCP :给你 IP 地点的隐形人 - 知乎 (zhihu.com)
  非常推荐这篇文档,内里有很多简洁易懂的图,可以用来直观形象的感受DHCP工作流程。
  

DHCP客户端的状态机流程图形貌了客户端在获取、使用和更新IP地点时所经历的差别状态,如下所示:

3.6 DHCP认证

DHCP认证是一种安全机制,用于验证DHCP客户端的身份,并确保只有颠末授权的客户端才气得到IP地点和其他网络设置参数。
DHCP认证通常使用DHCP消息中的认证选项(Option 90)来携带认证信息。常见的DHCP认证协议包括DHCP Authentication Protocol (RFC 3118)和DHCP Delayed Authentication Protocol (RFC 4030)。
DHCP认证可以使用共享密钥或数字证书等方法来验证客户端的身份。

DHCP认证过程如下:

DHCP认证可以防止未经授权的客户端得到IP地点和其他网络资源。通过认证,管理员可以对网络接入举行更严酷的控制,防止DHCP欺骗和其他范例的攻击。
4. 总结

DHCP协议是日常生活中到处可见的动态地点设置协议,相对而言比较复杂,涉及广播报文和8种消息范例的交互。
在深入学习和分析之后,紧张可以分为DHCP客户端获取IP地点和租期续约两种流程。每种流程的消息范例和交互是固定样式,因此把握起来并不难。
DHCP协议报文交互学习的一种有效方式是通过wireshar抓包分析实际报文,TCP详解和各种网页文档,根本都包含这步,以是本篇文档就不再重复这步,如下:

这两份文档内里关于DHCP交互流程,先容很充实,值得一看。
对于DHCPv6协议,整体上和DHCPv4类似,但是细节差别,下篇文档单独先容。







   Once Day

  

    也信尤物终作土,不堪幽梦太急忙......
    假如这篇文章为您带来了帮助或启发,不妨点个赞




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4