Network - 04.Data Link Layer-01

这一层负责在物理上相邻的两个节点之间传输数据。

  • 主要任务: 将数据报(Datagram)通过单个链路(一“跳”)从一个节点(如主机)可靠地传输到下一个节点(如路由器) 。
  • 具体功能:
  • 成帧 (Framing): 将网络层的数据报封装成帧 (frame),并添加链路层首部和尾部 。
  • 链路层寻址 (Addressing): 使用 MAC 地址(物理地址)来标识本地网络上的源和目标接口 。
  • 多路访问控制 (Multiple Access Control): 在共享介质(如 WiFi 或老式以太网 )上,决定哪个节点可以发送数据,以避免碰撞 (collision) 。
  • 差错检测 (Error Detection): 在帧中添加比特(如 CRC 或奇偶校验 ),使接收方能检测到传输错误 。如果检测到错误,该帧通常会被丢弃 。
  • (可选)差错纠正 (Error Correction): 接收方不仅能检测错误,还能纠正错误 。
  • (可选)流量控制: 协调相邻发送和接收节点之间的步调

5.1 简介与服务 (Introduction and Services)

1. 目标

  • 理解数据链路层 (data link layer) 服务的原理:
    • 差错检测与纠正 (Error detection, correction)
    • 共享广播信道 (Sharing a broadcast channel): 多路访问 (multiple access)
    • 链路层寻址 (Link layer addressing)
  • (可靠数据传输和流控制已在第 3 章中讨论)

2. 链路层术语

  • 节点 (Nodes): 主机 (hosts) 和路由器 (routers)。
  • 链路 (Links): 连接相邻节点的通信信道(如:有线链路, 无线链路, 局域网 LANs)。
  • 帧 (Frame): 第 2 层的分组 (packet),它封装 (encapsulates) 了网络层的数据报 (datagram)
  • 核心职责: 负责将数据报通过一条链路从一个节点传输到相邻的节点。

3. 链路层上下文

  • 一个数据报在从源到目标的路径上,可能会经过不同的链路层协议(例如,第一条链路是Ethernet,中间是 Frame Relay,最后是 WiFi)。
  • 每一跳的链路协议可能提供不同的服务。

交通类比 (Transportation Analogy):

  • 旅客 (Tourist) = 数据报 (Datagram)
  • 运输段 (Transport segment) (如 轿车, 飞机, 火车) = 通信链路 (Link)
  • 运输方式 (Transportation mode) (如 轿车服务, 航班, 火车服务) = 链路层协议 (Link layer protocol)
  • 旅行社 (Travel agent) = 路由算法 (Routing algorithm)
  • 成帧 (Framing):
    • 将数据报封装成帧,添加首部 (header)尾部 (trailer)
  • 链路访问 (Link access):
    • 如果是共享介质,需要协议来协调信道访问。
    • 帧头部使用 MAC 地址 (MAC addresses) 来标识源和目标,这不同于 IP 地址
  • 可靠交付 (Reliable delivery):
    • 相邻节点之间提供可靠交付。
    • 这在低比特错误率的链路(如光纤)上很少使用,但在高错误率的无线链路 (wireless links) 上很重要。
  • 流量控制 (Flow control):
    • 协调相邻的发送和接收节点之间的步调。
  • 差错检测 (Error detection):
    • 由信号衰减和噪声引起。
    • 接收方检测到错误,可以通知发送方重传或直接丢弃该帧。
  • 差错纠正 (Error correction):
    • 接收方识别并纠正比特错误,而无需重传。
  • 半/全双工 (Half/Full-duplex):
    • 半双工 (Half-duplex): 链路两端都可传输,但不能同时进行。
    • 全双工 (Full-duplex): 链路两端可同时收发。

5. 链路层在何处实现?

  • 每个主机和路由器中实现。
  • 链路层实现在 “适配器” (adaptor) 中,也称为网络接口卡 (Network Interface Card, NIC)(例如:以太网卡, 802.11 网卡)。
  • NIC 实现了链路层和物理层的功能,是硬件、软件和固件 (firmware) 的结合体。
  • 发送端适配器: 将数据报封装成帧,添加差错检测位等。
  • 接收端适配器: 检查错误,提取数据报,并将其传递给上层(网络层)。

