获取dhcp数据包就用tcpdump

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。

我们可以在 linux上面用tcpdump抓取dhcp的数据包,然后再用wireshark分析一下 。

可以看到,wireshark捕获了4个DHCP包,分别是discover、offer、request、ack。
这刚好就对应着主机向DHCP服务器请求分配IP的4个过程:DHCP服务器发现、DHCP服务器提供、DHCP请求、DHCP ACK。
接下来详细看看每个报文的具体内容:

一、Discover:DHCP服务器发现

从包的信息可以看出,DHCP包的传输层协议是UDP,端口号是67。因为此时主机不知道自己的IP地址,也不知道DHCP服务器的地址,所以使用源地址0.0.0.0和广播目的地址255.255.255.255。

二、Offer:DHCP服务器提供

DHCP服务器收到一个DHCP发现报文后,用一个DHCP提供报文进行响应。从包中可以看出服务器IP地址为192.168.1.1,分配给主机的IP地址是192.168.1.103。该报文的事务ID是0x8100beb0,和上一个发现报文的事务ID是一样的。
另外,还可以从Option字段里获得IP地址租用期、子网掩码、路由信息等。

三、Request:DHCP请求

主机收到Offer报文后,用一个DHCP请求报文进行响应,此时和DHCP发现报文一样,都是使用源地址0.0.0.0和广播目的地址255.255.255.255。并且重新选择一个新的事务ID以及回显配置参数。如请求的IP地址等。

四、ACK:DHCP ACK应答

最后,服务器用DHCP ACK报文对DHCP请求报文进行响应,证实所要求的参数。
至此,整个IP请求分配过程就完成了,客户端能够在租用期内使用DHCP分配的IP地址。
————————————————

猜你喜欢

转载自blog.51cto.com/15117737/2642719