感谢Apollyon_Lei为本文指出错误!
本文修改于:2018年4月12日
更多精彩内容,请见:http://www.16boke.com
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
报文类型
|
说明
|
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
应答报文。目前基本上不用了。
|
DHCP服务的8种报文的格式是相同的,不同类型的报文只是报文中的某些字段取值不同。DHCP报文格式基于BOOTP的报文格式。下面是各字段的说明。
OP:报文的操作类型。分为请求报文和响应报文。1:请求报文,2:应答报文。即client送给server的封包,设为1,反之为2。
代码 |
长度(字节)
|
说明
|
1
|
4
|
子网掩码
|
3
|
长度可变,必须是4个字节的倍数。 |
默认网关(可以是一个路由器IP地址列表)
|
6
|
长度可变,必须是4个字节的整数倍。 |
DNS服务器(可以是一个DNS服务器IP地址列表)
|
15
|
长度可变 |
域名称(主DNS服务器名称)
|
44
|
长度可变,必须是4个字节的整数倍。 |
WINS服务器(可以是一个WINS服务器IP列表)
|
51
|
4
|
有效租约期(以秒为单位)
|
53
|
1
|
报文类型
1: DHCP Discover 2: DHCP Offer 3: DHCP Request 4: DHCP Decline 5: DHCP ACK 6: DHCP NAK 7: DHCP Release 8: DHCP Inform |
58
|
4
|
续约时间
|
更多精彩内容,请见:http://www.16boke.com
关于更新租约: