DHCP协议报文的种类

一共有8中报文,包括:DHCP Discovery,DHCP Offer,DHCP Request,DHCP Ack,DHCP Nak,DHCP Release,DHCP Decline,DHCP Inform。报文类型由options字段中的option53“DHCP Message Type”选项来确定。

  1. DHCP Discovery:0x01 客户端请求包
    1. 此报文由client发起,client在请求地址时,并不知道server端的位置,所以client会以广播的方式发送请求报文,它的目的是发现网络中的服务器。
  2. DHCP Offer:0x02 服务器响应包
    1. server收到discovery报文后,会在所配置的地址池中查找一个合适的IP地址,加上相应的租约期限和其他配置信息(如GATEWAY,DNS SERVER等),构造一个OFFER报文,单播发送给用户,告知用户本server可以为其提供IP地址的分配。
  3. DHCP Request:0x03 客户端选择包
    1. 在一个子网中可能有多台服务器,所有收到discovery报文的服务器都会回应offer报文,所以client端可能收到多个offer报文,通常会选择第一个OFFER报文的服务器作为自己的目标服务器,并回应一个request请求报文。在续租约的时候client端也会发送request报文请求续租期。
  4. DHCP Ack:0x05 服务器确认包
    1. 是server对client端的request报文的确认响应报文,server在收到request报文后,根据request报文中携带的client MAC来查找有没有相应的租约记录,如果有则发送ACK报文作为回应,通知client可以使用分配的IP地址。
  5. DHCP Nak:0x06 服务器拒绝包
    1. Server对client的request报文的可以响应拒绝报文,如果服务器没有request请求的ip或租约记录,就会发送NAK报文给client端。
  6. DHCP Release:0x07 客户端释放包
    1. Client端主动释放server端分配给它的IP是,就会发送dhcp release报文给server,server收到这个报文后,就会回收这个IP地址。
  7. DHCP Decline:0x04
    1. client收到server回应的ACK报文后,通过地址冲突检测发现 SERVER分配的地址冲突或由于其它原因导致不能使用,则发送dhcp-decline报文,通知server所分配的IP地址不可用。
  8. DHCP Inform:0x08
    1. 在client已经获得了IP地址,需要从server端获得更详细的配置信息时,就会发送dhcp-inform报文向server请求,server在收到这个报文后,会根据租约查找,找到相应的配置信息后,就会回应dhcp-ack报文给client。

动态获取ip流程

image.png

  • 发现阶段 DHCP Discovery
    • client向子网内广播发送DHCP discovery报文,目的是在子网络中发现能够给client端提供IP地址的server端image.png
  • 提供阶段 DHCP Offer
    • 子网中DHCP server接受到Discovery包之后,通过发送DHCP Offer包给client端应答,主要是告知client端可以提供IP地址,以及相应的IP地址租约信息和其他配置信息也会在其中。image.png
  • 选择阶段 DHCP Request
    • 在client端可能会接受到多个offer包,通常client只会接受收到的第一个DHCP Offer报文,然后client端就会以广播的方式发送一个DHCP request报文请求分配IP地址。image.png
  • 确认阶段 DHCP Ack
    • server端在收到DHCPRequest报文之后,会判断”option”字段的serverIP地址是否是自己的IP地址,如果符合分配IP地址的条件,就会给client发送一个DHCP ACK包,如果不满足就会发送一个DHCP Nak包image.png

注意:客户端执行DHCP Discovery后,如果没有DHCP Server响应客户端的请求,客户端会随机使用169.254.0.0/16网段中的一个IP地址配置到本机地址。
169.254.0.0/16是Windows的自动专有IP寻址范围,也就是在无法通过DHCP获取IP地址时,由系统自动分配的IP地址段。

client主动释放ip

Client向server单播发送一个DHCP Release报文。
image.png

client重新使用ip

网络断开连接后,重新连网可以不从初始阶段发送DHCP Discovery报文开始,直接广播发送DHCP Request报文给服务器。
image.png

Client续约租期

image.png

  1. 当client IP地址已经用到50%的时间,续租一下,client端就会以单播形式向服务端发送一个DHCP Request包;
    1. 当server响应时就会回应一个ACK包,会重新约定一个时间。
    2. 当server没有响应,client会继续使用,当使用到87.5%时,会再续租一次,同时就以广播的方式是发送一个request包;
      1. 当server响应时回应一个ACK包,会重新约定一个时间。
      2. 当server还是没有响应,client那就直接使用到过期。