电脑初次接入网络DHCP自动获取IP过程抓包:
可看出DHCP交互有四个过程,终端电脑在收到服务器的DHCP ACK包后,会再发送ARP包,以确认网络内无终端使用此IP,若确认无IP冲突后才把DHCP获取的IP配置到本地连接上。
报文格式:
字段含义:
字段 | 长度(Byte) | 含义 |
Message type | 1 | 表示报文类型,1为客户端请求报文,2为服务器响应报文 |
Hardware type | 1 | 表示硬件地址类型,常见为以太网 |
Hardware address Length | 1 | 表示硬件地址长度 |
Hops | 1 | 表示经过的DHCP Relay数目。该字段由客户端设置为0,每经过一个DHCP Relay时,该字段加1 |
Transaction ID | 4 | 由DHCP客户端选取随机数,使DHCP服务器的回复与DHCP客户端的报文相关联 |
Seconds elapsed | 2 | |
Bootp flags | 2 | 客户端请求服务器发送响应报文的形式,只有最高位有意义。最高位为0时请求发送单播响应,最高位为1时请求发送广播响应 |
Client IP address | 4 | |
Your(client)IP address | 4 | 当服务器进行DHCP响应(Offer与Ack)时,将分配给客户端的IP地址填入此字段 |
Next server IP address | 4 | 表明DHCP协议流程的下一个阶段要使用的服务器的IP地址 |
Relay agent IP address | 4 | DHCP中继时使用,当客户端发出DHCP请求时,第一个DHCP中继设备在将DHCP请求报文转发给DHCP服务器时,会把自己的IP地址填入此字段 |
Client MAC address | 4 | 由客户端填充,客户端的MAC地址 |
Server host name | 表示客户端获取配置信息的服务器名字。此字段由DHCP服务器填写,本字段是可选的 | |
Boot file name | 表示客户端启动DHCP相关配置的文件名。此字段由DHCP服务器填写,随着DHCP地址分配的同时下发至客户端。本字段是可选的 | |
Option | 可变 | 可变长度字段,最多为312Byte,此字段包含了DHCP报文类型,服务器分配给 终端的配置信息,如网关IP地址,DNS服务器的IP地址,客户端可以使用IP地址的有效租期等信息。 |
Option字段:
Options字段由Type、Length和Value三部分组成。其中Type字段取值范围1~255。常见的Options如下表所示:
举例:
如下为客户端发送的DHCP Discover的包,通过options字段,type为53,Length为1,Value为1
Option字段Type 53详解:
DHCP报文通过Options选项中的Type=53来表示DHCP的报文类型。Value取值从01到08分别表示不同的DHCP报文类型。
Option Type | Length | Value | 报文类型 | 含义 |
53 | 1 | 1 | DHCP Discover | DHCP客户端首次接入网络时进行DHCP交互过程发送的第一个消息,用来寻找DHCP服务器 |
53 | 1 | 2 | DHCP Offer | DHCP服务器响应客户的Discover消息,此消息里携带了各种配置信息 |
53 | 1 | 3 | DHCP Request | 1.客户端广播请求回应DHCP服务器Offer消息 2.客户端重启后广播确认之前的IP地址等配置信息 3.续租 |
53 | 1 | 4 | DHCP Decline | 当客户端发现服务器分配给它的IP地址发生冲突时会通过发送此消息来通知服务器 |
53 | 1 | 5 | DHCP Ack | DHCP服务器对客户端的DHCP REQUEST消息的确认响应消息 |
53 | 1 | 6 | DHCP Nak | 服务器对客户端的DHCP REQUEST消息的拒绝响应消息 |
53 | 1 | 7 | DHCP release | 客户端可通过发送此消息主动释放服务器分配给它的IP地址 |
53 | 1 | 8 | DHCP Inform | DHCP客户端获取IP地址后,如果需要向DHCP服务器获取更为详细的配置信息(网关地址、DNS服务器地址) |
DHCP Discover包:
客户端广播DHCP Discover消息寻找局域网的DHCP服务器,用的UDP协议端口号67, Bootp flags里明确要求服务器以单播的方式回复消息,并在Client MAC address字段写入自身MAC,在Option字段53里明确发送的是Discover包
DHCP Offer包:
DHCP服务器收到客户的Discover包后,根据Discover包的Bootp flags以单播方式回应DHCP Offer消息,在(Your (client) IP address字段里携带了分配给客户端的IP地址及Options其它信息如DNS、掩码、网关、租期时间。
DHCP Request包:
客户收到服务器的Offer消息后,以广播的方式回复Request消息,消息里包含了需要获取的IP、DNS、掩码、网关确认信息
Option字段展开
DHCP ACK包:
展开option