设为首页 收藏本站
查看: 1055|回复: 0

[经验分享] ARP协议-交换机工作原理-及广播风暴问题分析

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-11-26 08:58:12 | 显示全部楼层 |阅读模式
一、实验拓扑:
使用华为ENSP模拟器(版本V100R002C00 1.2.00.350)
wKiom1R0NTyB8HReAADJNvrfzgI838.jpg
二、实验需求:
1.   了解ARP协议及其作用
2.  掌握交换机的工作原理
3.   解决以太网广播风暴问题
三、实验步骤:
1.  iP规划:
     c1:192.168.1.10
     c2:192.168.1.20
     c3:192.168.2.30
     R1:g0/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(回应)报文。c1和c2是在同一个网段,并且都是24位掩码,所以它们是可以通信的,c1、c2之间详细的通信过程是这样的:数据包在封包时,原ip地址是192.168.1.10,目标地址封装为192.168.1.20,网络层封包完成交给下一层数据链路层,在装帧时,帧头的原mac地址字段是c1的网卡的mac地址,在目标Mac地址字段不是c2的mac地址,管理员在c1上pingc2可以让c1知道c2的ip地址,但不知道它的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通信过,它的缓存表里是没有c2的mac地址的,我用c1来ping c2,然后再查看arp缓存表,它就会学到c2的mac地址。验证如下:
