草庐IT

DHCP原理详解

zzjieee 2024-05-18 原文

DHCP原理详解

一. DHCP协议概述

连接到Internet的计算机需要在发送或接收数据报前,知道其IP地址和其他信息,如网关地址、使用的子网掩码和域名服务器的地址。常用的地址分配方式有2种:

  • 1、手动配置ip地址、网关、DNS等信息。
  • 2、使用DHCP协议动态分配ip地址、网关、DNS等。

在以下场合通常利用 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议) 服务器来完成 IP地址分配:

  • 1、网络规模较大,手工配置需要很大的工作量,并难以对整个网络进行集中管理。
  • 2、网络中主机数目大于该网络支持的 IP 地址数量,无法给每个主机分配一个固定的 IP 地址,且对同时接入网络的用户数目也有限制(比如,Internet 接入服务提供商即属于这种情况),大量用户必须通过 DHCP 服务动态获取IP 地址。
  • 3、网络中只有少数主机需要固定的IP 地址,大多数主机没有固定 IP 地址的需求。

在启动 DHCP功能时,才打开 DHCP使用的 UDP 67和 UDP 68端口。

二. DHCP的基本概念

DHCP Server

DHCP服务的提供者,通过 DHCP 报文与 DHCP客户端交互,为各种类型的客户端分配合适的IP 地址,并可以根据需要为客户端分配其它网络参数。

DHCP Client

客户端是整个DHCP过程的触发者和驱动者,通过 DHCP 报文和DHCP 服务器交互,得到 IP 地址和其他网络参数。

DHCP Relay

DHCP报文的中继转发者。它在处于不同网段间的DHCP 客户端和服务器之间承担中继服务,解决了DHCP 客户端和 DHCP 服务器必须位于同一网段的问题。

三.DHCP工作过程

DHCP Server-Client模式
1、动态分配地址过程

DHCP 客户端从DHCP 服务器动态获取 IP 地址,主要通过四个阶段进行:

  • 1 发现阶段:DHCP客户端寻找DHCP 服务器的阶段。客户端以广播方式发送 DISCOVER 报文。
  • 2 提供阶段:DHCP服务器提供 IP 地址的阶段。DHCP 服务器接收到客户端的DISCOVER 报文后,根据 IP 地址分配的优先次序选出一个IP地址,与其他参数一起通过OFFER报文发送给客户端。
  • 3 选择阶段:DHCP客户端选择IP地址的阶段。如果有多台DHCP 服务器向该客户端发来OFFER报文 ,客户端只接受第一个收到的OFFER 报文,然后以广播方式发送 REQUEST 报文,该报文中包含DHCP 服务器在OFFER 报文中分配的 IP 地址。同时该报文中包含Option 54(服务器标识选项),即它选择的DHCP服务器的IP地址信息。
  • 4 确认阶段:DHCP服务器确认IP 地址的阶段。DHCP 服务器收到DHCP 客户端发来的 REQUEST 报文后,只有DHCP 客户端选择的服务器会进行如下操作:如果确认地址分配给该客户端,则返回 ACK 报文;否则将返回NAK 报文,表明地址不能分配给该客户端。客户端收到服务器返回的ACK 确认报文后,会以广播的方式发送ARP 报文(目的地址是被分配到的地址)进行地址探测,如果在规定的时间内没有收到回应,客户端才使用此地址。
2、复用之前地址过程

DHCP客户端每次重新登录网络时,不需要再发送DISCOVER报文,而是直接发送包含前一次分配的IP地址的REQUEST请求报文,即报文中的Option 50 (请求的IP地址选项)字段填入曾经使用过的IP地址。DHCP服务器收到这一报文后,判断DHCP客户端是否可以使用请求的地址。

  • 如果地址可用,则执行如下过程:


如果地址不可用,则重新执行discover过程:

3、更新ip地址租约

