DHCP协议详解

news2024/12/26 22:31:26
  1. DHCP是什么

1.1 DHCP定义

DHCP( Dynamic Host Configuration Protocol动态主机配置协议)定义:
  • 存在于应用层(OSI)

  • 前身是BOOTP(Bootstrap Protocol)协议

  • 是一个使用UDP(User Datagram Protocol,用户数据报协议)协议工作的,被用于局域网的一个网络协议

  • 主要是给网络快速自动地分配IP地址,能够帮助我们将IP地址和相关IP信息分配给网络中的计算机

  • 常用的2个端口:67(DHCP server), 68(DHCP client)

1.2 DHCP服务器

  • 一些运行有DHCP服务器端软件的特殊电脑

  • 普通电脑中都内置有DHCP客户端模块,电脑接上网络后,DHCP客户端发现新连通的网络,会在该网络上找DHCP服务器。DHCP服务器将给电脑提供合理的网络配置,并把设置信息传回本机,本机和DHCP服务器之间的通信,都是通过DHCP协议进行的

1.3 DHCP主要作用

  • 减少管理员的工作量

  • 避免输入错误的可能

  • 避免IP地址的冲突

  • 提高了IP地址的利用率

  • 方便客户端的配置:使client动态的获得IP地址、给设备配置正确的子网掩码,默认网关,DNS服务器地址信息等

2.DHCP的工作方式

2.1 DHCP的分配方式

自动分配

DHCP为客户端分配 租期永久的(无限长)的IP地址

手工分配

管理员为少数特定客户端(如WWW服务器等) 静态绑定固定的IP地址,通过DHCP将配置的固定IP地址发给客户端

动态分配

DHCP给主机指定一个有时间限制的IP地址,到达使用期限后或主机明确表示放弃这个地址时,客户端需要重新申请地址; 如果客户端没有重新申请,则这个地址将可能被其它的主机使用; 绝大多数客户端得到的都是这种 动态分配的地址(可以解决IP地址不够用的困扰)

2.2 DHCP的工作原理

租约(租约四部曲)

(1).发现阶段(DISCOVER)

  • DHCP客户端启动时,计算机发现本机上没有任何IP地址设定,将以广播方式通过UDP 67端口发送DHCP DISCOVER请求报文(客户端的MAC地址信息),来寻找DHCP服务器,请求IP地址租约,因为客户机还不知道自己属于哪一个网络,所以封包的源地址0.0.0.0目的地址255.255.255.255,向网络发送特定的广播信息

  • 网络上每一台安装了TCP/IP协议的主机都会接收这个广播信息,但只有DHCP服务器才会做出响应

  • 请求获得IP,子网掩码,默认网关,DNS等信息

(2).提供阶段(OFFER )

  • 该客户对应的租约已存在且未被再次分配(包括租约到期和未到期的租约),则直接分配已记录的地址信息

  • 该客户对应的租约不存在,服务器响应DHCP OFFER,会从对应的地址池中查找(注意:该处地址池应该有个前提条件,就是可用的地址池:应当和接收口的IP为同一网段,或同giaddr字段同一网段,否则无法分配);然后从尚未出租的IP地址中挑选一个最前面的ip地址连同其它的参数设定,响应给客户端一个DHCP OFFER (单播)报文,报文里面包括客户机MAC地址信息,TCP/IP的一些配置信息

(3).选择阶段(REQUEST)

  • DHCP客户端可以接收到多个DHCP服务器DHCP OFFER数据包,但只会挑选其中一个 DHCP OFFER(通常只接受收到的第一个DHCP OFFER数据包),然后会向网络发送一个DHCP REQUEST广播报文(报文中包含客户端的MAC地址、接受的租约中的IP地址、提供此租约的DHCP服务器地址等),告诉所有DHCP服务器它将指定接受哪一台服务器提供的 IP 地址,这样其他的服务器就会释放之前预分配给客户端的IP地址。同时,客户端还会向网络发送一个ARP 报文,查询网络上面有没有其它设备使用该 IP 地址,如果发现该 IP 已经被占用,客户端则会送出一个DHCP DECLIENT报文给 DHCP 服务器,拒绝接受其 DHCP OFFER,并重新发送 DHCP DISCOVER信息

  • 此时,由于还没有得到DHCP服务器的最后确认,客户端仍然使用0.0.0.0为源IP地址,255.255.255.255为目标地址进行广播。

