DHCP原理及报文格式
DHCP原理及报文格式
DHCP(Dynamic Host Configuration
Protocol,动态主机配置协议)是IETF为实现IP的自动配置而设计的协议,它可以为客户机自动分配IP地址、子网掩码以及缺省网关、DNS服务器的IP地址等TCP/IP参数。了解DHCP工作过程可以帮助我们排除有关DHCP服务遇到的问题。DHCP
协议是基于UDP层(这也就是说在snort检测过程中,只能看UDP的包)之上的应用,dhcp使用udp携带报文,udp封装在ip数据包中发送。我们先来看下dhcp报文格式

OP:若是client送给server的封包,设为1,反向为2;
Htype:硬件类别,ethernet为1;
Hlen:硬件长度,ethernet为6;
Hops:若数据包需经过router传送,每站加1,若在同一网内,为0;
Transaction ID:事务ID,是个随机数,用于客户和服务器之间匹配请求和相应消息;
Seconds:由用户指定的时间,指开始地址获取和更新进行后的时间;
Flags:从0-15bits,最左1bit为1时表示server将以广播方式传送封包给 client,其余尚未使用;
Ciaddr:用户IP地址;
Yiaddr:客户IP地址;
Siaddr:用于bootstrap过程中的IP地址;
Giaddr:转发代理(网关)IP地址;
Chaddr:client的硬件地址;
Sname:可选server的名称,以0x00结尾;
File:启动文件名;
Options:,厂商标识,可选的参数字段
下面我们主要说下客户机从dhcpserver获取ip的过程,它处于6中状态分别是初始状态,选择状态,请求状态,绑定状态,重新获取状态,重新绑定状态。我们就结合我下面画的这张图好好说下

