《计算机网络》深入学:以太网交换机原理与应用

4.1 引言

在现代计算机网络中,以太网交换机(Ethernet Switch)是构建局域网(LAN)的基石。无论是家庭网络、企业办公网还是大型数据中心,交换机都扮演着数据"交通枢纽"的角色。本章将深入探讨交换机的发展历程、核心工作原理、交换架构以及在现代网络中的应用。

4.2 以太网设备的演进历史

要理解交换机为何如此重要,首先需要回顾以太网连接设备的演变过程。这一过程体现了网络对带宽利用率和传输效率不断追求的历史。

4.2.1 从共享介质到集线器(Hub)

早期的以太网基于同轴电缆,采用总线型拓扑。所有计算机连接在同一根线缆上,这意味着同一时刻只能有一台设备发送数据,否则会发生"冲突"(Collision)。

为了简化布线,集线器(Hub)应运而生。集线器工作在 OSI 模型的第一层(物理层)。它的工作极其简单:从一个端口接收到的信号,会原封不动地被整形放大并广播到所有其他端口。

图 4-1:集线器的工作模式示意图

集线器的缺点显而易见:

  1. 带宽共享 :如果集线器的总带宽是 100 Mbps 100 \text{ Mbps} 100 Mbps,连接了 10 10 10 台设备,每台设备平均只能获得 10 Mbps 10 \text{ Mbps} 10 Mbps。
  2. 安全隐患:所有数据被广播,任何节点都能抓包窃听。
  3. 冲突域(Collision Domain):所有端口属于同一个冲突域,设备越多,冲突概率越大,网络越拥堵。

4.2.2 网桥(Bridge)的出现

为了解决冲突问题,网桥诞生了。网桥工作在 OSI 模型的第二层(数据链路层)。它能够识别 MAC 地址,并将网络分割成两个冲突域。网桥通过软件处理数据帧,虽然隔离了冲突,但只有两个端口,且处理速度较慢,未能大规模普及。

4.2.3 交换机(Switch)的革命

以太网交换机本质上是一个"多端口的高速网桥"。它结合了集线器的多端口特性和网桥的智能转发特性,并利用专用集成电路(ASIC)在硬件层面实现高速转发。

交换机将每一个端口都划分成一个独立的冲突域。这意味着,端口 1 和端口 2 通信的同时,端口 3 和端口 4 也可以同时通信,互不干扰。

4.3 交换机的工作原理

交换机工作在数据链路层,其核心任务是根据数据帧中的**MAC 地址(媒体访问控制地址)**来决定数据的去向。

4.3.1 核心组件:MAC 地址表

交换机内部维护着一张"MAC 地址表"(也称为 CAM 表,内容可寻址存储器表)。这张表记录了:

  • MAC 地址:网络设备的物理地址。
  • 端口号:该设备连接在交换机的哪个接口上。
  • 老化时间:条目存在的有效时长。

4.3.2 交换机的三个基本操作

交换机处理数据帧的过程可以概括为三个动作:学习(Learning)、转发(Forwarding)、泛洪(Flooding)

假设有一个新的交换机,其地址表为空。连接了主机 A(MAC_A,接端口 1)和主机 B(MAC_B,接端口 2)。

  1. 学习(Learning)

    • 当主机 A 向主机 B 发送一帧数据时,数据进入交换机的端口 1。
    • 交换机检查帧的源 MAC 地址(Source MAC)。
    • 交换机在 MAC 地址表中记录:MAC_A 位于 Port 1
    • 原理:既然数据从端口 1 进来,那么回复给 A 的数据自然也要从端口 1 出去。
  2. 泛洪(Flooding)

    • 交换机接着检查帧的目的 MAC 地址 (Destination MAC),发现是 MAC_B
    • 查询 MAC 地址表,发现表中没有 MAC_B 的记录(因为是新交换机,还没"认识"B)。
    • 交换机不得不将该数据帧复制并发送到除接收端口(端口 1)以外的所有端口
    • 注意:这一步类似于集线器,但仅发生在地址未知或广播帧的情况下。
  3. 转发(Forwarding)

    • 主机 B 收到数据后,向 A 回复确认信息。
    • 数据进入交换机端口 2。
    • 交换机再次执行"学习":记录 MAC_B 位于 Port 2
    • 交换机检查目的 MAC(此时是 MAC_A)。查询地址表,发现 MAC_A 对应 Port 1
    • 交换机将数据单播(Unicast)直接从端口 2 转发到端口 1,而不会发送给其他无关端口。

图 4-2:交换机建立 MAC 地址表的过程

4.3.3 冲突域与广播域

在学习交换机原理时,必须理清两个概念的区别:

  • 冲突域(Collision Domain) :在同一个介质上,同时发送数据会产生冲突的区域。
    • 结论 :交换机的每一个端口都是一个独立的冲突域。
  • 广播域(Broadcast Domain) :广播帧(目标 MAC 为 F F − F F − F F − F F − F F − F F FF-FF-FF-FF-FF-FF FF−FF−FF−FF−FF−FF)所能到达的范围。
    • 结论 :默认情况下,整台交换机属于同一个广播域。如果广播流量过大,会造成"广播风暴",降低网络效率。