5.2 差错检测与纠正 (Error Detection and Correction)

  • EDC (Error Detection and Correction bits): 用于差错校验的冗余位。
  • D: 受保护的数据。

1. 奇偶校验 (Parity Checking)

  • 单比特奇偶校验 (Single Bit Parity):
    • 添加一个校验位,使数据中 “1” 的总数(数据+校验位)为奇数或偶数。
    • 只能检测单个比特的错误。
  • 二维奇偶校验 (Two Dimensional Bit Parity):
    • 将数据排成二维矩阵,对每行和每列都计算奇偶校验位。
    • 不仅可以检测错误,还可以定位并纠正单个比特的错误。

2. 互联网校验和 (Internet Checksum) (回顾)

  • 将数据视为 16 位整数的序列。
  • 发送方: 计算所有 16 位整数的1 的补码和 (1’s complement sum),并将结果的反码放入校验和字段。
  • 接收方: 对收到的所有数据(包括校验和字段)计算 1 的补码和,如果结果全为 1 (或 0,取决于实现),则未检测到错误。

3. 循环冗余校验 (Cyclic Redundancy Check - CRC)

  • 一种更强大的差错检测技术,广泛用于 Ethernet, WiFi 等。
  • 原理:
    1. 发送方和接收方协商一个 r+1 位的生成多项式 (Generator), G
    2. 发送方希望发送 d 位的数据 D。它会计算 r 位的 CRC 校验码 R
    3. 计算方法是:R 等于 (D2r)(D \cdot 2^r) 除以 G 所得到的余数 (使用模 2 运算)。
    4. 使得 (D2r) XOR R(D \cdot 2^r) \text{ XOR } R(即 <D, R>)能被 G 整除。
    5. 接收方: 收到数据 <D', R'> 后,用 G 去除它。
    6. 如果余数非零,则检测到错误;否则,认为数据正确。
  • 能力: 可以检测所有小于 r+1 位的突发错误。

5.3 多路访问协议 (Multiple Access Protocols)

1. 背景

  • 链路类型:
    • 点对点 (Point-to-point): 如 PPP 拨号, 交换机到主机的连接。
    • 广播 (Broadcast): 共享有线或无线介质,如老式以太网、WiFi。
  • 多路访问问题:
    • 在广播信道上,如果两个或更多节点同时传输,会发生干扰 (interference),导致碰撞 (collision)
    • 多路访问协议 (Multiple Access Protocol) 是一种分布式算法,用于决定节点何时可以传输。

2. MAC 协议分类

  1. 信道划分 (Channel Partitioning)
  2. 随机接入 (Random Access)
  3. 轮流 (Taking Turns)

3. 信道划分 (Channel Partitioning)

  • 将信道资源(时间、频率)划分为小片,为节点独占式分配。
  • TDMA (Time Division Multiple Access - 时分多路复用):
    • 将时间划分为“轮 (rounds)”,每轮包含 N 个时隙 (slots)
    • 每个节点在每轮中被分配一个固定的时隙。
    • 缺点: 未使用的时隙会被浪费 (go idle)
  • FDMA (Frequency Division Multiple Access - 频分多路复用):
    • 将信道频谱划分为多个频带 (frequency bands)
    • 每个节点被分配一个固定的频带。
    • 缺点: 未使用的频带会被浪费。

4. 随机接入协议 (Random Access Protocols)

随机接入协议不预先划分信道(如 TDMA/FDMA),所有节点动态竞争共享信道。

  • 核心特点:
    1. 无划分: 任何节点都可以随时尝试发送数据。
    2. 允许碰撞: 两个或多个节点同时传输会导致干扰(碰撞),数据丢失。
    3. 从碰撞中恢复: 协议必须包含检测碰撞和重传的机制。
1) ALOHA 协议

