广告
返回顶部
首页 > 资讯 > 服务器 >DHCP协议详解
  • 607
分享到

DHCP协议详解

网络服务器网络协议DHCPDHCP6Poweredby金山文档 2023-10-12 13:10:28 607人浏览 薄情痞子
摘要

DHCP是什么 1.1 DHCP定义 DHCP( Dynamic Host Configuration Protocol, 动态主机配置协议)定义: 存在于应用层(OSI) 前身是BOOTP(Bootstrap P

  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讲解到此结束

来源地址:https://blog.csdn.net/zhoupenghui168/article/details/130281621

--结束END--

本文标题: DHCP协议详解

本文链接: https://www.lsjlt.com/news/429446.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • DHCP协议详解
    DHCP是什么 1.1 DHCP定义 DHCP( Dynamic Host Configuration Protocol, 动态主机配置协议)定义: 存在于应用层(OSI) 前身是BOOTP(Bootstrap P...
    99+
    2023-10-12
    网络 服务器 网络协议 DHCP DHCP6 Powered by 金山文档
  • Telnet协议详解
    目录 1、Telnet协议 2、telnet协议的基本概念 1、NVT(Network Virtual Terminal)网络虚拟终端  2、telnet连接 3、telnet的C/S模式 3、telnet的工作原理 1、Telnet协议 ...
    99+
    2023-09-09
    服务器 网络 linux
  • FTP协议详解
    文章目录 1 FTP概述2 实验环境3 FTP详解3.1 文件传输过程3.2 报文格式3.3 数据连接3.4 主动模式3.5 被动模式3.6 匿名服务器 4 总结 链接: C/C...
    99+
    2023-10-06
    服务器 网络 linux
  • https协议详解
    目录HTTPS协议概念HTTPS通信(握手)过程HTTPS的优缺点优点:缺点:HTTPS如何保证安全对称加密:非对称加密:TLS/SSL的工作原理TLS/SSL概述TLS/SSL功能...
    99+
    2022-11-13
    什么是https协议 HTTPS协议详解 HTTPS协议基础知识
  • ARP协议详解
    目录 ARP概述ARP协议的定义物理地址逻辑地址为什么需要2级地址 ARP工作原理如何建立ARP高速缓存使用ARP协议的4种不同情况高速缓存的生存周期 ARP报文格式封装ARP协议抓包分析抓取ARP请求报文抓取ARP响应报文...
    99+
    2023-08-21
    网络 服务器 linux 网络协议
  • Linux中DHCP协议的示例分析
    这篇文章主要为大家展示了“Linux中DHCP协议的用法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux中DHCP协议的用法”这篇文章吧。我特别喜欢Linux启动的时候屏幕上一行一行的提...
    99+
    2023-06-13
  • PHP伪协议详解
    PHP伪协议详解 php支持的伪协议 1 file:// — 访问本地文件系统2 http:// — 访问 HTTP(s) 网址3 ftp:// — 访问 FTP(s) URLs4 php:// — ...
    99+
    2023-09-09
    php
  • HTTP协议详解(一)
    目录 1.什么是HTTP协议 2.HTTP的协议格式 使用fiddler抓包工具 理解代理 查看请求内容 3.HTTP请求(Request) 认识URL URL encode 认识method GET方法 POST方法 经典面试题:POST...
    99+
    2023-08-31
    http 网络协议 网络 java 服务器
  • http协议详解(超详细)
    http1. 基础概念篇1.1 介绍  HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)和Intern...
    99+
    2023-06-04
  • NAT协议(网络地址转换协议)详解
    NAT协议(网络地址转换协议)详解 为什么需要NATNAT的实现方式静态NAT动态NATNAPT NAT技术的优缺点优点缺点 NAT协议是将IP数据报头中的IP地址转换为另外一个IP地址的过程,主要用于实现私有网络访问公...
    99+
    2023-08-23
    网络 智能路由器 服务器
  • 【计网】SSH协议详解
    文章目录 1、概念介绍2、功能作用3、服务组成4、框架组成5、工作流程6、认证方式7、常用命令 1、概念介绍 SSH(Secure Shell),安全外壳协议,是一种建立在应用层基础上的安全协议,通过对密码进行加密传输验证,可以...
    99+
    2023-08-18
    ssh 服务器 运维
  • 【网络】HTTP协议详解
    😀大家好,我是白晨,一个不是很能熬夜😫,但是也想日更的人✈。如果喜欢这篇文章,点个赞👍,关注一下👀白晨吧!你的支持就是我最大的动力!💪💪...
    99+
    2023-08-23
    网络 http 网络协议 服务器 c++
  • HTTP协议详细解读
    文章目录 1. HTTP概念2. HTTP 特点3. HTTP 协议的工作过程4. 认识URL5. HTTP 请求数据格式6. HTTP 响应数据格式7. 总结📂橙子精品文章学习推荐 1. HTTP概念 HTTP...
    99+
    2023-08-16
    http java 网络
  • Mqtt通信协议详解
    文章目录 1. 简介mqtt2.mqtt协议实现3.Mqtt数据包4. QoS等级5. mqtt传输安全保证5.1 应用层5.2 传输层5.2.1 TLS安全协议 5.3 网络层 ...
    99+
    2023-09-03
    服务器 网络
  • PHP伪协议filter详解,php://filter协议过滤器
    「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 ...
    99+
    2023-08-31
    php 网络安全 人工智能 ai
  • NTP(Network Time Protocol)协议详解
    一、NTP的基本概念: NTP(Network Time Protocol)------网络时间协议-----应用层协议,用来在分布式时间服务器和客户端之间进行时间同步。 二、采用NTP的目的: 是对...
    99+
    2023-09-10
    网络 服务器 运维 NTP time protocol
  • 存储协议——FC协议讲解
    目录 FC基础概念 FC协议结构 FC通信 FC交换网络工作流程:(以封装SCSI协议为例) FC拓扑结构 FC协议的端口类型 FC适配器(FC HBA卡) FC基础概念 FC最开始为一种传输协议,由于其性能较高,逐渐发展到前端作为主机接...
    99+
    2023-09-18
    存储 网络 网络协议
  • 详解Java中的reactive stream协议
    目录背景什么是reactivestream深入了解java版本的reactivestreamPublisherSubscriberSubscriptionProcessorJDK中r...
    99+
    2022-11-12
  • AndroidMQTT与WebSocket协议详细讲解
    目录MQTTWebSocket总结MQTT MQTT是一个极其轻量级的发布/订阅消息传输协议,对于需要较小代码占用空间或网络带宽非常宝贵的远程连接非常有用 有如下特点: 开放消息协议...
    99+
    2022-11-13
    Android MQTT与WebSocket Android WebSocket协议 Android MQTT协议
  • Java中的 HTTP 协议原理详解
    目录前言1.HTTP 特点2.HTTP 组成2.1 请求对象2.1.1 请求行2.1.2 请求报头2.1.3 空行2.1.4 请求正文2.2 响应对象2.2.1 状态行2.2.2 响...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作