1.主机启动,dhcp处于INI状态为了获取ip地址,DHCP客户机初始化TCP/IP,通过UDP端口67向网络中发送一个DHCPDISCOVER广播包,请求租用IP地址。该广播包中的源IP地址为0.0.0.0,目标IP地址为255.255.255.255;包中还包含客户机的MAC地址和计算机名,本地所有的dhcpserver会收到这个报文,数据包中的目标端口设为BOOTP67端口。这时dhcp会处于select状态。
2.处于select状态的主机会接受dhcpserver发来的dhcpoffer报文,每个报文中会包含为客户机配置的信息以及server为客户机提供的租用ip,一般主机会受到零个或者多个offer报文(一般主机会响应第一个offer报文),并与server协商相关事宜,为此主机会发送一个dhcpquest报文,并进入request状态。
3.dhcpserver会给客户机一个ack的确认信息,这时一个dhcp获取过程结束。主机进入BIND稳定状态。
4.假如主机不需要ip地址或者需要换个ip,这时主机会发送一个dhcprelease报文向dhcpserver,这时主机重新处于初始状态。
5.一般服务器给客户机的ip地址都有租期,时间长短不等,而dhcp主机会有3个计时器,当择期过半50%,这时主机会发送一个
dhcprequest报文要求续租进入renew状态,serverdhcp会响应这个报文发送ack确认信息,这时dhcp会重新进入BOND状态。
6.假如dhcpserver没有响应主机的请求,等租期到了87.5%这时主机会重新发送dhcprequest报文要求续租,主机进入
rebind状态,假如这时候dhcpserver不高兴(ip地址不够用)发送来一个否确认信息,这时主机会重新进入初始状态再次按照1——4步骤重新申请ip。假如收到ack老大的确认续租成功,说明这个ip我们还可以继续使用。没有响应,我们的主机只有等到我们ip租期耗尽,重新进入初始状态重新获取。
报文类型:
1)DHCPDISCOVER(0x01),此为Client开始DHCP过程的第一个报文
2)DHCPOFFER(0x02),此为Server对DHCPDISCOVER报文的响应
3)DHCPREQUEST(0x03),此报文是Client开始DHCP过程中对server的DHCPOFFER报文的回应,或者是Client续延IP地址租期时发出的报文
4)DHCPDECLINE(0x04),当Client发现Server分配给它的IP地址无法使用,如IP地址冲突时,将发出此报文,通知Server禁止使用IP地址
5)DHCPACK(0x05),Server对Client的DHCPREQUEST报文的确认响应报文,Client收到此报文后,才真正获得了IP地址和相关的配置信息。
6)DHCPNAK(0x06),Server对Client的DHCPREQUEST报文的拒绝响应报文,Client收到此报文后,一般会重新开始新的DHCP过程。
7)DHCPRELEASE(0x07),Client主动释放server分配给它的IP地址的报文,当Server收到此报文后,就可以回收这个IP地址,能够分配给其他的Client。
8)DHCPINFORM(0x08),Client已经获得了IP地址,发送此报文,只是为了从DHCP SERVER处获取其他的一些网络配置信息,如route ip,DNS Ip等,这种报文的应用非常少见。
如:运行IPCONFIG/RELEASE后,PC会发出释放IP的报文,DHCP Message Type是7,他的作用是主动释放server分配给它的IP地址的报文,Server收到此报文后,就可以回收这个IP地址,能够分配给其他的Client。
如果一台客户机未从该DHCP服务器获取过地址,或者它获得的地址已过期,那么它将需要经过全部四个步骤才能得到一个IP地址。
原文地址:https://www.2cto.com/net/201303/197467.html
DHCP原理及报文格式的更多相关文章
- http请求报文格式和响应报文格式
转载 出处 超文本传输协议(Hypertext Transfer Protocol,简称HTTP)是应用层协议.HTTP 是一种请求/响应式的协议,即一个客户端与服务器建立连接后,向服务器发送一个请求 ...
- http请求报文格式(请求行、请求头、空行 和 请求包体)和响应报文格式(状态行、响应头部、空行 和 响应包体)
转载 出处 超文本传输协议(Hypertext Transfer Protocol,简称HTTP)是应用层协议.HTTP 是一种请求/响应式的协议,即一个客户端与服务器建立连接后,向服务器发送一个请求 ...
- DHCP原理
一台主机的ip地址可用通过两种方式来设置.1 手动输入:2 自动向DHCP服务器获取.手动输入会出现错误,比如输入一个已经分配的ip地址,当内网机器只有几台,十几台还可以忍受,如果是几百台呢,不可能一 ...
- 第十九章 DHCP原理介绍
一.为什么使用DHCP 1.手动为局域网中大量主机配置IP地址.掩码.网关等参数的工作繁琐,容易出错 2.DHCP可以自动为局域网中主机完成TCP/IP协议配置 3.DHCP自动配置避免了IP地址冲突 ...
- 3.DHCP原理
1.DHCP服务器给首次接入网络的客户端分配网络参数的工作原理 只有跟DHCP客户端在同一个网段的DHCP服务器才能收到DHCP客户端广播的DHCP DISCOVER报文.当DHCP客户端与DHCP服 ...
- DNS报文格式(RFC1035)
一.域名和资源记录的定义 1.Name space definitions 2.资源记录定义(RR definitions) 2.1 格式 后面分析报文的时候详细解释. ...
- 报文格式:xml 、定长报文、变长报文
目前接触到的报文格式有三种:xml .定长报文.变长报文 . 此处只做简单介绍,日后应该会深入学习到三者之间如何解析,再继续更新.——2016.9.23 XML XML 被设计用来传输和存储数据. H ...
- HTTP POST请求报文格式分析与Java实现文件上传
时间 2014-12-11 12:41:43 CSDN博客 原文 http://blog.csdn.net/bboyfeiyu/article/details/41863951 主题 HTTPHt ...
- DNS报文格式
原文链接地址:http://blog.chinaunix.net/uid-24875436-id-3088461.html DNS报文格式(借个图贴过来): 说明一下:并不是所有DNS报文都有 ...
随机推荐
- js Array 的所有方法
下面的这些方法会改变调用它们的对象自身的值: Array.prototype.copyWithin() 在数组内部,将一段元素序列拷贝到另一段元素序列上,覆盖原有的值. Array.prototyp ...
- 「题解」「JZOJ-4238」纪念碑
题目 在 \(N\times M\) 的网格中,有 \(P\) 个矩形建筑,求一个最大边长的正方形,使得网格中能找到一个放置正方形的地方,不会与建筑重合. 保证 \(N,M\le 10^6,P\le ...
- Lc626_换座位
626. 换座位 SQL架构 小美是一所中学的信息科技老师,她有一张 seat 座位表,平时用来储存学生名字和与他们相对应的座位 id. 其中纵列的 id 是连续递增的 小美想改变相邻俩学生的座位. ...
- 银行T0理财怎么选
## 从现金管理说开去 现金是资产配置中的基石,买股票需要花掉现金,吃饭消费也要花掉现金.现金和我们的生活息息相关,需要慎重地管理起来,因此现金管理应运而生. 现金管理需要兼顾 *流动性* 和 *收益 ...
- 每天进步一点点------SOPC的Avalon-MM IP核(四) KEY_LED IP定制
/********************************************************************************* * Company : * Eng ...
- GIT分布式代码管理系统
1:GTI介绍及使用 环境搭建: 服务器 IP地址 主机名 角色 Centos7.5 192.168.200.113 gitserver GIT服务器 Centos7.5 192.168.200.11 ...
- Centos6.10-FastDFS-存储器Http配置
Centos610系列配置 1.准备配置 cd /opt/download/fastdfs-master/confcp http.conf /etc/fdfs/http.confcp mime.typ ...
- Centos6.10-FastDFS-Storage.conf配置示例
Centos610系列配置 # is this config file disabled # false for enabled # true for disabled disabled = fals ...
- CentOS7.6配置ip
查看CentOS版本信息 [root@localhost ~]# cat /etc/redhat-release CentOS Linux release (Core) 配置ip [root@loca ...
- java篇 之 变量存放位置
一:在方法中声明的变量,即该变量是局部变量,每当程序调用方法时,系统都会为该方法建立一个方法栈,其所在方法中声明的变量就放在方法栈中,当方法结束系统会释放方法栈,其对应在该方法中声明的变量随着栈的销毁 ...