1. 实验网络拓扑
使用ENSP模拟器(版本V100R002C00 1.2.00.350)
2. 实验需求:
1) 使用华为模拟器配置DHCP为C1自动分配IP地址
2) 使用VMware station搭建WindowsServer2008 DHCP服务器,并为Windows客户机分配IP地址
3) 使用wireshark抓取DHCP数据包
3. 实验步骤:
1) 华为设备IP地址规划配置如下:
R2是G0/0/0的ip为192.168.8.1/24
C1的IP为自动获得
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有四个数据包,分别为:DHCPDiscover、DHCP Offer、DHCP Request、DHCP ACK;其中DHCP Discover、DHCP Request为广播,DHCP Offer、
DHCP ACK为单播,下面详细分析。
2) DHCP Discover数据报文:
由上图可得,Discove数据报文是C1向整个广播域进行广播,ip地址、网关、掩码等三层信息都没有。意为:C1向广播域内寻找DHCP服务提供者,并申请为自己分配ip地址。
3) DHCP Offer数据报文:
通过上面两张图片的分析,我们会发现华为设备发出的DHCP-OFFER报文的二层是单播的,三层也是单播的,尽管服务器分配的地址客户端还没有使用(甚至客户端都还没有收到这个OFFER报文),但是服务器已经将这个IP填充到了三层包头中。这样做的好处是,即使二层设备,由于各种原因,广播了数据帧,但是三层包头中的目标地址也不会和在线的任何一个主机一样,其它在线主机根本不会处理这个不属于自己目标IP的报文的。对于大型网络来说,这对网络性能和主机性能都是一种优化。
由上图可得,Offer数据报文是R1向C1进行单播。意为:提供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向广播域进行广播,意为:C1向DHCP 服务器汇报自己收到的IP地址信息,并申请使用自己所得到的ip等信息,这就是Request数据报文。
5) DHCP ACK数据报文:
由上图可得,R2收到C1是使用申请后,就向进行C1单播,告诉C1 其ip地址就是192.168.8.254、网关是92.168.8.1、掩码是/24、DNS服务器是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系统等DHCP的Offer和 ACK两个报文则是单播的,这就大大节省了网络设备和同一广播域中其它主机的资源。