DHCP工作原理
DHCP:Dynamic Host Configurtion Protocol
DHCP的工作原理(UDP)

1.客户端:首先会发送给一个dhcp discovery(广播)报文,报文中的2层和3层都是广播地址。
2.服务器:收到客户端发来的discovery报文后,单播回复一个dhcp offer(单播)报文(包含IP地址、租约信息、dns等),同时dhcp服务器也会生成一个租期表格(ip地址、租期、mac)。ps:此处为单播主要是原因是交换机有这client的mac列表,所以可以单播回复,减少资源消耗。
3.客户端:收到服务器来的dhcp offer报文后,广播发送一个dhcp request报文。包含自己的IP地址信息,目的是为了①:告诉别的DHCP服务器,我已经有地址了,你们之前准备分给我的地址,你们可以收回了。②告诉选中的DHCP,我选择你了,你的地址我准备用了。
4.服务器:收到客户端发来的dhcp request报文后,会发送一个dhcp ack或dhcp nak.服务器检测后可以用,就回复ACK,如果地址冲突或者无效就回复NAK,客户端重新获取地址。
5.客户端:获取地址成功后,会发送1~3个DAD(免费ARP),确保地址在广播网中可以使用。
DHCP租期
客户端:当客户端的地址租期到50%的时候,会主动发送一个dhcp request(单播),请求续租地址。如果服务器不回复,时间到达87.5%的时候,客户端会再发送一个dhcp request(广播)报文,请求续租地址。华为默认是1天(24h)。
dhcp报文
- discovery:client发现DHCPserver报文

- offer:server给客户端分配的地址

- request:client请求报文(①一开始请求地址②后来续租地址)

- ack:server对client报文的确认

- nak:Server对Client的DHCPREQUEST报文的拒绝响应报文,Client收到此报文后,一般会重新开始新的DHCP过程。
- release:client释放地址发送的报文

- inform:client获取更多的地址信息,例如后期需要获取DNS(之前手动)。
- decline:Client发现Server分配给它的IP地址无法使用,如IP地址冲突时,将发出此报文,通知Server禁止使用IP地址

DHCP-request发送时间
从抓包来看,应该是0s、2s、5s、10s

DHCP中继
原理:

- 发现阶段
DHCP中继接收到DHCP客户端广播发送的DHCP DISCOVER报文后,进行如下处理:- 检查DHCP报文中的hops字段,如果大于16,则丢弃DHCP报文;否则,将hops字段加1(表明经过一次DHCP中继),并继续下面的操作。
DHCP报文中的hops字段表示DHCP报文经过的DHCP中继的数目,该字段由客户端或服务器设置为0,每经过一个DHCP中继时,该字段加1。hops字段的作用是限制DHCP报文所经过的DHCP中继的数目。目前,设备最多支持DHCP客户端与服务器之间有存在16个中继。 - 检查DHCP报文中的giaddr字段。如果是0,将giaddr字段设置为接收DHCP DISCOVER报文的接口IP地址。如果不是0,则不修改该字段,继续下面的操作。
DHCP报文中的giaddr字段标识客户端网关的IP地址。如果服务器和客户端不在同一个网段且中间存在多个DHCP中继,当客户端发出DHCP请求时,第一个DHCP中继会把自己的IP地址填入此字段,后面的DHCP中继不修改此字段内容,DHCP服务器会根据此字段来判断出客户端所在的网段地址,从而为客户端分配该网段的IP地址。 - 将DHCP报文的目的IP地址改为DHCP服务器或下一跳中继的IP地址,源地址改为中继连接客户端的接口地址,通过路由转发将DHCP报文单播发送到DHCP服务器或下一跳中继。
如果DHCP客户端与DHCP服务器之间存在多个DHCP中继,后面的中继接收到DHCP DISCOVER报文的处理流程同前面所述。
- 检查DHCP报文中的hops字段,如果大于16,则丢弃DHCP报文;否则,将hops字段加1(表明经过一次DHCP中继),并继续下面的操作。
- 提供阶段
DHCP服务器接收到DHCP DISCOVER报文后,选择与报文中giaddr字段为同一网段的地址池,并为客户端分配IP地址等参数,然后向giaddr字段标识的DHCP中继单播发送DHCP OFFER报文。
DHCP中继收到DHCP OFFER报文后,会进行如下处理:
- 检查报文中的giaddr字段,如果不是接口的地址,则丢弃该报文;否则,继续下面的操作。
- DHCP中继检查报文的广播标志位。如果广播标志位为1,则将DHCP OFFER报文广播发送给DHCP客户端;否则将DHCP OFFER报文单播发送给DHCP客户端。
报文格式
重点关注2个字段