(4).确认阶段(ACK )

  • 当DHCP Server收到DHCP Client发送的DHCP Request后,确认要为该DHCP Client提供的IP地址,并根据客户机的MAC地址记录该次租约行为后,并便向该DHCP Client响应一个ACK报文(包含该IP地址,默认网关,DNS服务器等网络配置信息),来告诉DHCP Client可以使用该IP地址了,并告知客户端这个网络参数租约的期限,并且开始租约计时。然后DHCP Client就可以将该IP地址与网卡绑定,完成初始化过程。另外其他DHCP Server都将收回自己之前为DHCP Client提供的IP地址

  • 客户端在接收到DHCP ACK后,会向网络发送针对此IP地址的ARP解析请求以执行冲突检测,查询网络上有没有其它机器使用该IP地址;如果发现该IP地址已经被使用,客户机会发出一个DHCP DECLINE数据包给DHCP服务器,拒绝此IP地址租约,并重新发送DHCP DISCOVER信息.

  • 当用户不再需要使用分配IP地址时,就会"主动"向DHCP服务器发送RELEASE报文,告知服务器用户不再需要分配IP地址,DHCP服务器会释放被绑定的租约(在数据库中清除某个MAC对某个IP的租约记录,这样,这个IP就可以分配给下一个请求租约的MAC)

续约

  • DHCP客户机会在租期过去50%的时候,直接向为其提供IP地址的DHCP服务器发送DHCP REQUEST消息包;如果客户机接收到该服务器回应的DHCP ACK消息包,客户机就根据包中所提供的新的租期以及其它已经更新的TCP/IP参数,更新自己的配置,IP租用更新完成。如果没有收到该服务器的回复,则客户机继续使用现有的IP地址,因为当前租期还有50%

  • 如果在租期过去50%的时候没有更新,则DHCP客户机将在租期过去87.5%的时候再次向为其提供IP地址的DHCP服务器联系;如果还不成功,到租约的100%时候,DHCP客户机必须放弃这个IP地址,重新申请

  • 如果此时并没有DHCP可用,DHCP客户机会使用169.254.0.0/16中随机一个地址,并且每隔5min在进行尝试

2.3 DHCP协议包的组成

op:

1.client发送给server的封包,设为1

2.server发送给client的封包,设为2

htype: 硬件类别,1表示10Mb/s的以太网(Ethernet)的硬件地址

hlen: 硬件地址长度

hops:跳数,若封包需经过router传送,每站加 1,若在同一网内,为0(客户端初始设置为0)

xid:DHCP REQUEST 时随机生成的一段字符串,服务器和客户端用来在它们之间交流请求和响 应,客户端用它对请求和应答进行匹配两个数据包拥有相同的xid说明他们属于同一次会话

seconds: 由客户端填充,表示从客户端开始获得IP地址或IP地址续借后所使用了的秒数

flags: 从0到15共16 bits

最左1Bit为1时表示 server将以广播方式传送封包给client

最左1Bit为0时表示 server将以单播方式传送封包给client

ciaddr: 客户端会在发送请求时将自己的ip地址放在此处

yiaddr: 服务器会将想要分配给客户端的ip地址放在此处

siaddr: 一般来说是服务器的ip地址.但是注意:根据openwrt源码给出的注释,当报文的源地址、siaddr、option­>server_id字段不一致(有经过跨子网转发)时,通常认为option­>srever_id字段为真正的服务器ip,siaddr有可能是多次路由跳转中的某一个路由的ip

giaddr: 如果需要跨子网进行DHCP地址发放,则在此处填入经过的路由器的ip地址

sname: 服务器主域名

file: 启动文件名,是一个空结尾的字符串。

options: 可以自由添加的部分,用于存放客户端向服务器请求信息和服务器的应答信息