如果采用动态地址分配策略,则 DHCP 服务器分配给客户端的 IP 地址有一定的租借期限,当租借期满后服务器会收回该 IP 地址。

  • 1、IP 租约期限达到一半(T1)时,DHCP 客户端会自动以单播的方式,向 DHCP 服务器发送 REQUEST 报文,请求更新 IP 地址租约。如果收到 ACK 报文,则租约更新成功;如果收到 NAK 报文,则重新发起申请过程。
  • 2、到达租约期限的 87.5%(T2)时,如果仍未收到 DHCP 服务器的应答,DHCP 客户端会自动向 DHCP 服务器发送更新其 IP 租约的广播报文。如果收到ACK 报文,则租约更新成功;如果收到NAK 报文,则重新发起申请过程。 如图8所示,为租约达到87.5%,广播发送REQUEST报文后,收到DHCP服务器回应的ACK报文,租约更新成功的情况。

更新租约成功流程:

4、客户端主动释放地址

DHCP客户端不再使用分配的IP地址时,会主动向DHCP服务器发送RELEASE报文,通知DHCP服务器释放IP地址的租约。DHCP服务器会保留这个DHCP客户端的配置信息,以便该客户端重新申请地址时,重用这些参数。

DHCP Server-Relay-Client模式

原始的DHCP协议要求客户端和服务器只能在同一个子网内,不可以跨网段工作。因此,为进行动态主机配置需要在所有网段上都设置一个DHCP服务器,这显然是不经济的。 DHCP中继(DHCP Relay)的引入解决了这一问题,它在处于不同网段间的DHCP客户端和服务器之间承担中继服务,将DHCP协议报文跨网段中继到目的DHCP服务器,于是不同网络上的DHCP客户端可以共同使用一个DHCP服务器。

DHCP中继的工作过程如图所示:

DHCP option82

option 82是 DHCP报文中的中继代理信息选项(Relay Agent Information option)。是 DHCP报文中 option内容的一部分。option 82中可以包含最多255个sub-option, 若定义了option 82,至少要定义一个 sub-option。目前 option 82中常用 sub-option 1、sub-option2。

  • sub-option 1:代理电路 ID(即Circuit ID)子项。子选项通常在 DHCP 中继设备上配置,定义了在传输报文的时候要携带 DHCP 客户端所连接端口的端口信息。通常 sub-option 1 与 sub-option 2 子选项要共同使用来标识 DHCP源端的信息。
  • sub-option 2:代理远程 ID(即Remote ID)子项。该子选项也通常在 DHCP中继设备上配置,定义了在传输报文的时候要携带中继设备的 MAC地址信息。通常与 sub-option 1子选项要共同使用来标识 DHCP源端的信息。

DHCP中继支持 option 82时的工作机制如下图所示:

1、DHCP Relay收到Client请求报文,若报文中没有option82,则 DHCP中继设备将 option 82选项添加到报文中后转发给 DHCP服务器;若报文中已有option82,处理策略有4种,分别是丢弃、保持、移除、替换。

  • DROP丢弃:直接丢弃报文。
  • KEEP保持:持报文原有的 option 82,然后将报文发给服务器。
  • REMOVE移除:移除option 82,然后将报文发给服务器。
  • REPLACE替换:用中继设备本身的option 82项替代报文中原有的option 82,然后将报文发给服务器。

2、DHCP服务器收到 DHCP中继设备转发的 DHCP请求报文后,将记录报文中option选项所携带的信息,然后将携带 DHCP配置信息以及 option 82信息的报文发给 DHCP中继。

3、DHCP中继收到 DHCP服务器的返回报文后,需要判断option82选项是否为本设备添加,如果是则剥离报文中的 option 82信息,然后将带有 DHCP配置信息的报文转发给 DHCP客户端;否则,直接将包转发给用户。

四、DHCP option

DHCP 利用 Option 字段传递控制信息和网络配置参数,实现地址的动态分配,为客户端提供更加丰富的网络配置信息。DHCP选项格式如图所示:

