1.    实验网络拓扑

 

使用ENSP模拟器(版本V100R002C00 1.2.00.350

 

 

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数据包:

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

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

2)       DHCP Discover数据报文:

 

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

 

3)       DHCP Offer数据报文:

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

 

 由上图可得,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数据报文

 

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

5)        DHCP ACK数据报文:

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

 

b.      微软设备DHCP抓包结果

1)      DHCP报文

2)        DHCP Discover数据报文:

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

3)      DHCP Offer数据报文:

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

4)        DHCP Request数据报文

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

5)        DHCP ACK数据报文

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

5.     结论:

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