2.4 DHCP中继

2.4.1 DHCP中继是什么

(1).在大型的网络中,可能会存在多个网段,DHCP客户机通过网络广播消息获得DHCP服务器的响应后得到IP地址。但广播消息是不能跨越网段的,因此,如果DHCP客户机和服务器在不同的网段内,即被路由器分割开来时,客户机向服务器申请IP地址的时候,就要用到DHCP中继

(2).当企业的内部网络规模较大时,通常被划分为多个不同的子网,网络内配置了VLAN,VLAN能隔离广播,而DHCP协议使用广播,DHCP服务器在哪个VLAN中,就只有在相同VLAN内的客户机能从DHCP服务器那里获取IP地址。所以,将DHCP这种特殊的广播信息在不同网段的VLAN之间转发,让其他VLAN的客户机也能从DHCP服务器那里获得IP地址,就要用到DHCP中继

(3).DHCP中继代理实际上是一种软件技术,安装了DHCP中继代理的设备(路由器,交换机,服务器)称为DHCP中继代理服务器,它承担不同网段间的DHCP客户机和服务器的通信

2.4.2 DHCP中继原理:

(1). DHCP客户机申请IP租约,发送DHCP Discover包

(2). 中继代理收到该包,并转发另一个网段的DHCP服务器

(3). DHCP服务器收到该包,将DHCP Offer包发送给中继代理

(4). 中继代理将地址租约(DHCP Offer)转发给DHCP客户端,接下来的过程,DHCP Request包从客户机通过中继代理转发到DHCP服务器,DHCP ACK消息从服务器通过中继代理转发到客户机

3.DHCP攻防

3.1 DHCP攻击的原理

(1).先使用攻击软件,不断向DHCP服务器发出 DHCP Request 报文请求耗尽DHCP服务器的资源,让客户机不能上网

(2).自己伪造DHCP服务器,并“冒充”为一这个网段中的合法DHCP服务器,向客户端提供DHCP服务,这时候客户端的网关就是伪造的DHCP服务器的地址,攻击者就可以截获流量,并且还可以将数据包正常转发到网络上,不影响客户端的正常通信,只不过客户端上网的流量都在攻击者监控下,并且非法DHCP+攻击程序容易拿到用户信息,比如用户操作系统的账号密码,结果DHCP客户端将从非法DHCP服务器处获得不正确的IP地址、网关、DNS等配置参数

3.2 非法DHCP服务的防范

(1).在DHCP服务器上进行IP与MAC地址的绑定:

在通过DHCP服务器进行客户端IP地址等参数分配的网络中,对于一些重要部门的用户,可以通过在DHCP服务器上绑定IP与MAC地址,实现对指定计算机IP地址的安全分配

(2).使用DHCP Snooping信任端口:

能够过滤来自网络中非法DHCP服务器或其他设备的非信任DHCP响应报文.一旦将交换机的某一个端口设置为指向正确DHCP服务器的接入端口,那么交换机会自动丢弃从其他端口上接收到的DHCP响应报文.因为非信任端口,所以非法的DHCP服务器虽然接收到了信息,也发出了响应报文,但是在不信任端口处被阻断了,内网设备就不会得到不信任DHCP发送的响应报文了,就是不管你响应有多快,但是都半路夭折了。

4.DHCPv6介绍

4.1 DHCPv6定义

  • DHCPv6(Dynamic Host Configuration Protocol for IPv6,支持IPv6的动态主机配置协议)是针对IPv6编址方案设计的,为主机分配IPv6前缀、IPv6地址,DNS等其他网络配置参数的协议

  • 基于UDPv6协议工作的

  • 常用的2个端口:547(DHCP server,relay), 546(DHCP client)

  • 由于在 IPv6中 没有广播报文,使用组播默认所有DHCPv6服务器都会加入并侦听该组播组:FF02::1:2报文,客户端也无需配置服务端的IPv6地址

4.2 DHCPv6协议的优势

  • 可以为主机分配IPv6地址

  • 可以为主机分配IPv6前缀,DNS服务器、域名等网络配置参数

  • 可以为特定主机分配特定的地址/前缀

  • 便于全网络的自动配置和网络层次性管理