ALOHA 是最早的随机接入协议,虽然简单但效率较低。

  • 纯 ALOHA (Pure ALOHA)

    • 机制: 非常简单,“想发就发”。一旦节点有帧要发送,立即传输。
    • 碰撞处理: 发送后监听信道(依靠 ACK),若发生碰撞,等待一个随机时间后重传。
    • 效率分析:
      • 易受损时间 (Vulnerable period): 2T2TTT 为传输一帧所需时间)。
      • 如果 t0t_0 时刻发送,那么在 [t0T,t0+T][t_0-T, t_0+T] 这个区间内有任何其他节点发送,都会导致碰撞。
      • 最大效率: 当网络负载 G=0.5G=0.5 时,信道利用率达到最大值 18.4% (1/2e)
      • 评价: 就像一群人在黑暗的房间里,想说话就直接喊,大部分时间都在互相打断。
  • 分槽 ALOHA (Slotted ALOHA)

    • 改进: 为了减少易受损时间,对时间进行分槽 (Slotting)
    • 规则:
      1. 时间被划分为长度为 TT 的时隙(Slot)。
      2. 节点只能在时隙的起点开始发送。
      3. 需要所有节点时钟同步
    • 碰撞处理: 如果发生碰撞,节点在随后的每个时隙以概率 pp 重传,直到成功。
    • 效率分析:
      • 易受损时间: 缩短为 TT。只有在同一个时隙起跑线同时出发才会撞。
      • 最大效率:G=1G=1 时,最大利用率为 36.8% (1/e)
    • 优缺点:
      • 优点: 效率比纯 ALOHA 翻倍,单个节点活跃时可利用全部带宽。
      • 缺点: 需要同步;碰撞仍会浪费时隙;空闲时隙导致浪费。
2)CSMA (载波侦听多路访问)

为了避免 ALOHA 那种“鲁莽”的发送方式,引入了侦听机制。

  • 核心思想: “先听后说” (Listen before Transmit)
    • 载波侦听 (Carrier Sense): 发送前先检测信道上是否有能量(是否有别人在说话)。
  • 工作流程:
    1. 如果信道空闲 (Idle):发送帧。
    2. 如果信道忙 (Busy):推迟发送 (Defer),直到信道变为空闲。
  • 为什么还会发生碰撞?
    • 传播延迟 (Propagation Delay) 是罪魁祸首。
    • 场景: 节点 A 开始发送,信号在介质中传播需要时间。在信号到达节点 B 之前,B 检测信道也是“空闲”的,于是 B 也开始发送。两股信号最终在链路中间相遇,发生碰撞。
    • 结论: 传播延迟越大(距离越远),CSMA 的性能越差。
3) CSMA/CD (带碰撞检测的 CSMA)

CSMA 虽然减少了碰撞概率,但一旦碰撞,节点会把整个没用的帧发完,浪费带宽。CSMA/CD 解决了这个问题。

  • 核心思想: “边说边听” (Listen while Transmit)
  • 工作机制:
    1. 侦听: 像 CSMA 一样,空闲则发送。
    2. 发送并检测: 在发送数据的同时,对比接收到的信号电压与自己发送的是否一致。
    3. 中断传输 (Abort): 一旦检测到冲突,立即停止发送数据帧。
    4. 发送堵塞信号 (Jam Signal): 发送一个短的干扰信号(通常 32 或 48 比特),确保全网所有节点(包括离得远的)都能明确知道发生了碰撞。
    5. 指数回退 (Binary Exponential Backoff):
      • 碰撞 nn 次后,从 {0,1,2,...,2n1}\{0, 1, 2, ..., 2^n-1\} 中随机选一个数 KK
      • 等待 K×512K \times 512 比特时间后重试。
      • 目的: 随着拥塞加剧,自动延长等待时间,降低再次碰撞概率。
  • 状态概括: 传输期、碰撞期、空闲期。
  • 应用场景:
    • 有线以太网 (Ethernet, IEEE 802.3) 的基础。
    • 注意: 无线网络 (WiFi) 无法使用 CSMA/CD,因为无线发送信号强度远大于接收信号,本地会“震耳欲聋”听不到对方的干扰(隐蔽站问题),所以 WiFi 使用 CSMA/CA (碰撞避免)
