一、实验拓扑:

 使用华为ENSP模拟器(版本V100R002C00 1.2.00.350

【基础】ARP协议-交换机工作原理-及广播风暴问题分析_华为设备

二、实验需求:

1.   了解ARP协议及其作用

2.  掌握交换机的工作原理

3.   解决以太网广播风暴问题

三、实验步骤

1.  iP规划:

     c1:192.168.1.10

     c2:192.168.1.20

     c3:192.168.2.30

     R1g0/0/1192.168.1.1  g0/0/2 192.168.2.1

 

2.       ARP协议作用:                                                       

1)  概念:ARP(全称Address Resolution  Protocol)即地址解析协议,是网络层协议

2)  作用:通过arp的请求报文来获取目标mac地址。

3)  Arp协议有两种报文,分别是arprequest(请求)报文和arp reply(回应)报文。c1c2是在同一个网段,并且都是24位掩码,所以它们是可以通信的,c1c2之间详细的通信过程是这样的:数据包在封包时,原ip地址是192.168.1.10,目标地址封装为192.168.1.20,网络层封包完成交给下一层数据链路层,在装帧时,帧头的原mac地址字段是c1的网卡的mac地址,在目标Mac地址字段不是c2mac地址,管理员在c1pingc2可以让c1知道c2ip地址,但不知道它的mac地址。所以二层装帧是完不成的。

4)     这种情况就需要通过arp request报文获得目标mac地址,request报文是通过广播的方式发送出去的。 //所谓广播就是连在c1上的所有设备都能收到报文。但是只有c2会发送回应报文,把自己的mac地址告诉c1,arp reply报文,是以单播的形式回应c1

5)     每台pc都会有arp缓存表,把动态学习到的mac地址和iP地址对应关系放到arp缓存表里。

6)     arp -a查看arp缓存表,当c1没有和c2通信过,它的缓存表里是没有c2mac地址的,我用c1ping c2,然后再查看arp缓存表,它就会学到c2mac地址。验证如下:

【基础】ARP协议-交换机工作原理-及广播风暴问题分析_工作原理_02

7)     通过抓包可以抓到发送的报文。在c1处抓,右击“开始抓包”,单击ok,然后右击打开WIRESHARK(抓包工具)之后会出来很多报文,我们在Filter(过滤器)里输入arp单击Apply  //只抓arp报文。很明显这里抓到两个报文,一个是广播,一个是单播。

【基础】ARP协议-交换机工作原理-及广播风暴问题分析_工作原理_03

先看广播request(请求)报文,打开之后先看二层信息,

【基础】ARP协议-交换机工作原理-及广播风暴问题分析_ARP_04

我可以用ipconfig查看c1mac地址

【基础】ARP协议-交换机工作原理-及广播风暴问题分析_ARP_05

再看三层信息

【基础】ARP协议-交换机工作原理-及广播风暴问题分析_ARP_06

8)     我们再看单播reply(回应)报文【基础】ARP协议-交换机工作原理-及广播风暴问题分析_ARP_07

通过c2的回应报文,c1学到了c2mac地址,下次c1要和c2通信就不会发送arp请求报文了,因为c1记在了自己的arp缓存表里。那么此时再用c1 ping c2并抓包,如果发现还发送arp报文,说明它忘记了,或者arp缓存表过期。

9)     arp缓存表里有对方的mac地址并且没有忘记或过期,通信时就不会发送arp报文。 //以上就是arp工作原理。

10)c1发送广播报文时,连在交换机上的所有设备都能收到,包括路由器,但是只有c2会回应它,我们在路由器下面接口抓包,验证如下:

【基础】ARP协议-交换机工作原理-及广播风暴问题分析_ARP_08

R1g0/0/1接口处抓包

【基础】ARP协议-交换机工作原理-及广播风暴问题分析_华为设备_09

【基础】ARP协议-交换机工作原理-及广播风暴问题分析_华为设备_10

11) 那么c3是不能收到c1arp报文的,因为路由器的作用就是隔离广播Arp 并不会泛洪到路由器的另一边,因为是不同网段。Arp报文只会在以太网之间发送,并不会在网络之间发送。C1C3通信正确的流程:首先c1c3通信,在三层网络层原ip1.10目标ip2.30,在二层数据链路层原macc1的,目标mac是网关的mac,二层封装完之后数据交给物理层,物理层沿着线路把数据给了g0/0/1口,这个口会判断目标mac是不是它自己的,如果是就会把帧抽下来,把mac地址脱掉,露出三层信息。当查看数据包头的时候,看目标ip2.30,然后看自己路由表里有没有,由于2.0段是直连,它知道怎么走,数据就由g0/0/1转到g0/0/2出口,但数据包不会从出口直接发送到c3,因为数据包是不能直接在线路上传输的,还需要做二层封装,此时原mac是出口地址的mac,目标macc3mac  //mac地址离开自己的以太网之后会被换掉。二层完成之后数据就送到c3了。回应是反过来的。验证如下:用c1 ping c3,在g0/0/1处抓包。(c1c3都配了网关)

