DHCP协议
目录
1. DHCP协议
1.1 DHCP介绍
- DHCP:Dynamic Host Configure Protocol, 动态主机配置协议
- 动态分配TCP/IP信息(IP地址、子网掩码、默认网关、DNS服务器等)
- 分配有租约的信息
- UDP封装,服务器端口:67,客户机端口:68
- DHCP Client(客户端):通过DHCP协议请求获取IP地址等网络参数的设备
- DHCP Server(服务器):提供DHCP功能的服务器或网络设备
- DHCP Relay(中继):负责转发DHCP服务器和DHCP客户端之间的DHCP报文,协助DHCP服务器客户端动态分配网络参数的设备
1.3 DHCP报文类型
报文类型 | 含义 |
DHCP Discover | 客户端用来寻找DHCP服务器 |
DHCP Offer | DHCP服务器来响应DHCP Discover报文,此报文携带了各种配置信息 |
DHCP Request | 客户端请求配置确认,或者续借租期 |
DHCP ACK | 服务器对Request报文的确认响应 |
DHCP NAK | 服务器对Request报文的拒绝响应 |
DHCP Release | 客户端要释放地址时用来通知服务器 |
1.4 DHCP工作流程
- 发现阶段,即DHCP客户机寻找DHCP服务器的阶段。DHCP客户机以广播方式(因为DHCP服务器的IP地址对于客户机来说是未知的)发送DHCP discover发现信息来寻找DHCP服务器,即向地址255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。
- 提供阶段,即DHCP服务器提供IP地址的阶段。在网络中接收到DHCP discover发现信息的DHCP服务器都会做出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含出租的IP地址和其他设置的DHCP offer提供信息。
- 选择阶段,即DHCP客户机选择某台DHCP服务器提供的IP地址的阶段。如果有多台DHCP服务器向DHCP客户机发来的DHCP offer提供信息,则DHCP客户机只接受第一个收到的DHCP offer提供信息,然后它就以广播方式回答一个DHCP request请求信息,该信息中包含向它所选定的DHCP服务器请求IP地址的内容。之所以要以广播方式回答,是为了通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址。
- 确认阶段,即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到DHCP客户机回答的DHCP request请求信息之后,它便向DHCP客户机发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,告诉DHCP客户机可以使用它所提供的IP地址。然后DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址。
- 重新登录。以后DHCP客户机每次重新登录网络时,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时(比如此IP地址已分配给其它DHCP客户机使用),则DHCP服务器给DHCP客户机回答一个DHCP nak否认信息。当原来的DHCP客户机收到此DHCP nak否认信息后,它就必须重新发送DHCP discover发现信息来请求新的IP地址。
- 更新租约。DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。
2. DHCP租期
2.1 DHCP 租期介绍
- DHCP服务器采用动态分配机制给客户端分配的IP时,分配出去的IP地址有租期限制。DHCP客户端向服务器申请地址时可以携带期望租期,服务器可以分配租期时把客户期望租期和地址池中的租期比较,分配其中一个较短的租期给客户端。
2.2 DHCP 租期更新
- 当租期达到1/2(T1)时,DHCP客户端会自动以单播的方式向DHCP服务器发送DHCP Request 报文请求更新的IP地址租期。
- 如果收到DHCP服务器回应的DHCP ACK 报文,则租期更新成功(即租期从0开始计算)
- 如果收到DHCP服务器回应的DHCP NAK报文,则重新发送DHCP Discover报文请求新的IP地址
2.3 DHCP 重绑定
- 当租期达到7/8(T2)时,若仍未收到DHCP服务器的应答,DHCP客户端会自动以广播的方式向DHCP发送DHCP Request 报文请求更新的IP地址租期。
- 若收到DHCP服务器回应的DHCP ACK报文,则租期更新成功(即租期从0开始计算)。
- 若收到DHCP服务器回应的是NAK报文,则重新发送DHCP Discover 报文请求新的IP地址。
2.4 租期到期
- 若租期时间到时都没有收到服务器的回应,客户端停止使用此IP地址,重新发送DHCP Discover 报文请求新的IP地址。
2.5 扩展
- 地址释放:客户端在租期时间到之前,如果用户不想使用分配的IP地址(例如客户端网络位置需要变更时),会触发DHCP客户端向DHCP服务器发送DHCP Release 报文,通知DHCP服务器释放IP地址的租期。
- DHCP服务器会保留这个DHCP客户端的配置信息,将IP地址列为曾经分配过的IP地址中,以便后续重新分配给该客户端或其他客户端
- 客户端可以通过发送DHCP inform 报文向服务器请求更新配置信息
- DHCP客户端非首次接入网络时,可以重用曾经使用过的地址
3. DHCP配置演示
DHCP过程wireshark抓包分析
开启wireshark抓包工具,选择相应接口,使用bootp过滤报文
- 目前已获取IP,使用ipconfig/release 释放IP
重新获取IP,ipconfig/renew
PC释放IP时的报文DHCP Release
DHCP discover 广播报文\
- DHCP Offer报文
Request 报文
- DHCP ACK报文