4. 协议对比总结
协议 机制口诀 碰撞后处理 最大效率 适用场景
纯 ALOHA 想发就发 随机重传 18% 极低负载
分槽 ALOHA 到点再发 概率重传 37% 需要同步
CSMA 先听后说 发完再重传 传播延迟小
CSMA/CD 边听边说 立即停止 很高 有线局域网

5. 轮流协议 (Taking Turns)

设计动机:
随机接入协议(如 CSMA/CD)在低负载时效率很高(延迟低),但在高负载下会因为频繁碰撞导致吞吐量急剧下降;而信道划分协议(如 TDMA)在高负载时公平且无冲突,但在低负载时会因为分配给不活跃节点的时隙被浪费而导致效率低下。
轮流协议试图“取长补短”,结合两者的优点:既要有随机接入的灵活性,又要有信道划分的无冲突保障。

1)轮询协议 (Polling)

这是一种集中式的控制策略,类似于课堂上老师点名提问。

  • 工作机制:
    • 网络中指定一个主节点 (Master Node)
    • 主节点以循环的方式“邀请”每一个从节点 (Slave Nodes) 发送数据。
    • 流程: 主节点发送报文给节点 A:“你有数据吗?如果有,你可以发 x 帧。” -> A 发送数据(或回答“没有”) -> 主节点询问节点 B -> …
  • 优点:
    • 消除冲突: 因为只有被点名的节点才能发送,所以不会发生碰撞。
    • 消除空闲时隙: 如果一个节点没有数据,主节点会立刻询问下一个,不会像 TDMA 那样死板地等待。
  • 缺点:
    • 轮询开销 (Polling Overhead): 主节点发出的“询问/邀请”报文本身也占用带宽。如果节点数据很少,大部分带宽可能都浪费在询问上了。
    • 等待延迟 (Latency): 即使只有一个节点想发送数据,它也必须等待主节点完成一轮询问点到它名字时才能发送。
    • 单点故障 (Single Point of Failure): 最致命的问题。如果主节点宕机,整个信道将瘫痪,所有从节点都无法通信。
2)令牌传递协议 (Token Passing)

这是一种分布式的轮流策略,类似于“击鼓传花”或“传话筒”。

  • 工作机制:
    • 没有主节点,网络通常组织成环形拓扑(逻辑上或物理上)。
    • 一个被称为 令牌 (Token) 的特殊小帧在节点之间按固定顺序传递。
    • 规则:
      1. 当节点收到令牌时,如果没有数据要发,就立即把令牌传给下一个节点。
      2. 如果有数据要发,它就持有令牌,发送最大数量的数据帧,发送完毕后再把令牌传给下家。
  • 优点:
    • 分散控制: 不需要主节点,相对公平。
    • 高负载效率高: 每个节点都有机会发送,且没有碰撞。
  • 缺点:
    • 令牌开销: 传递令牌本身需要时间。
    • 延迟: 节点必须等待令牌转一圈回到自己手中才能发送。
    • 令牌丢失/节点故障:
      • 如果持有令牌的节点突然死机,令牌就不见了,整个网络陷入死寂。
      • 如果令牌在传输中因位错而丢失,网络也会瘫痪。
      • 解决: 需要复杂的恢复机制来检测令牌丢失并重新生成令牌。

1. MAC 地址 (MAC Address)

  • 功能: 用于在同一物理网络 (LAN) 上,将帧从一个接口发送到另一个接口。
  • 格式: 48 位 (6 字节),通常用十六进制表示 (如 1A-2F-BB-76-09-AD)。
  • 唯一性: 地址被 “烧录” (burned in) 在 NIC 的 ROM 中。由 IEEE 统一管理和分配。
  • 广播地址 (Broadcast address): FF-FF-FF-FF-FF-FF。发往此地址的帧会被 LAN 上的所有节点接收。
  • MAC vs. IP:
    • MAC 地址: 扁平 (flat) 结构,可移植。如同身份证号(唯一且不随地点改变)。
    • IP 地址: 层次 (hierarchical) 结构,不可移植(取决于所连接的子网)。如同邮政地址(随地点改变)。