【基础】ARP协议-交换机工作原理-及广播风暴问题分析_工作原理_11

【基础】ARP协议-交换机工作原理-及广播风暴问题分析_ARP_12

这时数据由网关中转给c3,在e0/0/3处抓包。这时不是抓arp报文了,arp报文是网关发送的,查询c3mac地址的。我们用c1 ping c3的,所以抓的是icmp报文。

【基础】ARP协议-交换机工作原理-及广播风暴问题分析_ARP_13

很明显,有请求和回应报文,因为两个网段都做了网关,所以c1c3通信数据既能到也能回来。我们看看回应报文,原地址是c3,目标地址不是c1而是c3网关,可以用dis arp在路由器上查看到mac地址表。

【基础】ARP协议-交换机工作原理-及广播风暴问题分析_ARP_14

【基础】ARP协议-交换机工作原理-及广播风暴问题分析_工作原理_15

通过上面的验证,我们知道不在同一网段的主机想要通信必须经过网关。当主机跨网段通信的时候,是不会发arp报文的。主机会主动请求网关的mac地址,由网关把数据中转出去。当路由器把数据转给对方的过程中会把mac地址替换掉。数据到g0/0/1时会把mac脱掉,然后从g0/0/2出口出来数据又重新封装了mac

3.      交换机工作原理:交换机是二层设备,它有mac地址表,能够记住它每个接口下所连的设备的mac地址。第一次当交换机收到一个数据帧的时候,它会查看这个数据帧的的目标mac地址,看看这个目标mac在自己的mac地址表里有没有。如果有,它就会通过指定端口把数据帧发出去,如果没有就会向所有端口转发。当对方回应请求报文时,交换机就通过数据帧的原mac地址字段学到这个mac地址并记在自己的mac地址表里。下面以c1c2通信为例:当c1c2通信时,交换机会从e0/0/1端口收到一个数据帧,之后它可以通过数据帧的原mac字段学到c1mac地址,并记在mac地址表里。用dismac-address查看mac地址表,当sw1收到数据帧之后,由于它不知道c2这个设备连在哪个端口下,所以会向所有端口泛洪这个数据,但不是一直泛洪,当c2回应的时候,sw1就会从自己的e0/0/2端口学习到c2mac地址。下次通信的时候,由于它知道c2mac地址,就直接把数据发给e0/0/2口。验证如下:首先c1ping c2能通。【基础】ARP协议-交换机工作原理-及广播风暴问题分析_工作原理_16

c1 ping c2时,sw1通过e0/0/1学到了c1macc2回应了c1,并且sw1也从端口e0/0/2学到了c2mac地址。【基础】ARP协议-交换机工作原理-及广播风暴问题分析_华为设备_17

g0/0/1处抓包,看看sw1会不会泛洪。没有抓到ping报文,说明sw1并没有发向所有端口。【基础】ARP协议-交换机工作原理-及广播风暴问题分析_华为设备_18

4.      ARP攻击: arp在设计的时候是有缺陷的。c1再和c2通信,数据就不会发向所有端口了。那么这时如果sw1下面连个c3,它也是不能监听到c1c2的通信的。所以我们认为在以太网如果是交换式环境是安全的。第三方想要监听到c1c2的通信,只有不停的向swmac地址表里写东西,让mac地址表溢出,它就记不住新学到的了。 //mac地址表是有大小空间的。还有一些问题比如说c1没有向c2发送请求,而c2主动向c1发送回应,并欺骗它,由于arp没有验证机制,导致c1与其它通信被拦截,甚至局域网里的所有成员都上不了网。这就叫arp攻击。

5.      广播风暴问题:如果一个二层网络非常大的时候,会导致大量带宽被各种报文占据,那么正常的流量就无法传输了。我们把这种大的二层网络称为平面网络  //所谓平面网络就是没经过分层设计。能够收到某一设备发送的报文的所有设备的集合叫做广播域,广播域越多越好。扁平化的设计是不合理的,不能优化广播域的数量,会导致广播风暴产生,网络性能大大下降。所以在设计网络时应采用分层设计来提高网络性能。如果用路由器隔离广播当然是一种选择,但是路由器的端口是有限的。三层转发没有二层效率快,所以尽量在二层转发。通过在交换机上来把大的广播域隔离成多个小的广播域的技术叫vlan技术  //虚拟局域网技术。这个以后会讲解。通过在交换机上划分多个vlan,e0/0/1e0/0/2划在不同的vlan。这样就从一个广播域变成两个广播域了。用这种技术来优化网络性能,减少广播风暴的范围。