Giaddr:该字段表示第一个DHCP中继的IP地址(注意:不是地址池中定义的网关)。当客户端发出DHCP请求时,如果服务器和客户端不在同一个网络中,那么第一个DHCP中继在转发这个DHCP请求报文时会把自己的IP地址填入此字段。服务器会根据此字段来判断出网段地址,从而选择为用户分配地址的地址池。服务器还会根据此地址将响应报文发送给此DHCP中继,再由DHCP中继将此报文转发给客户端。若在到达DHCP服务器前经过了不止一个DHCP中继,那么第一个DHCP中继后的中继不会改变此字段,只是把Hops的数目加1。
chaddr:该字段表示客户端的MAC地址,此字段与前面的"Hardware Type"和"Hardware Length"保持一致。当客户端发出DHCP请求时,将自己的硬件地址填入此字段。对于以太网,当"Hardware Type"和"Hardware Length"分别为"1"和"6"时,此字段必须填入6字节的以太网MAC地址。
DHCP工作原理的更多相关文章
- DHCP 工作原理
DHCP 详解 DHCP 工作原理 一.什么是DHCP? DHCP,动态主机配置协议,前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工作,常用的2个端口:67(DHCP server), ...
- DHCP工作原理简析
引言 DHCP是网络体系结构中应用层的一个重要协议,它可以帮助我们对要连接到互联网的计算机进行IP地址等信息的配置.本文从DHCP的原理出发,就DHCP的工作过程 进行详细的探讨. 主要报文 发现报文 ...
- linux下DHCP服务原理总结
DHCP(全称Dynamic host configuration protocol):动态主机配置协议DHCP工作在OSI的应用层,可以帮助计算机从指定的DHCP服务器获取配置信息的协议.(主要包括 ...
- DHCP服务原理
DHCP 工作原理 一.什么是DHCP? DHCP,动态主机配置协议,前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工作,常用的2个端口:67(DHCP server),68(DHCP ...
- DHCP的原理与配置
DHCP 动态主机配置协议(Dynamic Host Configuration Protocol) 可以减少管理员的工作量 避免用户手工配置网络参数时造成的地址冲突 DHCP报文类型: 报文类型 ...
- DHCP的原理和配置
前言 在大型企业网络中,会有大量的主机或设备需要获取IP地址等网络参数.如果采用手工配置,工作量大且不好管理,如果有用户擅自修改网络参数,还有可能会造成 IP地址冲突等问题.使用动态主机配置协议DHC ...
- DHCP租约时间工作原理
问题: 很多用户在使用路由器的DHCP服务器过程中都有一个疑问,DHCP有个设置项目是设置DHCP地址的租约时间,如果设置的比较短,是否会出现租约时间到了以后会重新去获取ip地址,造成用户断网? ...
- DHCP及DHCP多作用域服务器工作原理
一.DHCP服务是什么 DHCP称为动态主机配置协议.DHCP服务允许工作站连接到网络并且自动获取一个IP地址.配置DHCP服务的服务器可以为每一个网络客户提供一个IP地址.子网掩码.缺省网关.一个W ...
- CentOS6下DHCP服务(一)工作原理及安装配置说明
1.DHCP服务用途 DHCP是Dynamic Host Configuration Protocol的简写,DHCP服务器最主要的工作就是自动地将网络参数分配给网络中的每台计算机,让客户端的计算机在 ...
随机推荐
- 详述盒子模型(包含padding、border、margin的详细用法和描述)
提起盒子模型,我想无论是对于一个前端资深开发人员还是前端入门开发人员来说都不陌生,这是CSS最基础的知识. 但是惭愧地说,我之前理解的盒子模型,只是文字上的理解.我知道定义一个元素的宽度和高度时,设置 ...
- Docker学习(1) 初识
Docker的使用场景 1 使用Docker容器开发,测试,部署服务 2 创建隔离的运行环境 3 搭建测试环境 4 构建多用户的平台及服务(PaaS)基础设施 5 提供软件即服务(SaaS)应用程序 ...
- Jmeter——元件扩展,使其功能更全面
工具扩展 在之前的博文中,有介绍自定义函数.Java请求扩展,博文如下: Jmeter二次开发--基于Java请求 Jmeter二次开发--自定义函数 上述内容,是按自己的需要来进行针对性扩展,从而实 ...
- TVM量化小结手册
TVM量化小结手册 文章目录 Offical References TVM quantization roadmap INT8 quantization proposal Quantization S ...
- ARM-CPU卷积网络的自动调谐
ARM-CPU卷积网络的自动调谐 为特定的ARM设备自动调谐对于获得最佳性能至关重要.这是一个关于如何调整整个卷积网络的资料. 以模板的形式编写了TVM中ARM CPU的操作实现.模板有许多可调旋钮( ...
- 35 张图带你 MySQL 调优
这是 MySQL 基础系列的第四篇文章,之前的三篇文章见如下链接 138 张图带你 MySQL 入门 47 张图带你 MySQL 进阶!!! 炸裂!MySQL 82 张图带你飞 一般传统互联网公司很少 ...
- 「题解」300iq Contest 2 H. Honorable Mention
本文将同步发布于: 洛谷博客: csdn: 博客园: 简书. 题目 题目链接:gym102331H. 题意概述 给定一个长度为 \(n\) 的序列 \(a\),有 \(q\) 次询问,每次询问给定三个 ...
- NOIP模拟测试5「星际旅行·砍树·超级树」
星际旅行 0分 瞬间爆炸. 考试的时候觉得这个题怎么这么难, 打个dp,可以被儿子贡献,可以被父亲贡献,还有自环,叶子节点连边可以贡献,非叶子也可以贡献,自环可以跑一回,自环可以跑两回, 关键是同一子 ...
- 解决SpringMVC重复提交的问题
方法一:通过重定向采取请求转发的方式完成表单内容的添加会造成内容的重复插入.当向Servlet发送一条增加记录的请求后,servlet首先向数据库增加一条记录,然后又从数据库中查询出所有数据,接着转发 ...
- Android系统编程入门系列之清单文件
在上一篇文章中已经提到,Android系统加载应用程序之后,首先会读取该应用程序的AndroidManifest.xml清单文件,之后根据该清单文件加载后边的东西.所以要开发应用程序,自然要先知道清单 ...