4.3 DHCPv6的工作原理

4.3.1 DHCPv6网络构成

  • DHCPv6客户端:动态获取IPv6地址、IPv6前缀或其他网络配置参数的设备

  • DHCPv6服务器:负责为DHCPv6客户端分配IPv6地址、IPv6前缀和其他网络配置参数的设备

  • DHCPv6中继:DHCPv6客户端通过本地链路范围的组播地址与DHCPv6服务器通信,以获取IPv6地址和其他网络配置参数。如果服务器和客户端不在同一个链路范围内,则需要通过DHCPv6中继来转发报文,这样可以避免在每个链路范围内都部署DHCPv6服务器,既节省了成本,又便于进行集中管理

4.3.2 分配过程

交互两个消息的快速分配过程

(1) DHCPv6客户端在发送的Solicit消息中携带Rapid Commit选项,标识客户端希望服务器能够快速为其分配地址/前缀和网络配置参数

(2) 如果DHCPv6服务器支持快速分配过程,则直接返回Reply消息,为客户端分配IPv6地址/前缀和其他网络配置参数。如果DHCPv6服务器不支持快速分配过程,则采用交互四个消息的分配过程为客户端分配IPv6地址/前缀和其他网络配置参数

交互四个消息的分配过程

发现阶段
客户端发送Solicit报文来发现 DHCPv6 服务器,并请求DHCPv6 服务器为其分配 IPv6 地址和网络配置参数,由于客户端不知道 DHCPv6 服务器的 IPv6 地址,所以客户端用组播地址:FF02::1:2向同一链路范围内的所有DHCPv6服务器发送Solicit报文;Solicit报文中携带了客户端的DUID、需要请求的非临时地址、以及其他网络配置参数等信息
提供阶段
DHCPv6 服务器接收到Solicit报文后,选择按照 IPv6 地址从小到大的顺序采用循环查找方式,选择最新找到的可供分配的 IPv6 地址,然后通过Advertise报文以单播方式回应给客户端;Advertise报文里面携带了服务器的DUID、客户端的DUID、分配给客户端的IPv6地址及租期等信息
选择阶段
因为Solicit报文是组播发送的,所以如果同一链路范围内存在多个 DHCPv6 服务器,则接收到Solicit报文的服务器都会回应Advertise报文,如果有多个 DHCPv6 服务器向DHCPv6客户端回应Advertise报文,则 DHCPv6 客户端选择服务器优先级最高的Advertise报文,然后客户端以组播方式向同一链路范围内的所有 DHCPv6 服务器发送Request报文,该报文中包含客户端选择的 DHCPv6 服务器的DUID、客户端的DUID、客户端IPv6地址
确认阶段
当 DHCPv6 服务器收到Request报文后,对报文中携带的服务端DUID信息进行判断:
若报文中携带的服务端DUID不是本服务端的DUID,则对该Request报文不回应,同时将Request报文中请求的IPv6地址回收
若报文中携带的服务端DUID是本服务端的DUID,则以单播方式回应Reply报文,确认Request报文中请求的IPv6地址分配给客户端使用

4.4 DHCPv6报文格式

5.DHCPv4 vs DHCPv6

(1). 相同点

  • 使用DHCP client, DHCP relay and DHCP server概念

  • 使用scopes and leases概念

  • 使用4个消息包的完整交互 (DHCP for IPv4使用Discover/Offer/Request/Acknowledge (DORA), DHCPv6使用Solicit/Advertise/Request/Reply (SARR))

  • 使用DHCP options为终端节点提供附加信息(DHCPv6的type code长度为16-bit)

  • 支持Rapid Commit功能