wKiom1R0NVKguOmuAAM6ECXe8V4693.jpg
7)     通过抓包可以抓到发送的报文。在c1处抓,右击“开始抓包”,单击ok,然后右击打开WIRESHARK(抓包工具)之后会出来很多报文,我们在Filter(过滤器)里输入arp单击Apply  //只抓arp报文。很明显这里抓到两个报文,一个是广播,一个是单播。
wKioL1R0Ne3g65RQAAMfKTTFTT8120.jpg
先看广播request(请求)报文,打开之后先看二层信息,
wKioL1R0NgPDYHWcAAOKRudKoi0757.jpg
我可以用ipconfig查看c1的mac地址
wKiom1R0Oc3yB_g4AAOb2yMgO5w075.jpg
再看三层信息
wKiom1R0NgqQSe2LAATqNipaT_0308.jpg
8)     我们再看单播reply(回应)报文 wKioL1R0NuiBaRtGAATJkVPBQU0091.jpg
通过c2的回应报文,c1学到了c2的mac地址,下次c1要和c2通信就不会发送arp请求报文了,因为c1记在了自己的arp缓存表里。那么此时再用c1 ping c2并抓包,如果发现还发送arp报文,说明它忘记了,或者arp缓存表过期。
9)     当arp缓存表里有对方的mac地址并且没有忘记或过期,通信时就不会发送arp报文。 //以上就是arp工作原理。
10)当c1发送广播报文时,连在交换机上的所有设备都能收到,包括路由器,但是只有c2会回应它,我们在路由器下面接口抓包,验证如下:
wKiom1R0NpHQ95lsAAM2yGqLCjI744.jpg
R1的g0/0/1接口处抓包
wKioL1R0OYmzvSkhAALZHLhmvxE122.jpg
wKioL1R0NzriMFcTAASCz46KthU210.jpg
11) 那么c3是不能收到c1的arp报文的,因为路由器的作用就是隔离广播。Arp 并不会泛洪到路由器的另一边,因为是不同网段。Arp报文只会在以太网之间发送,并不会在网络之间发送。C1和C3通信正确的流程:首先c1和c3通信,在三层网络层原ip是1.10目标ip是2.30,在二层数据链路层原mac是c1的,目标mac是网关的mac,二层封装完之后数据交给物理层,物理层沿着线路把数据给了g0/0/1口,这个口会判断目标mac是不是它自己的,如果是就会把帧抽下来,把mac地址脱掉,露出三层信息。当查看数据包头的时候,看目标ip是2.30,然后看自己路由表里有没有,由于2.0段是直连,它知道怎么走,数据就由g0/0/1转到g0/0/2出口,但数据包不会从出口直接发送到c3,因为数据包是不能直接在线路上传输的,还需要做二层封装,此时原mac是出口地址的mac,目标mac是c3的mac。  //当mac地址离开自己的以太网之后会被换掉。二层完成之后数据就送到c3了。回应是反过来的。验证如下:用c1 ping c3,在g0/0/1处抓包。(c1和c3都配了网关)
wKiom1R0NvPi8WCtAAIR3gfj-ic314.jpg
wKioL1R0N3PB81oPAAIrsIOZFtQ933.jpg
这时数据由网关中转给c3,在e0/0/3处抓包。这时不是抓arp报文了,arp报文是网关发送的,查询c3的mac地址的。我们用c1 ping c3的,所以抓的是icmp报文。
wKioL1R0N5azXf5zAAPlEUB6EiU217.jpg
很明显,有请求和回应报文,因为两个网段都做了网关,所以c1和c3通信数据既能到也能回来。我们看看回应报文,原地址是c3,目标地址不是c1而是c3网关,可以用dis arp在路由器上查看到mac地址表。
wKiom1R0NxbC4SUPAAHOrT2Qq58528.jpg
wKioL1R0N8KxSs-oAAE_jKa8BEE151.jpg
通过上面的验证,我们知道不在同一网段的主机想要通信必须经过网关。当主机跨网段通信的时候,是不会发arp报文的。主机会主动请求网关的mac地址,由网关把数据中转出去。当路由器把数据转给对方的过程中会把mac地址替换掉。数据到g0/0/1时会把mac脱掉,然后从g0/0/2出口出来数据又重新封装了mac。
3.      交换机工作原理:交换机是二层设备,它有mac地址表,能够记住它每个接口下所连的设备的mac地址。第一次当交换机收到一个数据帧的时候,它会查看这个数据帧的的目标mac地址,看看这个目标mac在自己的mac地址表里有没有。如果有,它就会通过指定端口把数据帧发出去,如果没有就会向所有端口转发。当对方回应请求报文时,交换机就通过数据帧的原mac地址字段学到这个mac地址并记在自己的mac地址表里。下面以c1和c2通信为例:当c1和c2通信时,交换机会从e0/0/1端口收到一个数据帧,之后它可以通过数据帧的原mac字段学到c1的mac地址,并记在mac地址表里。用dismac-address查看mac地址表,当sw1收到数据帧之后,由于它不知道c2这个设备连在哪个端口下,所以会向所有端口泛洪这个数据,但不是一直泛洪,当c2回应的时候,sw1就会从自己的e0/0/2端口学习到c2的mac地址。下次通信的时候,由于它知道c2的mac地址,就直接把数据发给e0/0/2口。验证如下:首先c1ping c2能通。 wKioL1R0OHOhW1d3AAIMpIBngAI521.jpg
c1 ping c2时,sw1通过e0/0/1学到了c1的mac,c2回应了c1,并且sw1也从端口e0/0/2学到了c2的mac地址。 wKioL1R0N-qgrfFFAAJz-JeN-x8804.jpg
在g0/0/1处抓包,看看sw1会不会泛洪。没有抓到ping报文,说明sw1并没有发向所有端口。 wKioL1R0OBGQ46fBAAMn0hFwqZI689.jpg
4.      ARP攻击: arp在设计的时候是有缺陷的。c1再和c2通信,数据就不会发向所有端口了。那么这时如果sw1下面连个c3,它也是不能监听到c1和c2的通信的。所以我们认为在以太网如果是交换式环境是安全的。第三方想要监听到c1和c2的通信,只有不停的向sw的mac地址表里写东西,让mac地址表溢出,它就记不住新学到的了。 //mac地址表是有大小空间的。还有一些问题比如说c1没有向c2发送请求,而c2主动向c1发送回应,并欺骗它,由于arp没有验证机制,导致c1与其它通信被拦截,甚至局域网里的所有成员都上不了网。这就叫arp攻击。
5.      广播风暴问题:如果一个二层网络非常大的时候,会导致大量带宽被各种报文占据,那么正常的流量就无法传输了。我们把这种大的二层网络称为平面网络  //所谓平面网络就是没经过分层设计。能够收到某一设备发送的报文的所有设备的集合叫做广播域,广播域越多越好。扁平化的设计是不合理的,不能优化广播域的数量,会导致广播风暴产生,网络性能大大下降。所以在设计网络时应采用分层设计来提高网络性能。如果用路由器隔离广播当然是一种选择,但是路由器的端口是有限的。三层转发没有二层效率快,所以尽量在二层转发。通过在交换机上来把大的广播域隔离成多个小的广播域的技术叫vlan技术  //虚拟局域网技术。这个以后会讲解。通过在交换机上划分多个vlan,把e0/0/1和e0/0/2划在不同的vlan。这样就从一个广播域变成两个广播域了。用这种技术来优化网络性能,减少广播风暴的范围。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-33764-1-1.html 上篇帖子: Cisco3560核心三层交换机升级 下篇帖子: STP生成树协议 工作原理 交换机
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表