抓包分析DHCPv4

   主机通常使用DHCP获得IP地址、子网掩码、路由器的IP地址、DNS服务器的IP地址以及其他配置信息,这些信息也是 一个系统能够在互联网上运行并提供常用服务的基本要素。

    

 

Wireshark抓包:

当前网络状态:联网

由于DHCP在主机连接网络,请求分配配置信息时才会使用,所以要先断开网络,在连接网络时抓包可以看见DHCP请求分配信息的数据包。

cmd下:ipconfg /realse  断开连接

此时也可以看到DHCP的数据包。

过滤协议是:bootp(Wireshark过滤dhcpv4时要使用dhcp), bootp(Internet 引导程序协议)是DHCPv4的前身。

由包可以看出来,这个数据包是由本机发给DHCP服务器的, DHCP Relase表示在租约到期前释放这个IP地址,确实是没有到期,就手动释放了。

下面看详细数据包信息:

可以看出:

1、DHCP是基于UDP的应用层协议。

2、客户端使用端口68,DHCP服务器使用端口67

3、Bootp flags:0x0000(unicast)  表示这是一个单播消息

4、Release 表示在租约到期前就释放了IP

(DHCP是对BOOTP的扩展,所以在DHCP字段中嵌入了BOOTP的字段)

数据包的详细信息在下面讲:

现在还是断网的,开启Wireshark抓包,然后连接网络。因为DHCP是在连接网络时传输的数据包。

查看数据包:

DHCP 四次数据交换:

先看第一个包:

Discover包:

源地址:0.0.0.0 , 因为我们就是要使用DHCP获取IP等配置信息,此时我们的主机是没有IP地址的。

目的地址:255.255.255.255 广播地址,因为Discover包的作用就是在广播域中找DHCP服务器,他并不知道谁是DHCP服务器,所以发送广播,让可以提供IP等信息的DHCP作应答。

黑框中信息,由于主机此时没有IP等相关信息(正在请求),所以全部为0。

 

Offer包:

其中一台DHCP服务器响应Discover包,发送了一个Offer包,可以看到Your IP address字段是这个服务器为主机提供的IP地址。

但是这个包好像是个单播包,而不是广播包(红箭头),按理说服务器发这个包的时候,客户机还没有IP,更不能直接在目的地址字段填上(还没有使用的)这个分配IP,原因不知道还。。。

DHCP除了IP外,还提供了其他配置信息:

 

后面两个包的各字段跟上面是一样的,就不说了。

Request包:向选择的服务器确认配置(广播:意味着其他DHCP服务器也会接收到这个消息,但只有Request包中标识的服务器同意将分配的IP进行绑定)

Ack包:

服务器完成绑定后,回复一个Ack,通知客户机现在可以使用这个IP

如果服务器无法分配这个IP,比如已经通过其他方式分配了或无法使用,这时会回复DHCPNAK消息。

 

当客户机接收到ACK后,可以执行ACD(ipv4重复地址检测),以检测该地址是否已被使用,如果被使用,就发送DHCPDECLINE消息给服务器,通知这个地址不能使用。

 

如果在租约到期前放弃该地址,发送Release(见文章开头)

如果客户机已有一个IP地址,仅希望更新租约,可以路过Discover/Offer消息,而且使用DHCPINFORM代替Request消息,表示自己使用现有的地址但是要获得额外信息(DNS,路由器....)

 

 

有时发现只有两个数据包:Request和Ack, 这是正常的。

如果客户机知道他想获得的地址,DHCP的协议可以简化为仅使用Request和Ack消息。

比如刚刚断开连接,就连接到网络。

Request IP Address为想要的IP地址,此时主机知道自己想要请求的IP,所以可以直接广播发送Request包。

 

如果网络前缀发生变化会产生NAK消息(从家到学校),比如客户机想要请求自己的原地址192.168.1.5,但是此时的网络前缀为10.x.x.x。

那么直接在发送Request包时,就会收到NAK消息,因为在10.x.x.x这个子网中无法分配192.168.1.5这个IP。

 

大体过程如下:

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值