(2). 差异点

  • 标识客户端方式:DHCPv6使用DHCP Unique Identifiers (DUID) (RFC 6355),DHCPv4使用MAC地址.

  • 消息类型名称不同,大部分功能类似

  • DHCPv4基于IPv4包传输,DHCPv6基于IPv6包传输

  • DHCPv6使用IPv6组播消息,DHCPv4使用广播的IPv4消息

  • DHCPv6中client与relay/server(RFC 6939)通信时使用link-local地址, DHCPv4使用unsolicited广播地址

  • 监听的UDP端口不同, DHCPv4 relay/server监听udp端口67 client监听udp端口68, relay/server监听udp端口547 client监听udp端口546

  • DHCPv4可以在路由器上配置, stateful DHCPv6一般不能在路由器上配置

  • DHCPv4为客户端提供默认网关地址,DHCPv6不包含这个option,IPv6节点通过ICMPv6 RA消息学习到first hop路由器地址

  • DHCPv4地址池可能耗尽; DHCPv6网段通常为64位耗尽可能性接近0

好了,DHCP讲解到此结束

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/455903.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何正确选择集体渲染(云渲染)和gpu离线渲染

在数字娱乐领域,渲染是制作高质量影像的关键步骤之一。随着技术的不断发展和应用的广泛普及,渲染方式也在不断演进。目前,集体渲染(云渲染)和GPU离线渲染是两种比较流行的渲染方式。那么,哪种方式会更快呢&…

一文了解什么是5G

5G是第五代移动网络。它是继1G、2G、3G、4G网络之后的新的全球无线标准。5G 支持一种新型网络,旨在将几乎所有人和所有事物连接在一起,包括机器、物体和设备。 一、前几代移动网络和5G有什么区别 第一代 – 1G 1980 年代:1G 传送模拟语音。…

软件测试标准升级|新版25000标准解读

广电计量 目录 收起 一、覆盖软件产品八大特性的测试依据及准则 二、信息安全测试的关键要点 三、兼容性测试的关键要点 四、功能测试的关键要点 五、性能效率测试的关键要点 六、易用性测试的关键要点 七、可靠性测试的关键要点 八、维护性测试的关键要点 九、可移植…

Linux各文件权限

参考:https://blog.csdn.net/weixin_45423515/article/details/126652740 一、切换root权限 既然root是最大的权限,那么这里就来了解一下如果切换到root用户。 su - //切换成root 这就是切换人的权限,但是大多数情况是root权限不会轻易的分给普通用户…

NIS服务

NIS 文章目录 NIS一、NIS二、简介2.1 NIS的产生2.2 什么是NIS? 三、NIS的相关组件3.1 服务端3.1.1 配置文件3.1.2 主要服务3.1.3 数据库相关指令 3.2 客户端3.2.1 配置文件3.2.2 主要指令 四、NIS环境4.1 NIS所需的软件包4.2 NIS Server (Master/Slave)4.3 NIS Clie…

unity3d---物体加点击事件

目录 1.给需要点击点物体加collider 2.层级面板加EventSystem 3. 相机加Physics Raycaster 4.物体单独响应点击事件 5.控制脚本实现各物体的点击事件 6.点击ui时屏蔽 物体点击事件 1.给需要点击点物体加collider 2.层级面板加EventSystem 3. 相机加Physics Raycaster 2d…

机器学习 Rider数据集分析和预测

介绍数据集 ride_id:乘车ID rideable_type:乘车类型 started_at:开始日期 ended_at :结束日期 start_station_name:开始站的名字 start_station_id:开始站的ID end_station_name:结束站的名字 …

魔百和UNT403G 国科芯片2+8 安卓9.0 免拆机纯净线刷包

固件特点: 1、本固件在UNT403G 盒子上测试可用, 其它盒子请慎 重使用; 2、支持原装遥控器,语音蓝牙遥控器; 3、固件压缩包有刷机教程,请一定仔细阅读。 4、刷机后三网通用,可自由安装应用&#…

NewBing 边栏快捷插件没有了!如何解决?如何脱离浏览器使用 New Bing?

作者:明明如月学长, CSDN 博客专家,蚂蚁集团高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《EffectiveJava》独家解析》专栏作者。 热门文章推荐…

【移动端网页布局】流式布局 ① ( 流式布局简介 | 百分比布局 / 非固定像素布局 | 根据屏幕尺寸 / 设备类型自动调整网页布局 )

