DHCP报文及其格式(dhcp工作时的四种报文)
nanshan 2024-11-17 14:10 49 浏览 0 评论
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)使用UDP协议工作,采用67(DHCP服务器文)和68(DHCP客户端)两个端口号。546号端口用于DHCPv6 Client,而不用于DHCPv4,是为DHCP failover服务。
DHCP客户端向DHCP服务器发送的报文称之为DHCP请求报文,而DHCP服务器向DHCP客户端发送的报文称之为DHCP应答报文。
DHCP采用C/S(客户端/服务器)模式,可以为客户机自动分配IP地址、子网掩码以及缺省网关、DNS服务器的IP地址等,并能够提升地址的使用率。
相关术语:否定应答(称为NAK;或称为NACK;或称为Negative-Acknowledgment)翻译为否定应答或者非应答。这种协议消息在数字通信中被使用。其作用是作为一种确认数据收到的应答,但表明有小错误存在的一种消息信号。
1.DHCP报文种类
DHCP一共有8种报文,分别为DHCP Discover、DHCP Offer、DHCP Request、DHCP ACK、DHCP NAK、DHCP Release、DHCP Decline、DHCP Inform。各种类型报文的基本功能如下:
DHCP Discover
DHCP 客户端在请求 IP 地址时并不知道 DHCP 服务器的位置,因此 DHCP 客户端会在本地网络内以 广播方式发送 Discover 请求报文,以发现网络中的 DHCP 服务器。所有收到 Discover 报文的 DHCP 服务 器都会发送应答报文, DHCP 客户端据此可以知道网络 中存在的 DHCP 服务器的位置。
DHCP Offer
DHCP 服务器收到 Discover 报文后,就会在所配置的 地址池中查找一个合适的 IP 地址,加上相应的租约期 限和其他配置信息(如网关、 DNS 服务器等),构造一 个 Offer 报文,发送给 DHCP 客户端,告知用户本服务 器可以为其提供 IP 地址。但这个报文只是告诉 DHCP 客户端可以提供 IP 地址,最终还需要客户端通过 ARP 来 检测该 IP 地址是否重复。
DHCP Request
DHCP 客户端可能会收到很多 Offer 请求报文,所以必 须在这些应答中选择一个。通常是选择第一个 Offer 应答 报文的服务器作为自己的目标服务器,并向该服务器发 送一个广播的 Request 请求报文,通告选择的服务器, 希望获得所分配的 IP 地址。另外, DHCP 客户端在成 功获取 IP 地址后,在地址使用租期达到50% 时,会向 DHCP 服务器发送单播 Request 请求报文请求续延租约, 如果没有收到 ACK 报文,在租期达到87.5% 时,会再次发送 广播的 Request 请求报文以请求续延租约。
DHCP ACK
DHCP 服务器收到 Request 请求报文后,根据 Request 报文 中携带的用户 MAC 来查找有没有相应的租约记录,如果有 则发送 ACK 应答报文,通知用户可以使用分配的 IP 地址。
DHCP NAK
如果 DHCP 服务器收到 Request 请求报文后,没有发现有相 应的租约记录或者由于某些原因无法正常分配 IP 地址,则向 DHCP 客户端发送 NAK 应答报文,通知用户无法分配合适的 IP 地址。
DHCP Release
当 DHCP 客户端不再需要使用分配 IP 地址时,就会主动向 DHCP 服务器发送 RELEASE 请求报文,告知服务器用户不 再需要分配 IP 地址,请求 DHCP 服务器释放对应的 IP 地址。
DHCP Decline
DHCP 客户端收到 DHCP 服务器 ACK 应答报文后,通过地址 冲突检测发现服务器分配的地址冲突或者由于其他原因导致 不能使用,则会向 DHCP 服务器发送 Decline 请求报文,通知 服务器所分配的 IP 地址不可用,以期获得新的 IP 地址。
DHCP Inform
DHCP 客户端如果需要从 DHCP 服务器端获取更为详细的配 置信息,则向 DHCP 服务器发送 Inform 请求报文; DHCP 服 务器在收到该报文后,将根据租约进行查找到相应的配置信 息后,向 DHCP 客户端发送 ACK 应答报文。目前基本上不用了。
2.DHCP报文格式
DHCP服务的8种报文的格式是相同的,不同类型的报文只是报文中的某些字段取值不同。DHCP报文格式基于BOOTP的报文格式。下面是各字段的说明。
OP:报文的操作类型。分为请求报文和响应报文。1:请求报文,2:应答报文。即client送给server的封包,设为1,反之为2。
请求报文: DHCP Discover、DHCP Request、DHCP Release、DHCP Inform和DHCP Decline。
应答报文: DHCP Offer、DHCP ACK和DHCP NAK。
Htype: DHCP客户端的MAC地址类型。 MAC地址类型其实是指明网络类型 ,Htype值为1时表示为最常见的以太网MAC地址类型。
Hlen: DHCP客户端的MAC地址 长度。以太网MAC地址长度为6个字节,即以太网时Hlen值为6。
Hops:DHCP报文经过的DHCP中继的数目,默认为0。DHCP请求报文每经过一个DHCP中继,该字段就会增加1。没有经过DHCP中继时值为0。( 若数据包需经过router传送,每站加1,若在同一网内,为0。 )
Xid:客户端通过DHCP Discover报文发起一次IP地址请求时选择的随机数,相当于请求标识。用来标识一次IP地址请求过程。在一次请求中所有报文的Xid都是一样的。
Secs:DHCP客户端从获取到IP地址或者续约过程开始到现在所消耗的时间,以秒为单位。在没有获得IP地址前该字段始终为0。( DHCP客户端开始DHCP请求后所经过的时间。目前尚未使用,固定为0。)
Flags:标志位,只使用第0比特位,是广播应答标识位,用来标识DHCP服务器应答报文是采用单播还是广播发送,0表示采用单播发送方式,1表示采用广播发送方式。其余位 尚未使用 。(即 从0-15bits,最左1bit为1时表示server将以广播方式传送封包给client。 )
【注意】在客户端正式分配了IP地址之前的第一次IP地址请求过程中,所有DHCP报文都是以广播方式发送的,包括客户端发送的DHCP Discover和DHCP Request报文,以及DHCP服务器发送的DHCP Offer、DHCP ACK和DHCP NAK报文。当然,如果是由DHCP中继器转的报文,则都是以单播方式发送的。另外,IP地址续约、IP地址释放的相关报文都是采用单播方式进行发送的。(NAK是广播,而DHCP Offer、DHCP ACK是由请求报文的Bootp flags:决定的,flag1回广播,0回单播。)
Ciaddr:DHCP客户端的IP地址。仅在DHCP服务器发送的ACK报文中显示,在其他报文中均显示0,因为在得到DHCP服务器确认前,DHCP客户端是还没有分配到IP地址的。只有客户端是Bound、Renew、Rebinding状态,并且能响应ARP请求时,才能被填充。
Yiaddr:DHCP服务器分配给客户端的IP地址。仅在DHCP服务器发送的Offer和ACK报文中显示,其他报文中显示为0。
Siaddr:下一个为DHCP客户端分配IP地址等信息的DHCP服务器IP地址。仅在DHCP Offer、DHCP ACK报文中显示,其他报文中显示为0。( 用于bootstrap过程中的IP地址)
Giaddr:DHCP客户端发出请求报文后经过的第一个DHCP中继的IP地址。如果没有经过DHCP中继, 则显示为0。( 转发代理(网关)IP地址 )
Chaddr:DHCP客户端的MAC地址。在每个报文中都会显示对应DHCP客户端的MAC地址。
Sname:为DHCP客户端分配IP地址的DHCP服务器名称(DNS域名格式)。在Offer和ACK报文中显示发送报文的DHCP服务器名称,其他报文显示为0。
File:DHCP服务器为DHCP客户端指定的启动配置文件名称及路径信息。仅在DHCP Offer报文中显示,其他报文中显示为空。
Options: 可选项字段,长度可变,格式为"代码+长度+数据"。
报文类型
1: DHCP Discover
2: DHCP Offer
3: DHCP Request
4: DHCP Decline
5: DHCP ACK
6: DHCP NAK
7: DHCP Release
8: DHCP Inform
相关推荐
- Centos7虚拟机安装及网络配置(二)
-
#二、centos7的网络配置-Nat模式NAT模式也是VMware创建虚拟机的默认网络连接模式。使用NAT模式网络连接时,VMware会在主机上建立单独的专用网络,用以在主机和虚拟机之间相互通信。虚...
- 网络分析shell脚本(实时流量+连接统计)
-
介绍一个强大的分析网络的shell脚本,此脚本是从EZHTTP拆分出来的,觉得有必要单独介绍下。脚本运行效果截图:此脚本包含的功能有:1、实时监控任意网卡的流量2、统计10秒内平均流量3、统计每个端口...
- Centos之Could not retrieve mirrorlist解决方案
-
Centos之Couldnotretrievemirrorlist解决方案:vi/etc/sysconfig/network-scripts/ifcfg-你的网卡名字修改:ONBOOT=ye...
- 一文掌握!VirtualBox 中 Rock9.x(Linux)网络配置全攻略
-
一、前言记得我有一篇文章《必看!VirtualBox中Centos7(Linux)网络配置全攻略》讲的非常明细,但是因为CentOS已经停止维护了,可能很多人都不想继续学CentOS,我也是一样,...
- CentOS 6.0 设置IP地址、网关、DNS
-
在做任何操作之前先备份原文件,我们约定备份文件的名称为:源文件名称+bak,例如原文件名称为:centos.txt那么备份文件名称为:centos.txtbak引言:linux的网卡IP地址是存放在文...
- Linux CentOS 基础操作(centos怎么操作)
-
简介:养成学习Linux的好习惯,第一是多查看manpage(manual)等帮助文档和利用好Tab键;第二是掌握好一些快捷键,比如ctrl+c(停止当前进程),ctrl+r(查看命令历史)...
- Linux抓包王者技能!这条命令直接封神,教你精准定位网络问题
-
在网络故障排查和性能调优中,抓包是一项必不可少的技能。对于Linux环境下的网络工程师和运维人员来说,掌握高效抓包方法至关重要。而要说“抓包界的王炸”,那非tcpdump莫属!今天,我们不仅要介绍...
- 「干货」如何在 Linux 上划分VLAN?
-
在某些场景中,我们希望在Linux服务器(CentOS/RHEL)上的同一网卡分配来自不同VLAN的多个ip。这可以通过启用VLAN标记接口来实现,但要实现这一点,首先必须确保交换机上添加多个vl...
- CentOS 8 网络配置实战教程:静态IP、路由与DNS设置
-
一、配置前准备1.查看当前网络信息#查看所有网络接口nmclidevicestatus#查看指定网卡信息(假设网卡名为ens192)ipaddrshowens192#查看路由...
- Debian10.7修改网络配置(debian怎么配置网络)
-
简介:关于Debian获取IP地址的方法主要有两种,动态获取和静态设置。在配置网络之前先要知道Debian的网卡名称是什么,Debian可通过命令#ipa查看网卡名称。本文主要通过介绍Debian...
- 巧用SSH转发功能深入穿透内网(ssh转发udp)
-
ssh能够提供客户端到服务端的加密传输,当http、ftp等协议被防火墙所拦截时,可以考虑使用SSH的端口转发功能,将其它TCP端口的网络数据通过SSH连接来转发。转发方式一共有三种,分别是:动态转发...
- CentOS Linux 7 的IP地址配置(centos7.4配置ip地址)
-
前段时间有位朋友,在一台PC机上安装了CentOSLinux7系统,因为要接入局域网,需要配置IP地址和默认网关信息。于是参照一本Linux教程上编辑网卡配置信息的方法,输入:vim/etc/s...
- 教你如何在 Linux 上划分VLAN(linux怎么分区详解)
-
在某些场景中,我们希望在Linux服务器(CentOS/RHEL)上的同一网卡分配来自不同VLAN的多个ip。这可以通过启用VLAN标记接口来实现,但要实现这一点,首先必须确保交换机上添加多个vl...
- 打通数据高速公路:如何在 CentOS 上使用 Thunderbolt 3 和 4
-
Thunderbolt3与4是现代高速外设连接的代表,带来了40Gbps的惊人带宽,支持数据、视频、音频与供电的“四合一”功能,尤其在专业视频编辑、科研计算、虚拟化扩展等领域具有巨大价值...
- VMware 虚拟机 CentOS7 桥接模式静态 IP 配置全攻略
-
虚拟机桥接模式原理配置成桥接网络连接模式的虚拟机就当作主机所在以太网的一部分,虚拟系统和宿主机器的关系,就像连接在同一个Hub上的两台电脑,可以像主机一样可以访问以太网中的所有共享资源和网络连接,可以...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)