《计算机网络》深入学:轮询和令牌传递协议

在计算机网络中,如何协调多个节点在共享信道上的通信是一个核心问题。在上一节中,我们讨论了以太网(Ethernet)所采用的"随机访问"机制(如 CSMA/CD),其特点是"先听后说,冲突重发"。然而,在某些对实时性、确定性要求极高的应用场景下,随机竞争带来的不确定性是无法接受的。

本节将深入探讨另一种介质访问控制(MAC)策略------受控访问(Controlled Access) ,重点介绍其中的令牌传递协议(Token Passing Protocol)。这种机制通过有序的"轮询"方式,彻底消除了信道冲突。

4.1 历史背景与发展

4.1.1 从无序到有序的需求

20世纪70年代末至80年代初,局域网(LAN)技术方兴未艾。虽然基于总线拓扑的以太网因其简单低廉而迅速普及,但它有一个致命弱点:不确定性。在重负载情况下,以太网的碰撞几率急剧上升,导致网络吞吐量下降,且无法保证数据包在特定时间内送达。

对于工业自动化、银行交易系统以及IBM的大型机环境而言,网络必须是"确定性"的(Deterministic)。为了解决这一问题,IBM公司牵头研发了令牌环(Token Ring)技术。

4.1.2 标准化进程

  • IEEE 802.5(令牌环): 1985年,IEEE发布了802.5标准,定义了令牌环网的物理层和MAC子层规范。它成为了当时以太网最强有力的竞争对手。
  • IEEE 802.4(令牌总线): 为了适应工厂自动化中对总线物理拓扑的需求,同时保留令牌传递的确定性,IEEE制定了802.4标准(Token Bus)。
  • FDDI(光纤分布式数据接口): 随着光纤技术的发展,基于令牌传递机制的FDDI标准出现,将传输速率提升至100 Mbps,常用于当时的园区网主干。

虽然随着交换式以太网(Switched Ethernet)的出现,令牌环在商业局域网中逐渐式微,但其核心的"轮询"与"无冲突调度"思想至今仍在工业控制、嵌入式系统及部分无线通信协议中发挥着重要作用。

4.2 令牌传递的基本原理

令牌传递协议的核心思想非常朴素:持有"许可证"的人才有资格发言 。在网络中,这个许可证被称为令牌(Token)

4.2.1 拓扑结构:物理星型,逻辑环型

在理解令牌传递前,必须厘清物理连接与逻辑流向的区别。

  • 逻辑环型: 无论物理线路如何连接,网络中的站点在逻辑上组成一个首尾相接的环。令牌和数据帧沿着环路单向(通常是顺时针)逐站传递。
  • 物理星型: 在实际部署(如IBM Token Ring)中,为了易于管理和维护,通常采用星型布线。所有计算机连接到一个中心设备------多站接入单元(MAU, Multistation Access Unit)。MAU内部通过继电器将各个端口串联成环。

图 4-1:令牌环网的物理与逻辑结构示意图

4.2.2 工作流程

令牌是一个特殊的短帧(通常只有3个字节),它有两种状态:空闲(Free)忙(Busy)

  1. 令牌巡回: 当网络空闲时,一个"空闲令牌"在环路上从一个站点传到下一个站点。
  2. 捕获令牌: 当站点 AAA 需要发送数据时,它必须等待并捕获到这个空闲令牌。
  3. 发送数据: 站点 AAA 将令牌的状态位修改为"忙",并在其后附加数据载荷,构成一个完整的数据帧发送出去。此时,环路上不再有空闲令牌,其他站点(如 B,CB, CB,C)即使想发送数据也只能等待。
  4. 数据转发与接收: 数据帧沿着环路经过 B,CB, CB,C。每个站点都会检查帧的目的地址。如果 CCC 发现自己是接收者,它会复制帧中的数据,并标记帧状态为"已接收",然后将帧转发回环路。
  5. 移除数据与释放令牌: 数据帧绕环一周后回到发送者 AAA。AAA 检查确认数据已被接收,然后将数据帧从环上"剥离"(Drain),并产生一个新的"空闲令牌"发送到下游,将发送权移交给下一个站点。

4.3 技术细节与机制分析

为了保证网络的健壮性(Robustness)和效率,令牌传递协议包含许多精细的设计。

4.3.1 帧结构与令牌格式

在 IEEE 802.5 标准中,令牌和数据帧共用部分字段。

  • 令牌(3字节): 起始定界符(SD) + 访问控制字段(AC) + 结束定界符(ED)。
  • 访问控制字段(AC): 这是核心字段,包含:
    • 优先级位(Priority Bits, P): 用于服务质量(QoS)控制。
    • 令牌位(Token Bit, T): T=0T=0T=0 表示空闲令牌,T=1T=1T=1 表示数据帧(忙)。
    • 监视位(Monitor Bit, M): 用于防止孤儿帧无限循环。

4.3.2 环的维护:主动监视器