文章目录 一、流式布局简介二、流式布局代码示例 一、流式布局简介 流式布局 又称为 百分比布局 / 非固定像素布局 ; 为 流式布局 中 盒子模型 设置 百分比宽度 , 其大小可以根据屏幕宽度自适应伸缩 , 该盒子没有像素限制 , 内容自动向左右两边填充 ; 流式布局 可以 根据 设备…

蓝库云|究竟什么是ERP?它对企业有什么重要性作用呢

一、什么是ERP ERP全称为Enterprise Resource Planning,即企业资源计划,是一种运用信息技术手段来集成管理企业内部所有资源,协调各项业务、机构、流程和人员,实现高效、协同、合规经营的商业管理软件。ERP系统包括销售、采购、物…

Docker-compose组成|搭建(nginx|tomcat)

Docker-compose组成|搭建(nginx|tomcat) 一 Docker-Compose二 Docker-Compose安装部署三 YML文件编写注意事项四 docker Compose撰写nginx 镜像五 docker Compose撰写tomcat镜像 一 Docker-Compose 1、Docker-Compose使用场景 我们知道使用一个Dockerfi…

c/c++:栈帧,传值,传址,实参传值给形参,传地址指针给形参

c/c:栈帧,传值,传址,实参传值给形参,传地址指针给形参 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,此时学会c的话, 我所知道的周边的会c的同学&…

[比赛简介]AMP®-Parkinson‘s Disease Progression Prediction

比赛链接:AMP-Parkinsons Disease Progression Prediction | Kaggle 比赛简介 本次竞赛的目标是预测MDS-UPDR评分,该评分衡量帕金森病患者的进展。运动障碍协会赞助的统一帕金森病评定量表(MDS-UPDRS)修订版是对与帕金森病相关…

使用Charles进行HTTPS抓包

charles安装 下载地址 https://www.charlesproxy.com/download/latest-release/ 我安装的是charles-4.6.4版本 配置手机 注意: 一定要在同一网段 mac电脑的ip地址 手机的ip地址 使用同样的命令 长按配置代理,连接到电脑 此时抓包,会看到一堆unknown, 因为请求的是https…

Web安全 文件上传靶场搭建(玩转整个 文件上传 环境.)

Web安全 文件上传靶场搭建 文件上传漏洞是指 Web 服务器允许用户将文件上传至其文件系统,但这些文件可能并没有经过充分的验证,如文件名称、类型、内容或大小等。未能正确执行这些限制就意味着即使最基本的图像上传功能也可能用于上传任意具有潜在危险的…

GitHub 现在允许大规模启用私有漏洞报告

GitHub 宣布私人漏洞报告现已普遍可用,并且可以在属于组织的所有存储库上大规模启用。 启用后,安全研究人员可以使用此专用通信渠道向开源项目的维护人员私下披露安全问题,而不会意外泄露漏洞详细信息。 GitHub 的埃里克图利 (Eric Tooley)…

这些美国名校的AI人工智能大牛,你知道几个?

CS专业被US News评为就业TOP 100职业第一名、STEM职业第一名、技术类职业第一名。 AI人工智能,随着GPT的横空出世已成为最热门的CS专业。“深度学习”和“神经网络”等是新一代人工智能的重要代表,如今在面部识别、语音输入、基因医疗等重要领域被广泛应…

AI Stable Diffusion Prompt参数【二】之 生成效果查验

AI Stable Diffusion Prompt参数【二】之 生成效果查验 效果国漫风生成参数配置prompt:Negative prompt:Model:Steps:Sampler:CFG scale:Clip skip:Model hash:Hires upscale:Hires upscaler:Denoising strength: 全部效果 效果 国漫风生成参数配置 prompt&#xf…

Windows Docker 端口占用错误解决

Windows Docker 端口占用错误解决 错误来源 Error invoking remote method ‘docker-start-container’: Error: (HTTP code 500) server error - Ports are not available: exposing port TCP 192.168.0.157:6555 -> 0.0.0.0:0: listen tcp 192.168.0.157:6555: can’t bi…