2. ARP (Address Resolution Protocol - 地址解析协议)

  • 问题: 在同一局域网内,已知一个节点的 IP 地址,如何获取其 MAC 地址?
  • ARP 表 (ARP table):
    • LAN 上的每个节点(主机、路由器)都有一个 ARP 表。
    • 存储 <IP 地址, MAC 地址, TTL> 的映射关系。
    • TTL (Time To Live): 映射过期的(通常 20 分钟),是一种软状态 (soft state)
  • ARP 协议过程 (在同一 LAN 内):
    1. A 想给 B 发送数据报,A 知道 B 的 IP 地址。
    2. A 在其 ARP 表中查找 B 的 IP,未找到。
    3. A 广播 (broadcast) 一个 ARP 查询 (query) 包,询问:“谁拥有 B 的 IP 地址 x.x.x.x?” (目的 MAC 为 FF-FF...)
    4. LAN 上的所有节点都收到此查询。
    5. 只有 B 识别出这是在询问自己的 IP。
    6. B 单播 (unicast) 一个 ARP 回复 (reply) 给 A,包中包含:“我是 x.x.x.x,我的 MAC 地址是 ...”。
    7. A 收到回复,将 B 的 (IP, MAC) 映射存入自己的 ARP 表,然后发送数据帧。

3. 跨子网路由 (Routing to another LAN)

这是一个至关重要的场景,展示了网络层 (IP) 和链路层 (MAC) 如何在复杂的网络拓扑中协同工作。跨子网路由是为了实现 A 到 B 的端到端通信。在这个过程中,ARP 查找 MAC 地址只是为了解决“下一跳给谁”的传输问题。

在理解具体步骤前,必须牢记两条规则:

  • IP 地址 (逻辑地址) 始终不变: 就像信封上的“收件人”和“寄件人”,无论经过多少个中转站,源 IP目的 IP 从头到尾保持不变。
  • MAC 地址 (物理地址) 逐跳改变: 就像负责运输的“卡车”或“快递员”,每一“跳” (Hop) 都要重新封装,源 MAC目的 MAC 在每一段链路都会改变。

场景设定

  • 发送方 A:位于子网 1 (IP_A, MAC_A)。
  • 接收方 B:位于子网 2 (IP_B, MAC_B)。
  • 路由器 R:连接子网 1 和子网 2 的网关。
    • 面向子网 1 的接口:(IP_R1, MAC_R1)
    • 面向子网 2 的接口:(IP_R2, MAC_R2)

阶段一:主机 A 发送数据 (在子网 1 内)

  1. 判断目标: A 查看 B 的 IP 地址,根据子网掩码判断出 B 不在同一个子网内。
  2. 确定下一跳: A 决定将数据包发送给其配置的默认网关 (Default Gateway),即路由器 R。
  3. 封装 IP 数据报: A 创建网络层数据报。
    • Src IP: A
    • Dest IP: B
  4. 获取网关 MAC: A 知道网关的 IP (IP_R1),但在封装帧时需要 MAC 地址。A 检查 ARP 表,若没有,则广播 ARP Query。路由器 R 回复其 MAC 地址 (MAC_R1)。
  5. 发送帧: A 创建链路层帧并发送。
    • Src MAC: A
    • Dest MAC: MAC_R1 (注意:这里目标是路由器,不是 B)
    • Payload: IP 数据报 (A->B)

阶段二:路由器 R 中转 (跨越网络)
6. 解封装 (Decapsulation): 路由器 R 在接口 1 收到帧,检查 Dest MAC 是自己 (MAC_R1),于是接收并提取出 IP 数据报。
7. 路由决策: R 检查 IP 头部,发现 Dest IP 是 B。R 查询转发表 (Forwarding Table),得知通往 B 的路径需要从接口 2 出发。
8. 获取下一跳 MAC: R 需要将包转发给子网 2 中的 B。R 检查接口 2 的 ARP 表,查找 IP_B 对应的 MAC。若未找到,R 在子网 2 中广播 ARP Query,B 回复 MAC_B
9. 重新封装 (Re-encapsulation): R 创建一个新的链路层帧。
* Src MAC: MAC_R2 (路由器的出口 MAC)
* Dest MAC: MAC_B (最终目标的 MAC)
* Payload: 完全相同的 IP 数据报 (A->B)