1、常用option选项
选项含义
Option 3路由器选项,用来指定为客户端分配的网关地址。
Option 6DNS 服务器选项,用来指定为客户端分配的 DNS 服务器地址。
Option 51IP 地址租约选项。
Option 53DHCP 消息类型选项,标识 DHCP 消息的类型。
Option 55请求参数列表选项。客户端利用该选项指明需要从服务器获取哪些网络配置参数。该选项内容为客户端请求的参数对应的选项值。
Option 66TFTP 服务器名选项,用来指定为客户端分配的TFTP 服务器的域名。
Option 67启动文件名选项,用来指定为客户端分配的启动文件名。
Option 150TFTP 服务器地址选项,用来指定为客户端分配的TFTP 服务器的地址。
Option 121无分类路由选项。该选项中包含一组无分类静态路由(即目的地址的掩码为任意值,可以通过掩码来划分子网),客户端收到该选项后,将在路由表中添加这些静态路由。
Option 33静态路由选项。该选项中包含一组有分类静态路由(即目的地址的掩码固定为自然掩码,不能划分子网),客户端收到该选项后,将在路由表中添加这些静态路由。如果存在 Option 121,则忽略该选项。
2、自定义option选项

1、中继代理信息选项(Option 82)

option 82是 DHCP报文中的中继代理信息选项(Relay Agent Information option)。

2、厂商特定信息选项(Option 43)

Option 43 称为厂商特定信息选项。DHCP 服务器和 DHCP 客户端通过 Option 43 交换厂商特定的信息。当DHCP 服务器接收到请求 Option 43 信息的 DHCP 请求报文(Option 55 中带有43 参数)后,将在回复报文中携带 Option 43,为DHCP 客户端分配厂商指定的信息。

五、典型应用组网

DHCP Server

DHCP Relay

六、参考文档

  • RFC2131:Dynamic Host Configuration Protocol
  • RFC2132:DHCP options and BOOTP Vendor Extensions
  • RFC1542:Clarifications and Extensions for the Bootstrap Protocol
  • RFC3046:DHCP Relay Agent Information option
  • RFC5969:IPv6 Rapid Deployment on IPv4 Infrastructures (6rd) – Protocol Specification

