本文来自深圳新闻网 IT频道
咱们平时所说的局域网交换技术,也称为层2交换技术,内容主要包括层2交换的工作原理、网络环路、如何利用Spanning-Tree Protocol来解决网络环路、VLAN及VTP技术,这篇文章主要介绍二层交换机的工作原理以及网络环路的危害。其他的内容将在后续陆续介绍。
大家都知道传统共享以太网使用的是CSMA/CD机制,即载波侦听多路访问/冲突检测。我们来用对冲基金详细分析一下:
▲CSMA/CD
CSMA/CD是一种分布式介质访问控制协议,网络中的各个节点都能独立地决定数据帧的发送与接收。每个节点在发送数据帧之前,首先要进行载波监听,只有介质空闲时,才允许发送帧。这时,如果两个以上的节点同时监听到介质空闲并发送帧,则会产生冲突现象,这使发送的帧都成为无效帧,发送随即宣告失败。每个节点必须有能力随时检测冲突是否发生,一旦发生冲突,则应停止发送,以免介质带宽因传送无效帧而被白白浪费,然后随机延时一段时间后,再重新争用介质,重发送帧。
最早由Inter,施乐,DEC三家公司提出以太网标准,后来IEEE组织制定了802.3标准规定了以太网的物理层和数据链路层的MAC子层,主要就是定义了10BASE-2、10BASE-5、10BASE-T、10BASE-F等,规定了介质,带宽,距离等。同时还定义了一个502.2标准,规定以太网数据链路层的LLC子层,即逻辑链路控制子层,主要是提供了一个数据链路层与网络层的接口,如图所示:
网络层有很多协议,数据链路层提供了很多协议之间的区分,使用网络层的哪一个协议,这就是为什么数据帧要封装一个LLC的头部信息。但传统以太2帧中不是使用LLC封装而是在数据帧中有一个2个字节的type来表明上网所使用的协议,如下图所使用的网络层协议是ARP。
下面来看一下冲突域,广播域
冲突域:共享式以太网中的所有节点在需要与其他节点通讯时是可以发送数据的,但是CSMA/CD的机制却在确保在某个时刻只有一个节点可以发送数据,那如果肉个同时发送数据了,出现这种情况会导致冲突,那么在这个共享式网络中可能产生冲突的这么一个范围,我们就称为冲突域。
广播域:广播域是指在一个网络中广播包所能到达的范围。也就是说如果在一个网络上一个节点发送了一个广播包到www.muniperu.net 秘鲁,这个广播包可以到达的范围,我们称为广播域,
作为一名专业的网络工作人员,具有识别冲突域和广播域的能力是所需要的一项重要技能。第一层设备的加入是扩大了冲突域,只有加入第二层设备或三层设备才可以分隔冲突域,也就是说如果加入了网桥、交换机和路由器可以将冲突域分割成较小的部分,从面降低对带宽的竞争,减少冲突。路由器还有一个好处,可以划分更小的广播域。这就叫网络分段。而用二层设备来减少冲突域的范围叫做“微分段”,也就是说不是正真意义的分段。真正意义的分段是网段号不同,不可能进行直接通讯。所以二层设备可以实现分段,但不能真正将网络进行分段,而路由器是可以实现真正网络分段的。这句话,大家好好理解一下!给出一个表供大家参考。
▲网络分段
那么咱们的交换技术毫无疑问使用的就是交换机,我们来看一个交换机的功能。
交换机的三大功能:
1.MACA地址的学习
2.数据帧的转发或者是数据帧的过滤
3.利用生成树协议防止网络环路
首先我们来看第一个交换机MAC地址的学习功能,交换机是通过MAC表来进行交换转发工作的,所以MAC地址表是交换工作的核心,网络与交换机的不同之处就在于网桥使用软件来创建和管理MAC地址表的,而交换机使用ASIC来创建和管理MAC地址表。
交换机的MAC地址学习功能:
交换机初始化时,要学习进入交换机的数据帧的源地址,并且把源地址及其对应的交换机的端口号记录在MAC地址表。在MAC地地址表形成之后,交换机要学习进入交换机数据帧的目的地址,并且与MAC地址表中的条目进行比较,完成相应的转发。
▲MAC地址学习
交换机开机初始化时,MAC地址表是空的,因为MAC地址表是存储在内存中的。
如果计算机A发送数据帧到计算机C,此时交换机的E0口接收该数据帧,交换机记录下该数据帧的源地址C的对应关系及E0口的对应关系。如图所示:
由于交换机并不知道C的MAC地址,所以将此数据帧对除了E0口以外的其他端口进行转发。
如果是计算机D发送数据帧到计算机C,此时交换机的E3口接收该数据帧,交换机记录下该数据帧的源地址D的地址与端口的对应关系。此时交换机仍然不知道C的地址,所以还是要对除了E0口以外的其他端口上进行转发。
交换机不断记录每个接口上接收到的数据帧的地址,一段时间以后所有的端口所连接的MAC地址都会记录到MAC地址表中。此时计算机A再向计算机C发送数据时,就直接查MAC地址表进行转发即可,不会再转发到其他端口上。
在这个图中计算机A和计算机B通过HUB连接到Switch的E0口上,所以在MAC地址表中记录两个MAC地址对应同一个端口,此时如果A与B通讯,则交换机不会转发该数据帧,因为源和标MAC都在同一个接口上。这就是交换机的地址学习功能以及数据包的转发过滤。
交换机的交换方式一般有三种:直通转发、片断转发和存储转发
直通转发:交换机检测到目录地址后即转发数据帧,也就是说只要读到目标地址以后就开始转发,大家分析一下数据帧的格式就知道了,加上前导位和目标地址也就是14个字节左右,不需要再往后分析了。这样减少延时,但是不适合高错误率的网络。因为有一些数据碰撞帧,是小于64字节的,也会一起转发!
片断转发:与直通转发相似,只是在转发的时候会检测帧的前64个字节,这前64个字节中会包含一小部分数据,好处是可以把可以把小于64字节的坏帧抛弃掉,以节约带宽。
存储转发:这是延时最大的一种转发,在进行数据转发之前要将收到的帧进行完整性校验,确认没有错误才进行转发,如果有错误就不转发。好处是可以丢弃任何小于64字节和受损的数据包,但是缺点是延迟大。
下面看一下网络环路的形成:
网络环路
大家看下面这个图:
在这个拓扑图中,交换机就成了一个单点故障,如果交换机坏了,此时的几个模块之间都无法进行正常的工作,客户机不能访问服务器,不能连接internet,不能访问打印机,反之都一样。所谓单点故障,也就是一点发生故障,则整网络无法正常工作。所以在一般的交换式网络中,我们都需要对交换机进行冗余,但是引入冗余又会发生一个问题,一个很严重的问题,就是网络环路。下面我们来看看环路对我们的网络到底造成了什么影响,影响主要有三:
1Broadca ststorms广播风暴
2Multiple Frame Copies多重复数据帧
3MAC Database Instability MAC地址表不稳定
咱们一一来看
广播风暴:我们看一个图,大家就明白什么是广播风暴了:
分析:如果主机X希望跟网络上的其他主机通讯,将数据报传给交换机A,但交换机仍然会将此报再一次传给交换机A,依次类似,构成了一个环,而且这个环后面比较严重,为什么?我们在讲网络基础的时候,我们讲了数据帧的格式,大家可以回忆一下,但在这个格式中,没有类似于三层IP报头中TTL机制,所以数据帧在网络中将被无限次数的传递,从面造成了广播风暴,如果是单播的数据还要好一些,如果是广播或者组播数据在这样一个环路网络中传递则广播风暴更加明显。
多重数据帧:也称为重复数据帧
分析:主机X准备发一个单播帧给路由器Y,数据报发出后,发现有两条路可以到达路由器Y,一个是直接发过去,还有一条就是通过交换机A转给交换机B,然后再交给路由器Y,此时路由器Y就收到了两位一模一样的数据帧。
还有一个就是MAC地址表的不稳定:
分析:还是主机X发送数据帧给路由器Y,路由器的MAC地址表还没有被交换机学习到,数据帧沿链路发送到交换A和交换机B的端口0,那么交换机A和交换机B都将主机X的MAC地址记录在port0。因为是通过port0收到的数据帧,所以会通过两个交换机的port1向外泛洪,交叉来到相互交换机的port1口,又认为主机X的MAC地址所对应的端口是port1,即从交换机A发出来的数据帧来到了交换机B的port1端口。然后交换机B收到后又通过Port0口再次泛洪,依次类推,数据帧在环路里重复执行上述过程,交换机A和交换机B重复的在port1以及port0上不断的学习主机X的MAC地址,造成MAC地址表的不稳定。