4.4 交换机的转发方式

交换机在处理数据帧时,根据对延迟和可靠性的不同需求,主要有三种转发模式:

  1. 存储转发(Store-and-Forward)

    • 交换机接收完整的帧,进行 CRC(循环冗余校验)错误检查。
    • 如果帧无误,则查表转发;如果有错,直接丢弃。
    • 优点:可靠性高,不转发错误帧。
    • 缺点:延迟较高,延迟大小与帧长度成正比。这是目前最主流的模式。
  2. 直通转发(Cut-Through)

    • 交换机一旦读到目的 MAC 地址(在前 6 6 6 个字节中),就立即开始转发,不等待后续数据,也不进行错误校验。
    • 优点:延迟极低,恒定延迟。
    • 缺点:会将错误帧(如残帧)转发到网络中,浪费带宽。
  3. 无碎片转发(Fragment-Free)

    • 读取帧的前 64 64 64 字节(以太网最小帧长)后开始转发。
    • 原理:大多数冲突都发生在前 64 64 64 字节。
    • 这是前两种模式的折中方案。

4.5 关键技术扩展

随着网络规模的扩大,仅靠基础交换功能已无法满足需求,以下技术大大扩展了交换机的应用场景。

4.5.1 虚拟局域网(VLAN)

为了解决交换机默认处于同一个广播域导致的安全和性能问题,引入了 VLAN 技术。

VLAN 将一台物理交换机在逻辑上划分为多个虚拟交换机。例如,将端口 1-10 划入 VLAN 10(财务部),端口 11-20 划入 VLAN 20(工程部)。

  • 效果:VLAN 10 的广播帧不会到达 VLAN 20,实现了广播域的隔离和安全访问控制。

4.5.2 生成树协议(STP)

为了提高可靠性,网络通常会有冗余链路(例如两台交换机之间连两根线)。但这会形成物理环路,导致广播风暴瞬间瘫痪网络。

STP(Spanning Tree Protocol)通过算法逻辑地阻塞某个端口,打破环路。当主链路故障时,被阻塞的端口会自动激活,恢复通信。

图 4-3:VLAN 与 STP 的应用场景

4.6 现代应用与三层交换

4.6.1 三层交换机(Layer 3 Switch)

传统的二层交换机无法实现不同 VLAN 之间的通信(因为需要路由功能)。三层交换机在二层交换机的基础上,集成了路由器的部分路由功能(三层 IP 转发)。

它实现了"一次路由,多次交换",在企业核心网中,三层交换机已基本取代了传统的"路由器+交换机"的内部组网模式,提供线速的 VLAN 间路由。

4.6.2 数据中心与 SDN

在现代云计算数据中心,交换机的发展呈现出以下趋势:

  1. 高带宽 :端口速率从 1 Gbps 1 \text{ Gbps} 1 Gbps 向 10 Gbps 10 \text{ Gbps} 10 Gbps、 40 Gbps 40 \text{ Gbps} 40 Gbps、 100 Gbps 100 \text{ Gbps} 100 Gbps 甚至 400 Gbps 400 \text{ Gbps} 400 Gbps 演进。
  2. 叶脊架构(Spine-Leaf):取代了传统的树状架构,确保服务器之间的横向流量(East-West Traffic)具有低延迟和高带宽。
  3. SDN(软件定义网络):将交换机的控制平面(大脑)与数据平面(转发硬件)分离。管理员可以通过编写程序集中控制成百上千台交换机,而不是逐台配置,极大地提高了运维效率。

本章小结

以太网交换机通过隔离冲突域、维护 MAC 地址表和智能转发,彻底改变了局域网的性能。从基础的二层转发到 VLAN 隔离,再到三层路由交换及现代 SDN 技术,交换机始终随着网络需求的变化而进化。对于计算机专业的学生而言,深刻理解 MAC 地址学习机制和 VLAN 原理,是掌握复杂网络架构的必经之路。

相关推荐
cur1es3 小时前
【UDP的报文结构】
网络·网络协议·udp·md5
开开心心就好4 小时前
发票合并打印工具,多页布局设置实时预览
linux·运维·服务器·windows·pdf·harmonyos·1024程序员节
惊讶的猫4 小时前
OpenFeign(声明式HTTP客户端)
网络·网络协议·http·微服务·openfeign
css趣多多4 小时前
add组件增删改的表单处理
java·服务器·前端
Sheep Shaun4 小时前
揭开Linux的隐藏约定:你的第一个文件描述符为什么是3?
linux·服务器·ubuntu·文件系统·缓冲区
野犬寒鸦4 小时前
从零起步学习并发编程 || 第七章:ThreadLocal深层解析及常见问题解决方案
java·服务器·开发语言·jvm·后端·学习
心.c5 小时前
TCP协议深入解析
网络·网络协议·tcp/ip
?re?ta?rd?ed?5 小时前
linux中的调度策略
linux·运维·服务器
摇滚侠5 小时前
HTTP 404 - No response body available
网络·网络协议·http
全栈工程师修炼指南5 小时前
Nginx | stream content 阶段:TCP 协议四层反向代理浅析与实践
运维·网络·网络协议·tcp/ip·nginx