有关DHCP原理详解的更多相关文章

  1. 物联网MQTT协议详解 - 2

    一、什么是MQTT协议MessageQueuingTelemetryTransport:消息队列遥测传输协议。是一种基于客户端-服务端的发布/订阅模式。与HTTP一样,基于TCP/IP协议之上的通讯协议,提供有序、无损、双向连接,由IBM(蓝色巨人)发布。原理:(1)MQTT协议身份和消息格式有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。MQTT传输的消息分为:主题(Topic)和负载(payload)两部分Topic,可以理解为消息的类型,订阅者订阅(Su

  2. Tcl脚本入门笔记详解(一) - 2

    TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是

  3. 【Unity游戏破解】外挂原理分析 - 2

    文章目录认识unity打包目录结构游戏逆向流程Unity游戏攻击面可被攻击原因mono的打包建议方案锁血飞天无限金币攻击力翻倍以上统称内存挂透视自瞄压枪瞬移内购破解Unity游戏防御开发时注意数据安全接入第三方反作弊系统外挂检测思路狠人自爆实战查看目录结构用il2cppdumper例子2-森林whoishe后记认识unity打包目录结构dll一般很大,因为里面是所有的游戏功能编译成的二进制码游戏逆向流程开发人员代码被编译打包到GameAssembly.dll中使用il2ppDumper工具,并借助游戏名_Data\il2cpp_data\Metadata\global-metadata.dat

  4. 【详解】Docker安装Elasticsearch7.16.1集群 - 2

    开门见山|拉取镜像dockerpullelasticsearch:7.16.1|配置存放的目录#存放配置文件的文件夹mkdir-p/opt/docker/elasticsearch/node-1/config#存放数据的文件夹mkdir-p/opt/docker/elasticsearch/node-1/data#存放运行日志的文件夹mkdir-p/opt/docker/elasticsearch/node-1/log#存放IK分词插件的文件夹mkdir-p/opt/docker/elasticsearch/node-1/plugins若你使用了moba,直接右键新建即可如上图所示依次类推创建

  5. 【Elasticsearch基础】Elasticsearch索引、文档以及映射操作详解 - 2

    文章目录概念索引相关操作创建索引更新副本查看索引删除索引索引的打开与关闭收缩索引索引别名查询索引别名文档相关操作新建文档查询文档更新文档删除文档映射相关操作查询文档映射创建静态映射创建索引并添加映射概念es中有三个概念要清楚,分别为索引、映射和文档(不用死记硬背,大概有个印象就可以)索引可理解为MySQL数据库;映射可理解为MySQL的表结构;文档可理解为MySQL表中的每行数据静态映射和动态映射上面已经介绍了,映射可理解为MySQL的表结构,在MySQL中,向表中插入数据是需要先创建表结构的;但在es中不必这样,可以直接插入文档,es可以根据插入的文档(数据),动态的创建映射(表结构),这就

  6. 最强Http缓存策略之强缓存和协商缓存的详解与应用实例 - 2

    HTTP缓存是指浏览器或者代理服务器将已经请求过的资源保存到本地,以便下次请求时能够直接从缓存中获取资源,从而减少网络请求次数,提高网页的加载速度和用户体验。缓存分为强缓存和协商缓存两种模式。一.强缓存强缓存是指浏览器直接从本地缓存中获取资源,而不需要向web服务器发出网络请求。这是因为浏览器在第一次请求资源时,服务器会在响应头中添加相关缓存的响应头,以表明该资源的缓存策略。常见的强缓存响应头如下所述:Cache-ControlCache-Control响应头是用于控制强制缓存和协商缓存的缓存策略。该响应头中的指令如下:max-age:指定该资源在本地缓存的最长有效时间,以秒为单位。例如:Ca

  7. IDEA 2022 创建 Spring Boot 项目详解 - 2

    如何用IDEA2022创建并初始化一个SpringBoot项目?目录如何用IDEA2022创建并初始化一个SpringBoot项目?0. 环境说明1.  创建SpringBoot项目 2.编写初始化代码0. 环境说明IDEA2022.3.1JDK1.8SpringBoot1.  创建SpringBoot项目        打开IDEA,选择NewProject创建项目。        填写项目名称、项目构建方式、jdk版本,按需要修改项目文件路径等信息。        选择springboot版本以及需要的包,此处只选择了springweb。        此处需特别注意,若你使用的是jdk1

  8. 详解Unity中的粒子系统Particle System (二) - 2

    前言上一篇我们简要讲述了粒子系统是什么,如何添加,以及基本模块的介绍,以及对于曲线和颜色编辑器的讲解。从本篇开始,我们将按照模块结构讲解下去,本篇主要讲粒子系统的主模块,该模块主要是控制粒子的初始状态和全局属性的,以下是关于该模块的介绍,请大家指正。目录前言本系列提要一、粒子系统主模块1.阅读前注意事项2.参考图3.参数讲解DurationLoopingPrewarmStartDelayStartLifetimeStartSpeed3DStartSizeStartSize3DStartRotationStartRotationFlipRotationStartColorGravityModif

  9. Slowloris DoS攻击的原理与简单实现 - 2

    前言    Slowloris攻击是我在李华峰老师的书——《MetasploitWeb 渗透测试实战》里面看的,感觉既简单又使用,现在这种攻击是很容易被防护的啦。不过我也不敢真刀实战的去试,只是拿个靶机玩玩罢了。         废话还是写在结语里面吧。(划掉)结语可以不看(划掉)Slowloris攻击的原理        Slowloris是一种资源消耗类DoS攻击,它利用部分HTTP请求进行操作。也叫做慢速攻击,这里的慢速并不是说发动攻击慢,而是访问一条链接的速度慢。Slowloris攻击的功能是打开与目标Web服务器的连接,然后尽可能长时间的保持这些连接打开。如果由多台电脑同时发起Slo

  10. VMware虚拟机与本地主机进行磁盘共享(详解) - 2

    VMware虚拟机与本地主机进行磁盘共享前提虚拟机版本为Windows10(专业版,不是可能有问题)本地主机为家庭版或学生版(此版本会有问题,但有替代方式)最好是专业版VMware操作1.关闭防火墙,全部关闭。2.打开电脑属性3.点击共享-》高级共享-》权限4.如果没有everyone,就添加权限选择完全控制,然后应用确定。5.打开cmd输入lusrmgr.msc(只有专业版可以打开)如果不是专业版,可以跳过这一步。点击用户-》administrator密码要复杂密码,否则不行。推荐admaiN@1234类型的密码。设置完密码,点击属性,将禁用解开。6.如果虚拟机的windows不是专业版,可

随机推荐