为什么基于交换机的以太网中,没有必要使用 MAC 协议了?
为什么基于交换机的以太网中,没有必要使用 MAC 协议了?
自顶向下原文如下所示:
我们通过提出一个问题来结束有关以太网技术的讨论,这个问题开始可能会难倒你。在总线拓扑和基于集线器的星形拓扑技术时代,以太网很显然是一种广播链路(如5.3节所定义),其中多个结点同时传输时会出现帧碰撞。为了处理这些碰撞,以太网标准包括了 CSMA/CD 协议,该协议对于跨越一个小的地理半径的有线广播局域网特别有效。
但是对于今天广为使用的以太网是基于交换机的星形拓扑,采用的是存储转发分组交换,是否还真正需要一种以太网 MAC 协议呢?
如我们很快所见,交换机协调其传输,在任何时候决不会向相同的接口转发超过一个帧。 此外,现代交换机是全双工的,这使得一台交换机和一个结点能够在同时向对方发送帧而没有干扰。 换句话说,在基于交换机的以太局域网中,不会有碰撞,因此没有必要使用 MAC 协议了!
交换机的作用:在基于交换机的以太网中,交换机的主要功能是根据数据帧中的目标 MAC 地址,将数据帧从一个端口转发到目的端口。每个端口只连接到一个设备(或者是另一个交换机的端口),这意味着每个通信链路都是专用的点对点链路,不再是多个设备共享的广播链路。
避免碰撞:在传统的总线拓扑或基于集线器的星形拓扑中,所有连接的设备共享一个传输介质,容易发生数据碰撞。当多个设备同时发送数据时,会导致信号冲突,需要 CSMA/CD 协议来检测和处理这种碰撞。而在基于交换机的网络中,交换机会确保同一时刻不会有多个设备向同一端口发送数据,因此根本不会发生碰撞。
全双工通信:现代交换机支持全双工模式,这意味着网络中的每个节点可以同时发送和接收数据,而不会干扰对方的通信。这种通信模式进一步消除了碰撞的可能性,因为数据传输是双向独立的。
基于这些原因,传统的MAC协议(尤其是 CSMA/CD)在现代基于交换机的以太网中已不再必要,因为交换机本身已经通过其设计和功能消除了数据碰撞的可能性,并确保了高效的点对点通信
交换机的存储转发
交换机通过缓存机制来实现 “交换机会确保同一时刻不会有多个设备向同一端口发送数据”
在基于交换机的以太网中,交换机通常采用存储转发(store-and-forward)的工作方式。当交换机接收到一台主机发送的数据帧时,它会先将数据帧存储在自己的内存中,并根据数据帧中的目标MAC地址查找转发表(也称为 MAC 地址表)以确定数据帧应该被转发到哪个端口。
如果在同一时刻有两台主机向同一个目标主机发送数据,交换机会将这些数据帧存储在缓存中,然后按顺序逐一发送到目标端口。由于每个端口是全双工的,它可以在同一时间片内同时接收和发送数据。所以交换机能够有效地处理这些数据帧的转发,避免两个数据帧同时到达同一目的端口的情况,从而确保不会出现碰撞
交换机的缓存机制和转发逻辑如下:
- 接收数据帧:当交换机接收到一个数据帧时,它首先将数据帧存储在内存中
- 查找目标端口:交换机查找转发表,确定目标 MAC 地址对应的端口
- 发送数据帧:如果目标端口当前空闲,交换机立即将数据帧转发到该端口。如果目标端口正忙于处理另一数据帧,交换机会暂时将新接收到的数据帧存储在缓存中,等待端口空闲后再转发
- 缓存管理:交换机的缓存容量有限,如果缓存区满了,交换机可能会丢弃新接收到的帧或根据某种策略决定如何处理缓存中的帧(例如,优先级更高的帧可能会优先发送)
通过这种缓存和顺序转发机制,交换机能够有效地管理并协调多台主机的并发通信,确保同一时刻只有一个数据帧通过特定端口发送,从而避免了数据碰撞的发生
MAC 地址和 MAC 协议?
在网络通信中,MAC 地址和 MAC 协议是两个不同的概念
- MAC 地址是设备的物理地址,用于在网络中标识设备。
- MAC 协议是控制设备如何共享和访问网络传输媒体的一套规则,用于避免冲突和确保有效的数据传输。
MAC地址(Media Access Control Address)
MAC地址是网络接口卡(NIC)或其他网络设备的物理地址,也被称为硬件地址或物理地址。它用于在局域网(LAN)内唯一标识设备。MAC地址通常由设备制造商在生产过程中分配,并被烧录到设备的网络接口卡中。
MAC地址的格式是6组十六进制数,每组由两位字符组成,并用冒号或连字符分隔,例如 00:1A:2B:3C:4D:5E
。前3组数字通常标识制造商,后3组数字是该制造商分配给设备的唯一标识符。
在以太网中,MAC地址用于数据帧的源地址和目的地址字段,确保数据帧能正确地传递到目标设备。
MAC协议(Media Access Control Protocol)
MAC协议是用于管理网络设备如何访问共享媒体(如电缆或无线电波)的一组规则和方法。它属于数据链路层的一部分,负责控制数据的传输和确保设备不会在同一时间发送数据而导致碰撞。简单来说,MAC 协议是用来检测和处理数据传输中可能发生的碰撞的协议
常见的MAC协议包括:
- CSMA/CD(Carrier Sense Multiple Access with Collision Detection):这是以太网中传统的MAC协议,主要用于半双工网络中,设备在发送数据前会“监听”网络,看是否有其他设备在传输,如果发现有冲突,设备会停止发送并等待随机时间后重试。
- CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance):主要用于无线网络(如Wi-Fi)中,在发送数据前尝试避免冲突的发生。设备在发送数据前尝试避免冲突。通常通过在传输前等待随机时间,并在发送前发送短帧(如RTS/CTS)来避免冲突。
- ALOHA:早期无线通信网络。设备在有数据时直接发送,不做冲突检测。如果发生冲突,设备等待随机时间后重发。后来发展出了改进型的 Slotted ALOHA,通过在特定时隙内发送数据来减少冲突概率。
- 频分复用(FDMA)、波分复用(WDM)、码分复用(CDMA)、时分复用(TDMA)
- Token Passing:令牌环网(Token Ring)、FDDI(Fiber Distributed Data Interface),设备通过一个特殊的帧(令牌)来获得发送数据的权限。只有持有令牌的设备可以发送数据,这样避免了冲突。
Note
1、但现代的交换机是全双工
2、且在任何时候决不会向相同的接口转发超过一个帧
3、而且一个交换机是对接多个出口
因此数据包碰撞的问题基本上不存在了