阶段三:主机 B 接收 (在子网 2 内)
10. 最终接收: B 收到帧,检查 Dest MAC 是自己 (MAC_B),解封装取出 IP 数据报。
11. 上交处理: B 检查 Dest IP 是自己,将数据载荷上交给传输层 (TCP/UDP) 处理。

传输阶段 源 IP 地址 目的 IP 地址 源 MAC 地址 目的 MAC 地址
A -> 路由器 IP_A (不变) IP_B (不变) MAC_A MAC_R1 (网关)
路由器 -> B IP_A (不变) IP_B (不变) MAC_R2 (网关) MAC_B

总结: 路由器在网络层是“中转站”,但在链路层它是“终点”和“新起点”。它剥离旧的帧头,换上新的帧头,就像在中转站给包裹换了一辆新的运输车,但包裹里的信件内容(IP包)从未被打开修改。

4. ARP 攻击

  • 原理: ARP 协议基于信任。攻击者可以主动发送伪造的 ARP 响应包(ARP 欺骗),毒化 (poison)
    目标主机的 ARP 缓存,将网关的 IP 映射到攻击者的 MAC 地址。
  • 后果: 造成中间人攻击 (man-in-the-middle) 或网络中断。

5.5 以太网 (Ethernet)

  • 目前占主导地位的有线局域网技术。
  • 由 Metcalfe (梅特卡夫) 发明,最初使用 CSMA/CD。

1. 拓扑演进

  • 过去:总线型 (Bus Topology)
    • 所有节点共享同一根同轴电缆。这根电缆就是一个巨大的碰撞域 (Collision Domain)。因为容易冲突,所以效率不高,这主要存在于 90 年代。
  • 现在:星型 (Star Topology)
    • 交换机是活动 (Active) 设备,它很聪明。每个节点和交换机之间都是独立的链路。在全双工模式下,节点之间根本不会发生碰撞。这是现在的绝对主流。

2. 以太网帧结构 (Ethernet Frame Structure)

  • 前同步码 (Preamble) (8 字节): 7 字节的 10101010 和 1 字节的 10101011。用于发送方和接收方的时钟同步。
  • 目的 MAC 地址 (Dest. Address) (6 字节)
  • 源 MAC 地址 (Source Address) (6 字节)
  • 类型 (Type) (2 字节): 指示上层协议(如果里面是 IP 数据包,就交给 IP 协议处理;如果是 ARP 包,就交给 ARP 协议处理。)。
  • 数据 (Data) (46-1500 字节): 封装的上层 PDU (如 IP 数据报)。
    • 1500 (MTU):以太网规定一次最大只能运这么多,太大了要切分。
    • 46:如果数据太少(比如只有 10 个字节),以太网会强行填充垃圾数据补齐到 46 字节。这是为了保证帧有足够的长度,让旧式的碰撞检测 (CD) 机制能正常工作。
  • CRC (4 字节): 循环冗余校验。接收方会检查 CRC,如果失败,则丢弃该帧 (dropped)

3. 以太网特性

  • 无连接 (Connectionless): 发送和接收 NIC 之间没有握手。不像 TCP 那样还需要三次握手建立感情,以太网是有数据直接就发。
  • 不可靠 (Unreliable): 接收 NIC 不会向发送 NIC 发送 ACK 或 NACK。
    • 如果帧丢失(例如 CRC 校验失败),数据报就丢失了。
    • 不管你收没收到。接收方收到了不会回“收到”,收不到(比如 CRC 错被丢了)也不会回“重传”。可靠性必须由上层(如 TCP)来保证。

4. 以太网 CSMA/CD 算法 (经典总线型)

