首页 > 代码库 > 【基础】通过抓包分析微软DHCP报文和其它系统DHCP报文的不同(对比后才知道微软有多次)

【基础】通过抓包分析微软DHCP报文和其它系统DHCP报文的不同(对比后才知道微软有多次)


1.    实验网络拓扑

 

使用ENSP模拟器(版本V100R002C00 1.2.00.350

wKiom1SPxK6yp6zgAABOj8xNwUc951.jpg

 

 

2.      实验需求:

1)       使用华为模拟器配置DHCPC1自动分配IP地址

2)     使用VMware station搭建WindowsServer2008 DHCP服务器,并为Windows客户机分配IP地址

3)       使用wireshark抓取DHCP数据包

3.    实验步骤:

1)     华为设备IP地址规划配置如下:

     R2G0/0/0ip192.168.8.1/24

  C1IP为自动获得

2)    微软设备IP地址规划配置如下:

① 服务器的ip设为192.168.8.8/2

② 分配给客户端的ip地地池为:                                                    

         192.168.8.10/24--192.168.8.20/24

                   

3)      配置脚本:

① 配置我们之前都学过,这里不再写,我们重点看DHCP抓包结果;使用命令ipconfig/release释放原ip,再用ipconfig/renew重新获得ip

 

4.    抓包结果:

a.       华为设备DHCP抓包结果

1)        DHCP数据包:

wKioL1SPxVmSkKi5AAGqjQ0YQBA431.jpg

通过抓取的数据包结果,我们看出DHCP有四个数据包,分别为:DHCPDiscoverDHCP OfferDHCP RequestDHCP ACK;其中DHCP DiscoverDHCP Request为广播,DHCP Offer

DHCP ACK为单播,下面详细分析。

2)       DHCP Discover数据报文:

wKiom1SPxNHTIwJXAAG7BBM79JM489.jpg

wKioL1SPxXDzxu1iAAJaDnv7Vg8203.jpg

wKiom1SPxNKjpDCMAAJgn_X9ZV4007.jpg 

 由上图可得,Discove数据报文是C1向整个广播域进行广播,ip地址、网关、掩码等三层信息都没有。意为:C1向广播域内寻找DHCP服务提供者,并申请为自己分配ip地址。

 

3)       DHCP Offer数据报文:

wKiom1SPxPLx_lEJAACnSQqotIc551.jpg

wKioL1SPxZSyHEiSAAGyllx-G5U664.jpg

 通过上面两张图片的分析,我们会发现华为设备发出的DHCP-OFFER报文的二层是单播的,三层也是单播的,尽管服务器分配的地址客户端还没有使用(甚至客户端都还没有收到这个OFFER报文),但是服务器已经将这个IP填充到了三层包头中。这样做的好处是,即使二层设备,由于各种原因,广播了数据帧,但是三层包头中的目标地址也不会和在线的任何一个主机一样,其它在线主机根本不会处理这个不属于自己目标IP的报文的。对于大型网络来说,这对网络性能和主机性能都是一种优化。

wKiom1SPxSLTOQzxAAFYHVUNsYo814.jpg

 

 由上图可得,Offer数据报文是R1C1进行单播。意为:提供DHCP服务的R2收到C1的申请,并告诉C1可用的ip地址(192.168.8.254)、网关(192.168.8.1)、掩码(/24)DNS服务器(8.8.8.8)等,如果域中有多台DHCP服务器提供服务,则C1采取的是先到先得的准则

 

4)         DHCP Request数据报文

 

wKioL1SPxeCiFqMgAAD81tAZWp8008.jpg

wKiom1SPxUOD3xwiAAGEAz5L_eQ452.jpg

由上图可得,C1收到R2的报文后并没有立刻就使用报文中的信息,而是C1向广播域进行广播,意为:C1DHCP 服务器汇报自己收到的IP地址信息,并申请使用自己所得到的ip等信息,这就是Request数据报文。

5)        DHCP ACK数据报文:


wKiom1SPxW6SFpyuAAEBXbcy58Y573.jpg

wKiom1SPxW_RuHNIAAE3T8gwjso879.jpg

由上图可得,R2收到C1是使用申请后,就向进行C1单播,告诉C1 ip地址就是192.168.8.254、网关是92.168.8.1、掩码是/24DNS服务器是8.8.8.8等,C1收到后就会将信息保留起来并使用,这就是ACK报文。需要注意的是,这个报文在华为设备发出的时候二层和三层也都是单播的。

 

b.      微软设备DHCP抓包结果

1)      DHCP报文

wKiom1SPxYORYNxDAAEebQAWaf0497.jpg

2)        DHCP Discover数据报文:

wKioL1SPxjrSd9tyAAFAihzABbg496.jpg

wKiom1SPxZyzM0c9AAETZ7oxrcY371.jpg

  通过上图的分析,微软系统发出的Discover报文和其它系统发出的没有区别,二层三层都是广播(这很容易理解,第一报文,客户端根本不知道服务器的任何信息,只能广播)

3)      DHCP Offer数据报文:

wKiom1SPxb3Bpt3eAAETZ7oxrcY062.jpg

wKioL1SPxl_CFloaAAFYqGit73g673.jpg

但是通过上图我们会发现,微软系统发出的OFFER报文,二层和三层都是广播的,这个真是不可以理解,这会导致同一广播域中的主机,浪费大量的资源来处理这些报文,一直要处理到应用层才知道这个报文原来和自己无关。非常的不够优化。

4)        DHCP Request数据报文

wKiom1SPxdujPUVJAAEuP3pKIeU673.jpg

wKioL1SPxnzSYIoUAAEBD670kW8643.jpg

wKiom1SPxd6C47V9AAD6Gw8wLBo239.jpg

请求报文并没有什么特殊,所有系统都是一样的二三层广播。

5)        DHCP ACK数据报文

wKiom1SPxfOj9A4EAAEXEhCnjEo915.jpg

wKiom1SPxfXhyDd5AAEHuOtyo3I611.jpg

微软系统的ACK报文依然是二三层全网广播,很浪费同一广播域中其它主机的资源,不够优化。

wKioL1SPxqTCIp5sAAFchdz6pbk191.jpg

5.     结论:

通过分析可看出,微软DHCP四个报文都是广播,很不优化,对于同一广播域中其它主机的资源是一种浪费(只要有主机向服务器请求地址,其它主机就要处理和自己无关的四个报文。)而华为设备,思科设备,LINUX系统等DHCPOffer ACK两个报文则是单播的,这就大大节省了网络设备和同一广播域中其它主机的资源。


本文出自 “阳光学苑” 博客,请务必保留此出处http://yuan2.blog.51cto.com/446689/1590606

【基础】通过抓包分析微软DHCP报文和其它系统DHCP报文的不同(对比后才知道微软有多次)