在局域网中,交换机是非常重要的网络设备,负责在主机之间快速转发数据帧。交换机与集线器的不同之处在于,交换机工作在数据链路层,能够根据数据帧中的MAC地址进行转发。本文重点讲述了交换机进行MAC地址学习以构建MAC 地址表的过程,对数据帧的转发原理。
一、共享式与交换式以太网
(1)共享式以太网(已淘汰)
文章图片
Hub 与同轴电缆都是典型的共享式以太网所使用的设备,工作在OSI 模型的物理层。Hub和同轴电缆所连接的设备位于一个冲突域中,域中的设备共享带宽,设备间利用CSMA/CD 机制来检测及避免冲突。当网络中设备数量较少时,冲突较少发生,通信质量可以得到较好地保证;但是当设备数量增加到一定程度时,将导致冲突不断,网络的吞吐量受到严重影响,数据可能频繁地由于冲突而被拒绝发送。
通过 Hub 或同轴电缆接入的终端会共享总线的带宽,接入的终端数量越多,每个终端获得的网络带宽越少;并且一个终端发出的报文(无论是单播、组播、广播),其余终端都可以收到。(所以共享式以太网被淘汰是必然的)
交换式以太网的出现有效地解决了这个问题,它大大减小了冲突域的范围。
冲突域:在以太网中,如果某个CSMA/CD网络上的两台计算机在同时通信时会发生冲突,那么这个CSMA/CD网络就是一个冲突域。简而言之,冲突域是在同一个网络上两个设备同时进行传输则会产生冲突。
(2)交换式以太网
文章图片
网桥(Bridge)是一种工作在数据链路层的设备,早期被用在网络中连接各个终端主机。
对于终端主机来说,网桥好像是透明的,不需要由于网桥的存在而增加或改变配置,所以又称为透明网桥。网桥遵循的协议是IEEE 802.1D,又称为透明桥接协议。(网桥就是二层交换机前身)
目前在交换式以太网中经常使用的网络设备是二层交换机。二层交换机和网桥的工作原理相同,都是按照IEEE 802.1D 标准设计的局域网连接设备。他们的区别在于交换机比网桥的端口更多、转发能力更强、特性更加丰富。
二层交换机的端口在检测到网络中的比特流后,它会首先把比特流还原成数据链路层的数据帧,再对数据帧进行相应的操作。同样,二层交换机端口在发送数据时,会把数据帧转成比特流,再从端口发送出去。二层交换机也采用CSMA/CD 机制来检测及避免冲突,但与Hub所不同的是,二层交换机各个端口会独立地进行冲突检测,发送和接受数据,互不干扰。所以,二层交换机中各个端口属于不同的冲突域,端口之间不会有竞争带宽的冲突发生。
由于二层交换机的端口处于不同的冲突域中,终端主机可以独占端口的带宽,所以交换式以太网的交换效率大大高于共享式以太网。
二、MAC地址学习
文章图片
为了转发报文,以太网交换机需要维护MAC地址表。MAC地址表的表项中包含了与本交换机相连的终端主机的MAC地址、本交换机连接主机的端口等信息。
在交换机刚启动时,它的MAC地址表中没有表项。此时如果交换机的某个端口收到数据帧,它会把数据帧从所有其它端口转发出去。这样,交换机就能确保网络中其它所有的终端主机都能收到此数据帧。但是,这种广播式转发的效率低下,占用了太多的网络带宽,并不是理想的转发模式。
为了能够仅转发目标主机所需要的数据,交换机就需要知道终端主机的位置,也就是主机连接在交换机的哪个端口上。这就需要交换机进行MAC地址表的正确学习。
文章图片
交换机通过记录端口接收数据帧中的源MAC地址和端口的对应关系来进行MAC地址表学习。
如上图,PCA 发出数据帧,其源地址是自己的地址MAC_A,目的地址是PCD 的地址MAC_D。交换机在端口E1/0/1 收到数据帧后,查看其中的源MAC 地址,并添加到MAC 地址表中,形成一条MAC 地址表项。因为MAC 地址表中没有MAC_D 的相关记录,所以交换机把此数据帧从所有其它端口都发送出去。
交换机在学习MAC 地址时,同时给每条表项设定一个老化时间,如果在老化时间到期之前一直没有刷新,则表项会清空。交换机的MAC 地址表空间是有限的,设定表项老化时间有助于回收长久不用的MAC 表项空间。
【交换机|第16章 以太网交换机工作原理(H3CNE)】说明:对于未知的数据帧,交换机广播发送,单播响应。
文章图片
同样的,当网络中其它PC 发出数据帧时,交换机记录其中的源MAC 地址,与接收到数据帧端口相关联起来,形成MAC 地址表项。
当网络中所有的主机的MAC地址在交换机中都有记录后,意味着MAC 地址学习完成,也可以说交换机知道了所有主机的位置。
交换机在MAC 地址学习时,需要遵循以下原则:
- 一个MAC 地址只能被一个端口学习
- 一个端口可学习多个MAC 地址
一个端口上可关联多个MAC 地址。比如端口连接到一个Hub,Hub 连接多个主机,则此端口会关联多个MAC 地址。
三、交换机对数据帧的转发和过滤
(1)单播帧的转发
文章图片
交换机根据MAC 地址表项进行数据帧转发。
上图中,PCA 发出数据帧,其目的地址是PCD 的地址MAC_D。交换机在端口E1/0/1 收到数据帧后,检索MAC 地址表项,发现目的MAC 地址MAC_D 所对应的端口是E1/0/4,就把此数据帧从E1/0/4 转发,不在端口E1/0/2 和E1/0/3 转发,PCB 和PCC 也不会收到目的到PCD 的数据帧。
(2)广播、组播和未知单播帧的转发
文章图片
交换机需要把广播、组播帧从所有的端口转发出去(除了源端口)。因为广播和组播的目的就是要让网络中其他的成员收到这些数据帧。
未知单播帧是指帧的目的MAC 地址在交换机MAC 地址表中无相应表项的数据帧。由于MAC 地址表中无相关表项,所以交换机也要把未知单播帧从其他端口转发出去,以使网络中其他主机能收到。
(3)数据帧过滤
文章图片
为了杜绝不必要的帧转发,交换机对符合特定条件的帧进行过滤。无论是单播、组播、广播帧,如果帧目的MAC 地址在MAC 地址表中有表项存在,且表项所关联的端口与接收到帧的端口相同时,则交换机对此帧进行过滤,即不转发此帧。(无效转发还造成资源浪费,所以直接不转发)
通常,帧过滤发生在一个端口学习到多个MAC 地址的情况下。如上图所示,交换机端口E1/0/1 连接有一个Hub,所以端口E1/0/1 上会同时学习到PCA 和PCB 的MAC 地址。此时,PCA 和PCB 之间进行数据通信时,尽管这些帧能够到达交换机的E1/0/1 端口,交换机也不会转发这些帧到其它端口,而是将其丢弃了。
四、广播域
文章图片
广播帧是指目的MAC 地址是FFFF.FFFF.FFFF 的数据帧,它的目的是要让本地网络中的所有设备都能收到。二层交换机需要把广播帧从除源端口之外的端口转发出去,所以二层交换机不能够隔离广播。
路由器或三层交换机是工作在网络层的设备,对网络层信息进行操作。路由器或三层交换机收到广播帧后,对帧进行解封装,取出其中的IP 数据包,然后根据IP 数据包中的IP 地址进行路由。所以,路由器或三层交换机不会转发广播帧,广播在三层端口上被隔离。
广播域是指广播帧能够到达的范围。如上图中,PCA 发出的广播帧,PCB 能够收到,但PCC 和PCD 收不到,PCA 和PCB 就属于同一个广播域。广播域中的设备数量越少,广播帧流量就越少,网络带宽的无谓消耗也越少。通过在网络中使用三层交换机或路由器,可以减小广播域,减少网络带宽浪费。
重点总结
- 共享式以太网中所有终端共享总线带宽,交换式以太网中每个终端处于独立的冲突域
- 交换机根据接收到的数据帧的源地址进行MAC地址表的学习
- 交换机根据MAC地址表对数据帧进行转发和过滤
- 路由器或三层交换机的三层接口属于独立的广播域
关注我,加微信,获取此次配置工程、更多配置案例,也可以承接远程调试各厂商交换机、路由器、防火墙等私活,欢迎各位老板加微信私聊。
文章图片
附2:
有打算考华三IE或者华为IE的兄弟可以加我微信私聊。
文章图片
文章图片
推荐阅读
- 网络运营|做网络必须掌握83句话,网络成功可以复制
- 大数据|Kubernetes-在Kubernetes集群上搭建Stateful Elasticsearch集群
- 网络|视觉注意力机制概述
- pytorch深度学习实战|Mask R-CNN详解(图文并茂)
- python|计算机网络-基于python的TCP套接字编程
- 计算机网络|计算机网络---TCP/IP网络编程实验
- 计算机网络|计算机网络----网络通信协议TCP&UDP
- 计算机网络|计算机网络 --- 初始网络
- c#|C# 操作Windows注册表