虽然现在的星型网络(交换机)已经几乎没有碰撞了,但 CSMA/CD 是以太网的灵魂。它主要用于解决总线型网络大家都想说话的问题。

  1. 网络接口卡NIC 从网络层收到数据报,创建帧。
  2. 侦听信道 (CS - Carrier Sense):
    • 如果信道空闲,开始传输。
    • 如果信道繁忙,等待直到信道变为空闲,然后立即传输。
  3. 传输期间,持续进行碰撞检测 (CD)
  4. 如果传输完成未检测到碰撞,则帧发送成功。
  5. 如果检测到碰撞
    • (a) 中止传输,并发送一个 48 bit 的堵塞信号 (Jam Signal)
    • (b) 进入指数退避 (Exponential Backoff) 阶段:
      • m 次碰撞后,从 {0,1,,2m1}\{0, 1, \dots, 2^m - 1\} 中随机选择一个数 K
      • 等待 K * 512 比特时间 (bit times)。
      • 返回步骤 2。

1. 集线器 (Hubs)

  • 物理层 (Layer 1) 设备,“愚蠢的”中继器 (dumb repeaters)。
  • 将从一个端口收到的比特 (bits) 复制并广播到所有其他端口。
  • 所有连接到 Hub 的节点都在同一个碰撞域中。

2. 交换机 (Switches)

  • 链路层 (Layer 2) 设备,比 Hub 智能。
  • 存储转发 (Store-and-forward): 接收完整的帧,检查 MAC地址,然后选择性地 (selectively) 将帧转发到一个或多个出端口。
  • 透明 (Transparent): 主机不知道交换机的存在,实现了即插即用 (plug-and-play)
  • 优点:
    • 隔离碰撞域: 交换机的每个端口都是一个独立的碰撞域。
    • 允许多路同时传输: A->A’ 和 B->B’ 的通信可以同时进行,互不干扰。

3. 交换机表 (Switch Table)

  • 交换机如何知道 A’ 在接口 4,B’ 在接口 5?
  • 交换机维护一个交换机表,条目为:<MAC 地址, 转发接口, TTL>

4. 交换机自学习 (Self-Learning)

  • 交换机通过查看入站帧的源 MAC 地址 (source MAC address) 来自动构建其交换机表。
  • 过程:
    1. 当一个帧从接口 X 到达时,交换机查看其源 MAC 地址(例如 A)。
    2. 它在表中记录或更新条目:<A, X, TTL>
    3. (自学习过程与转发过程是同时进行的)。

5. 交换机转发 (Filtering/Forwarding)

  1. 收到一个帧(来自接口 X,源 S,目的 D)。
  2. 使用 SX 更新交换机表(自学习)。
  3. 在交换机表中查找目的 MAC 地址 D
    • (a) 如果找到条目D 对应接口 Y):
      • if (Y == X): 丢弃该帧 (目的在同一网段,无需转发)。
      • else (Y != X): 将帧转发 (forward) 到接口 Y
    • (b) 如果未找到条目:
      • 泛洪 (Flood)。将帧复制并转发到X 之外的所有接口
        • 接在其他接口的都会收到这个帧,但它们发现目的 MAC 不是自己,就丢弃。
        • D 也会收到,D 发现目的 MAC 是自己,于是接收。
        • 注意:这就有点像 Hub 的行为,但交换机只在不知道目的地时才这么做。

6. 交换机 vs. 路由器 (Switches vs. Routers)

特性 交换机 (Switch) 路由器 (Router)
工作层次 第 2 层 (链路层) 第 3 层 (网络层)
转发依据 MAC 地址 IP 地址
转发表来源 自学习 (plug-and-play) 路由算法 (RIP, OSPF, BGP)
隔离 隔离碰撞域 (Collision Domains) 隔离广播域 (Broadcast Domains)

7. 现代以太网 (Full-Duplex)

  • 现代交换机使用星型拓扑全双工 (full duplex) 链路(使用双绞线中的不同线对进行收发)。
  • 在点对点的全双工链路中,不可能发生碰撞
  • 因此,现代以太网交换机不再需要 CSMA/CD 协议。

Network - 04.Data Link Layer-01
https://yima-gu.github.io/2026/01/14/Network/Network-04-Datalink-Layer-01/
作者
Yima Gu
发布于
2026年1月15日
许可协议