如果令牌丢失了怎么办?如果数据帧在环上无限循环怎么办?

为了解决这些问题,环中会选举出一个站点作为主动监视器(Active Monitor, AM)

AM 的职责包括:

  1. 检测令牌丢失: 如果在设定时间 TmaxT_{max}Tmax 内未检测到令牌经过,AM 会生成一个新的空闲令牌。
  2. 处理孤儿帧: 当一个忙令牌(数据帧)经过 AM 时,AM 会将帧中的 MMM 位置为 1。如果该帧再次经过 AM 且 M=1M=1M=1,说明发送该帧的站点未能将其移除(可能已宕机),AM 会强制销毁该帧并生成新令牌。

图 4-2:主动监视器的工作机制

4.3.3 性能分析:确定性与效率

假设环上有 NNN 个站点,信号在环上传播一圈的时间为 τ\tauτ(包括线路传播延迟和每个站点的比特延迟)。

  • 无冲突: 任何时刻只有一个站点持有令牌,因此信道利用率 theoretically 可以接近 100%,不会像 CSMA/CD 那样在高负载下因碰撞导致吞吐量骤降。
  • 最大等待时间: 设每个站点持有令牌传输数据的最大时间为 ThtT_{ht}Tht (Token Holding Time)。那么,一个站点想要发送数据,最坏情况下的等待时间 TwaitT_{wait}Twait 约为:
    Twait≈N×(Tht+τN) T_{wait} \approx N \times (T_{ht} + \frac{\tau}{N}) Twait≈N×(Tht+Nτ)
    这表明等待时间是有上界的(Bounded Latency),这就是确定性的来源。

4.4 实际应用与现代演进

4.4.1 传统应用领域的衰退

在20世纪90年代,随着交换式以太网技术的成熟(全双工通信消除了冲突域)以及快速以太网(100Mbps/1000Mbps)带来的巨大带宽优势,复杂的令牌环硬件(需要昂贵的MAU和复杂的MAC芯片)在办公网络市场逐渐被淘汰。

4.4.2 工业控制系统(Fieldbus)

然而,令牌传递并未消失。在工业自动化领域,如 Profibus 等现场总线协议,依然广泛使用令牌总线(Token Bus)机制。

  • 原因: 工厂里的机械臂、流水线必须在严格的时间窗口内接收指令。以太网的"大概率送达"无法满足工业级的"绝对准时"。令牌机制保证了指令传输的实时性和最坏情况响应时间。

4.4.3 现代及嵌入式网络

  1. 光传输网络: 一些城域网环网保护技术(如RPR, Resilient Packet Ring)借用了令牌环的拓扑和公平性算法。
  2. 存储区域网络(SAN): 光纤通道(Fibre Channel)的某些仲裁环路模式(FC-AL)采用了类似的轮询访问机制。
  3. 无线网络: 虽然 Wi-Fi 主要使用 CSMA/CA,但其协议中包含一个无竞争周期(CFP),在此期间,接入点(AP)充当中央控制器,通过轮询(Polling)各个站点来分配传输机会,这本质上就是一种集中式的令牌传递,用于保障语音或视频流的质量。

小结

令牌传递协议代表了计算机网络中"有序控制"的设计哲学。与以太网的"自由竞争"相比,它通过牺牲一定的设备复杂度和轻负载下的延迟,换取了高负载下的高吞吐量和严格的确定性延迟。

尽管经典的 IEEE 802.5 令牌环网已成为历史,但其蕴含的轮询(Polling)环路维护 以及无冲突调度的思想,依然深深植根于现代通信系统的底层逻辑中,特别是在那些对可靠性和实时性要求苛刻的关键任务系统中。

相关推荐
CS创新实验室2 小时前
《计算机网络》深入学:局域网与接入网技术
网络·计算机网络·考研·408·局域网
王干脆2 小时前
ConcurrentHashMap禁止null键值的原因
java·开发语言
小李独爱秋2 小时前
计算机网络经典问题透视:试比较先进先出排队(FIFO)、公平排队(FQ)和加权公平排队(WFQ)的优缺点
服务器·计算机网络·算法·web安全·信息与通信·队列
代码游侠2 小时前
ARM嵌入式开发代码实践——LED灯闪烁(C语言版)
c语言·开发语言·arm开发·笔记·嵌入式硬件·学习
—Qeyser2 小时前
Flutter Text 文本组件完全指南
开发语言·javascript·flutter
咕噜企业分发小米2 小时前
豆包大模型在药物研发中的知识检索效率如何?
java·开发语言·数据库
橘子师兄2 小时前
C++AI大模型接入SDK—快速上手
开发语言·c++·人工智能
麒qiqi2 小时前
进阶 IMX6ULL 裸机开发:从 C 语言点灯到 BSP 工程化(附 SDK / 链接脚本实战)
c语言·开发语言
秋刀鱼程序编程2 小时前
Java基础入门(七)---异常处理
java·开发语言·python