讲真,《计算机网络》这门课里,轮询(Polling)和令牌传递协议(Token Passing)属于那种“上课一听就懂,做题一做就废”的知识点。原因很简单:它不像CSMA/CD那样有强烈的碰撞退避戏剧性,也不像TCP那样有复杂的状态机,它更像一种朴素的“排队规则”——但恰恰是这种朴素,让它成了多路访问控制(Media Access Control)里最难讲清楚、也最容易考出区分度的部分。
这篇文章我就彻底把这俩协议掰开揉碎。从共享信道为什么需要调度讲起,到手算轮询开销和令牌环的最小时延,再用工程里常见的 Modbus 轮询、按键轮询、状态轮询做类比,最后给出期末和408复习的考点清单。不管你是刚学网络原理的大二学生,还是在工控现场跟PLC打交道的工程师,这篇文章都值得你花十分钟认真看一遍。
1. 为什么先要搞懂“受控接入”:共享信道的分配难题
1.1 一条共享线路上,凭什么你发我不发
想象一下多台设备连在同一条信道上。这个场景在今天看起来很“复古”,因为现实中我们早就用交换机把网络切成了一对一的独享通道,但在网络原理里,共享信道是多路访问协议存在的根本前提。
共享信道的核心矛盾是:同一时刻如果两个站点同时发送,信号就会在线上叠加,接收方收到的就是一坨无法解析的噪声。这就是碰撞(Collision)。
你想啊,一条信道本质上跟一条单车道乡道差不多。一辆车走没问题,两辆车对向驶来就得有人让路。问题是,计算机网络里的“司机”们没有眼睛,它们看不到对面有没有车,只能靠一套规则来协调。于是就有了两大类思路:
- 随机访问(Random Access):站点想发就发,发完发现撞了就退避重来。CSMA/CD就是这类思路的典型代表。
- 受控访问(Controlled Access):站点不能想发就发,必须得到“允许”才能发送。轮询和令牌传递,就是受控访问里最典型的两种实现。
受控访问的思路,本质上就是把“谁有发送权”这个问题,从“竞争”变成“调度”。要么由一个中央节点裁决,要么大家按固定顺序轮流拿许可。这样做的代价是牺牲了一点点突发性,但换来了两个非常宝贵的东西:确定性和公平性。
1.2 从冲突退避到确定性调度:两种解题思路
很多人一开始学多路访问协议时,容易把CSMA/CD、轮询、令牌环混在一起,觉得它们都是“避免冲突的方案”。这种理解方向是对的,但完全不够。
CSMA/CD的核心是“先听后发,边发边听,冲突退避”。它的优点是实现简单,在轻负载下延迟极低;缺点是负载一高,碰撞概率指数上升,信道利用率猛跌。虽然以太网在早期靠它统治了局域网,但它本质上是一种“概率型”协议——你永远无法保证一个站点在某个确定时间内拿到信道。
轮询和令牌传递则不同。它们走的是“确定性调度”路线:
- 轮询(Polling):一个主节点挨个问从节点“你有没有数据要发?有就发,没有我就问下一个”。这是集中式控制。
- 令牌传递(Token Passing):一个特殊的控制帧“令牌”在网络中一圈一圈地跑,谁拿到令牌谁就有发送权,发送完再把令牌传给下一个站点。这是分布式控制。
这两种方式都有一个共同点:在任何时刻,信道上最多只有一个站点在合法发送。碰撞这种事,从机制上就被消灭了。代价是,站点即使没数据可发,也得花时间等令牌或等点名,这个等待时间就是轮询和令牌传递协议最核心的性能瓶颈,后面我会专门讲怎么算。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 轮询协议:主节点挨个点名,轮到谁谁说话
2.1 轮询到底是怎么点名发数据的
轮询协议的场景很典型:一台主站(Primary Station)带着一堆从站(Secondary Station),主站控制整个信道的访问权。从站不能抢,不能主动发言,只能等主站喊到自己。
完整流程是这样的:
- 主站发一个询问帧(Poll Frame),通知从站A“你可以发送”。
- 从站A如果有数据,就发送数据帧;如果没有数据,就回复一个“无数据”的响应帧,或者在更简单的机制里干脆保持沉默,主站等一个超时时间后认为它没话说。
- 主站收到A的发送结果(或者超时),接着问从站B。
- 循环往复。
这里看起来很简单,但有几个细节值得注意。首先,主站发送的询问帧本身要占用信道时间,它是一段实打实的开销。其次,从站收到询问后,无论有没有数据,从站的处理时间、响应帧或超时等待,都会成为整个周期的一部分。站点越多、轮询开销越大,信道的有效利用率就越低——这笔账我会在下一节仔细算。
另一种特殊的实现叫“逐站传递轮询”(Roll-Call Polling 的变体,也叫Hub Polling)。它的改进思路是:主站只问第一个从站,第一个从站发完后,直接把“询问权”传给下一个从站,数据最终绕一圈回到主站。这样能减少主站的通信负担,但它已经带有一点“令牌”的影子了。所以教材里常常把轮询和令牌放在一起讲,因为它们本质上是一根光谱上的不同位置。
2.2 轮询开销怎么算:别被“利用率”骗了
考试和面试里最常见的轮询计算题,就是让你算信道利用率或最坏等待时间。我直接把公式推导摆出来。
假设一个轮询系统里有 n 个从站,主站每轮询一个从站要花 t_poll 的时间(包括询问帧的发送时间和链路传播延迟),从站从收到询问到做出响应要花 t_response 的时间(包括无数据时的空响应帧)。再假设某轮中从站 i 需要发送一个时长为 t_frame 的数据帧。
在一轮完整的轮询周期 T 内,主站要做这些事:
T = 对所有站完成一次询问的时间 + 本轮实际发送数据的时间
最坏情况是:主站问了前面 n-1 个站,它们全部没有数据,但每个站都消耗了 t_poll + t_response;轮到第 n 个站时,它终于有了一大堆数据要发。
这种最坏等待时间就是:
Worst-case waiting = (n - 1) × (t_poll + t_response) + t_poll
信道利用率就有意思了。如果一轮里只有从站 k 发了一个 t_frame 的数据,那么利用率 U 为:
U = t_frame / (n × (t_poll + t_response) + t_frame)
这个公式一摆出来,就能看出轮询的致命弱点:当 n 很大,或者 t_response 很长时,即便信道几乎没在传数据,利用率也高不起来。更极端的情况是,如果某些从站长期没有数据,它们每次也要被“点名”一次,白白浪费信道时间。
实际工程中怎么优化?最常用的办法是“有钱的站多问,没钱的站少问”。也就是让主站根据优先级或历史流量,动态决定每个从站的轮询频率。比如一个主站带10个从站,其中两个是核心业务设备,剩下八个只是偶尔上报状态,那你完全可以让两个核心设备每轮被问两次,其余八个每两轮被问一次。这种加权轮询在实际项目里非常实用。
2.3 工程里的轮询远不止MAC层:Modbus、按键扫描、状态监控
聊完理论,我想插一段非常有价值的题外话。轮询这个思想,远不止存在于计算机网络教材的某一小节里。你在现实工程中遇到的绝大多数“查询-响应”机制,骨子里都是轮询。
最常见的就是工业现场里的 Modbus TCP 轮询。比如你用西门子 S7-1200 去轮询4台 Modbus TCP 从站设备,逻辑非常朴素:PLC做主站,依次向每台从站发送读保持寄存器或读线圈的请求,收到响应后记录数据,然后问下一台。这个流程里最关键的几个参数是:
- 超时时间(Timeout):如果从站没响应,主站等多久算失败。设置太短,正常慢速设备会被误判为离线;设置太长,整体轮询周期会变得很慢。通常我会先设 500ms 到 1s,再根据实际响应时间下调。
- 轮询周期(Polling Interval):4台设备,每台从发送请求到收到响应假设需要 100ms,然后再留 50ms 的间隔,一轮下来大约 600ms。如果你要求的数据实时性很高,就得缩短每台设备的读取量或者改成多线程并行。
- 寄存器地址区间:有些从站设备地址不连续,轮询时盲目跨越大范围读取会浪费大量报文时间,最好按设备实际数据量精确配置。
再看嵌入式开发里的按键扫描。热词里那句“编写程序通过主动轮询机制持续扫描独立按键电平”,很多人第一次听到会觉得“这不是很基础吗”。对,但它背后其实藏着一个非常容易出问题的地方——抖动。
机械按键按下和松开时,电平会在几百微秒到几毫秒内来回跳变,如果你在轮询循环里不处理抖动,一次按下可能会被识别成三四次触发。我常用的处理方式很简单:检测到按键电平变化后,延时 20ms 左右再读一次,如果电平还保持,才确认按键有效。这种“去抖”本质上就是在轮询机制上叠加了一个时间滤波。
还有系统监控里的状态轮询。监控平台每隔30秒去各台服务器抓一次CPU、内存、磁盘指标,这也是一种典型的轮询。它的优点是实现简单、消息模型固定,缺点是轮询周期越短、被监控设备越多,监控流量就越像一场“轮询风暴”。所以成熟的企业监控方案往往会引入“主动上报 + 轮询兜底”的混合模式:设备状态异常时主动推给监控端,监控端再定期扫描一次获取全量快照。
2.4 一把梭还是双刃剑:轮询的优势和短板
汇总一下轮询的优缺点,方便你记忆和回答简答题。
优势:
- 实现简单。主从结构清晰,协议状态少,调试方便。
- 没有碰撞,机制上就杜绝了随机退避。
- 公平性相对可控。主站按序点名,只要调度算法不偏心,每个站都能拿到发送机会。
- 行为确定。在知道站点数量和轮询开销的情况下,最长等待时间是能算出来的,这非常适合实时性要求高的工业控制场景。
短板:
- 轮询开销真实存在。站点即使无数据,也要消耗一次询问/响应的时间。
- 主站是单点故障。主站挂了,整个网络直接瘫痪。
- 可扩展性差。站点数增加,轮询周期线性拉长。
- 响应有“心跳延迟”。一个站点两次被问到的时间间隔是固定周期,这个周期内如果数据突发了,也只能干等。
3. 令牌传递协议:击鼓传花,谁拿令牌谁发声
3.1 令牌是什么,三种典型的令牌网络
如果说轮询是“老师点名回答问题”,那令牌传递就是“击鼓传花”:一个代表发送权的特殊帧在网络里流动,谁拿到它,谁才有资格发送数据。这个特殊帧就叫令牌(Token)。
令牌不是一个抽象概念,它就是一个实实在在的帧。以令牌环网(Token Ring,IEEE 802.5)为例,令牌帧很小,包含起始定界符、访问控制字节、结束定界符。站点在监听状态时,把经过的每一位都复制到自己的缓冲区检查,一旦发现“这是一个空闲令牌”,它就可以把令牌改成忙令牌(置访问控制字节中的令牌位),然后开始发送数据帧。
历史上出现过三种典型的令牌网络:
- 令牌环(Token Ring,IEEE 802.5):站点在物理上连成一个环,令牌沿环单向传递。IBM主导过很长时间。
- 令牌总线(Token Bus,IEEE 802.4):站点物理上挂在总线上,但逻辑上构成一个环。令牌按逻辑顺序在各站间传递,兼得总线的布线和令牌的确定性。
- FDDI(Fiber Distributed Data Interface):光纤双环,传输速率100Mbps,早期作为校园网和企业骨干网。它支持双环容错,一断还能自愈,算是令牌协议里技术最优雅的一个。
这三种网络共享同一个核心规则:想发数据,先拿令牌。
3.2 令牌环里的关键计算:环上永远要有足够的“位”
说到令牌环,教科书里最爱考的一个计算就是“环的比特长度”,也叫环时延(Ring Latency)。先别被名词吓到,理解了这个概念,一堆题目都能迎刃而解。
数据在链路上一比特一比特地传,同一时刻一个链路上能容纳的数据量,等于传播时延乘以数据率,这就是链路固有的“比特储量”。令牌环是环形拓扑,一圈的比特储量计算方法如下:
环的比特长度 = 传播时延 × 数据率 + 转发时延 × 站数
其中,传播时延 = 环的总长度 / 信号传播速度(电信号在介质中传输速度一般取 2×10⁸ m/s 左右);每个站点从收到前一个比特到转发出去,会引入一定的延迟,典型值是 1 比特时延(即该站点要收完1比特才转发,这个延迟等于 1/数据率 秒)。
来看一道经典计算题。假设有一圈 1000m 的环,数据率 4Mbps,信号传播速度为 2×10⁸ m/s,环上有 100 个站点,每个站点延迟 1 比特。那么:
传播时延 = 1000 / (2×10⁸) = 5 µs
传播路径上的比特数 = 4Mbps × 5µs = 20 bit
100 个站点的转发时延 = 100 × 1 bit = 100 bit
环的比特长度 = 20 + 100 = 120 bit
算出来的 120 bit 意味着:这个环上同一时刻最多能容纳 120 个比特。如果这个环要用令牌控制发送权,那么整个环里必须始终有一个令牌在绕圈。可如果环的比特长度比令牌本身的比特数还小,麻烦就来了——数据发着发着,收方已经把整帧收完了,而发送节点还没看到令牌回到自己这里。因此,802.5 协议规定了一个最小时延(相当于给环填充额外的位),保证环上至少能容下足够的比特数。
这类题目在期末考里出现的概率极高。解题关键就是记住公式,并且区分传播引入的比特延迟和站点转发引入的比特延迟。
3.3 单令牌与多令牌:效率与公平的取舍
令牌环刚诞生时,采用的策略是“单令牌”:站点A要发数据,必须先抓到空闲令牌并把它变成忙令牌;数据帧绕环一周回到A后,A再释放出一个新的空闲令牌。这种方式的优点是控制简单,环上最多只有一个令牌,不会出现多个站点同时握有发送权的混乱局面。缺点也很明显:如果数据帧很短,环的周长又很大,那么站点发完数据后要干等很久才能等到帧绕回来,这段时间信道白白空闲。
为了提升效率,802.5 后来加入了“早期令牌释放”(Early Token Release)。也就是说,站点发送完数据帧之后,不用等自己的数据绕回,立刻就可以释放空闲令牌给下一个站点。这样环上可以同时存在数据帧和空闲令牌,利用率大幅提升,但代价是对释令牌的时机要求更高了:你释放令牌之前,必须确认环上已经没有任何其他空闲令牌,否则就会出现“多令牌”异常。多令牌一旦出现,就可能有两个站点同时认为自己握有发送权,整个环的仲裁就崩了。
从单令牌到早期释放,本质上就是一个“效率换公平”的权衡。单令牌在最坏情况下每个站点发一帧数据要等几乎一整圈,但它绝对安全;早期释放提高了并发度,但协议状态机复杂了很多。这个权衡思路在后来很多分布式协议里都能看到影子——比如分布式锁租约时间设置得好,能极大提高并发度,设置不好就会产生“两个持有者同时干活的脑裂”问题。
另外,802.5 还支持优先级和预约。访问控制字节里有优先权字段,站点想要更高优先级时可以在经过的帧上做标记预约。这个机制的出现,说明早期设计者已经意识到纯公平的轮转调度满足不了实时性需求。不过,优先级字段的增加也让协议变得极其复杂,这也是它后来被以太网打得毫无还手之力的原因之一。
3.4 为什么令牌环最后输给了以太网
这里需要说一个反直觉的事实:纯论技术,令牌环在重负载下的表现其实优于早期以太网。以太网CSMA/CD负载一高碰撞频发,有效吞吐量可能掉到理论速率的30%以下;而令牌环在负载高时因为没有碰撞,利用率能稳定保持在高位。可最终统治局域网的却是以太网。原因很现实:
第一,硬件成本。令牌环的网卡、集线器(MAU)都比以太网贵一个档次。早期 IBM Token Ring 的网卡价格几乎是同速率以太网网卡的两三倍。
第二,维护复杂度。令牌环采用环形拓扑,虽然802.5定义了星型集中器(MAU)来把物理连接做成星型、逻辑环不变,但每个站点都要参与比特转发,断一个点就需要MAU做旁路,出问题时的排查难度远高于以太网。
第三,扩展性差。令牌环从4Mbps升到16Mbps已经是极限,再往高速走,站点的1比特转发延迟会变得难以接受;而以太网从10Mbps到100Mbps一路顺畅升级。
第四,最致命的——交换式以太网出现了。以太网交换机把网络切成多个点对点全双工链路,冲突域直接被消除,CSMA/CD在交换式以太网里根本不需要启用。你想象一下这个类比:以前大家抢一条独木桥过河(CSMA/CD),现在直接每个人配了一条专用小桥(交换全双工),那还要击鼓传花、还要排队点名干什么?
所以,令牌环不是“技术上失败了”,而是被更廉价、更容易扩展的技术路线降维打击了。但它留下的“确定性调度”思想,至今仍在各类工控协议里活跃着。
4. 轮询 vs 令牌:一张表和它们的“现代马甲”
4.1 直接对比:集中控制 vs 分布控制
我把这两个协议放在几个维度下做了张对比表,考试复习时直接抄走就行。
| 对比维度 | 轮询(Polling) | 令牌传递(Token Passing) |
|---|---|---|
| 控制方式 | 集中式,主站控制所有从站 | 分布式,站点间平等传递令牌 |
| 碰撞风险 | 无,主站统一授权 | 无,只有持令牌者能发 |
| 单点故障 | 有,主站故障全网瘫痪 | 有,令牌丢失或站点故障可能导致全网瘫痪 |
| 轻负载表现 | 较差,没有数据也要被点名 | 较差,令牌同样要绕圈 |
| 重负载表现 | 良好,无碰撞退避 | 极佳,信道利用率稳定 |
| 公平性 | 取决于主站调度算法 | 固有公平,按环序轮转 |
| 复杂度 | 简单,主从状态机清晰 | 复杂,需要令牌管理、环恢复机制 |
| 典型应用 | Modbus、PROFIBUS主从、802.11 PCF | 802.5令牌环、令牌总线、FDDI |
不难看出,轮询的优势在于“简单、可控”,令牌的优势在于“分布式、公平”。轮询更像是老大拍板,令牌更像是村委会轮流管事。
4.2 你以为它们退出了,其实还在各种协议里活得好好的
虽然令牌环和令牌总线已经消失在历史长河里,但“轮询”和“令牌”的思想并没有死,它们换了一层马甲继续活跃在现代网络中。
先说无线局域网。802.11 的 DCF 模式本质上是 CSMA/CA,也就是“听不到碰撞的CSMA”。但802.11协议里还定义了 PCF(Point Coordination Function)和 HCCA 这类轮询机制,由接入点充当主站,轮流询问各站点“有没有数据,有就发”。不过因为实际部署中轮询机制在无线环境下的效率问题,PCF几乎没被大规模使用,现在主流是更灵活的 EDCA 竞争机制。另一个典型的轮询结构是蓝牙微微网(Piconet):一个主设备最多连接7个活动从设备,主设备依靠轮询每个从设备来控制所有时隙的分配。
再看工业现场总线。PROFIBUS-DP 的主从轮询机制、Modbus 的查询响应机制、CANopen 的 PDO 同步和轮询,本质上都是主站周期性点名。今天的工业以太网,哪怕是基于以太网物理层的 EtherCAT、PROFINET IRT,在数据调度层也大量用到“主站广播帧周期扫描”的思想,这些协议的实时性靠的就是确定性调度,而不是随机竞争。
“令牌”的思想则延伸到了分布式系统和锁管理里。一个进程想访问共享资源,必须先拿到一把“令牌锁”,用完释放给下一个进程——这和令牌传递几乎一模一样。Redis 分布式锁、ZooKeeper 的顺序临时节点、数据库的 Lease 机制,都在用类似令牌的思维保证分布式环境里同一时刻只有一个节点的操作是合法有效的。所以,你在学网络协议时如果能理解令牌环,再去看分布式系统的锁和租约,会有一种“原来如此”的通透感。
5. 写一个最小轮询调度,顺便梳理常见问题排查
5.1 用Python模拟一次轮询过程
理论讲再多,也不如动手跑一遍来得痛快。我用 Python 写一个简单的轮询调度模拟,让你直观看到轮询周期、等待时间是怎么变化的:
python复制import time
import random
devices = ["A", "B", "C", "D"]
poll_overhead = 0.01 # 主节点询问一次所需时间(秒)
response_overhead = 0.01 # 从节点响应所需时间(秒)
rounds = 3
for current_round in range(1, rounds + 1):
print(f"--- 第 {current_round} 轮 ---")
for dev in devices:
print(f"主站询问 {dev} ...")
time.sleep(poll_overhead)
# 模拟是否有数据
if random.random() < 0.5:
print(f" {dev} 有数据,发送中...")
time.sleep(response_overhead)
else:
print(f" {dev} 无数据,跳过")
time.sleep(response_overhead)
运行这个程序你会发现,四个设备的完整周期大约是固定的 n × (poll_overhead + response_overhead) 乘上两倍左右,即使某台设备根本没数据,它也会被点名一次。这就是轮询机制“固定开销”最直观的体现。如果你想进一步观察最坏等待,把其中一个设备的 response_overhead 人为设成很大值,其他设备就会在这段时间内一起等待——这恰好对应了实际工程中“某个从站响应慢,拖累整个轮询周期”的场景。
5.2 常见问题排查速查表
基于我自己的实践和踩坑经历,整理一份高频问题速查表:
| 场景 | 现象 | 可能原因 | 排查思路 |
|---|---|---|---|
| PLC 轮询多台 Modbus 从站 | 某个从站反复超时 | 从站站号重复、IP配置错误、超时时间过短 | 先单独Ping通该设备,再单独读取该设备寄存器,最后才放回轮询队列 |
| 嵌入式按键轮询 | 按钮明明按了,程序没反应 | 轮询周期大于按键抖动时间、GPIO配置错了 | 加20ms去抖,独立扫描时先读电平再延时再读电平 |
| 监控系统状态轮询 | 设备数量多了之后,系统响应很慢 | 轮询周期太短、每次轮询全量数据 | 改用增量查询,先慢后快,或者将实时监控改为事件上报 |
| 轮询等待时间过长 | 从站一多,整个系统实时性下降 | 单线程轮询、响应等待时间过长 | 引入多线程并行轮询,或按优先级加权轮询 |
| 程序主动轮询导致CPU占用高 | 循环里没有延时/等待 | 死循环忙等,没有休眠 | 轮询循环里加 sleep,或者改用定时器触发轮询 |
这里特别想强调一个工程习惯:轮询和中断不是对立关系,而是互补关系。在实时性要求高的场景里,你应该优先考虑中断或事件驱动;但如果你担心中断丢失、或者现场设备太多不好接中断线,那么可靠的轮询一定是兜底方案。而且轮询的好处在于,你别管中间某个节点怎么样,系统最终都会在固定周期回到这来,天然具备“自愈”能力。这就是为什么工业现场至今大量用轮询的原因之一。
6. 期末和408复习怎么学“轮询与令牌”
6.1 教材章节怎么对应着看
不同教材对这块内容的安排略有差异,但底层逻辑是一样的。
谢希仁版《计算机网络》通常在物理层或数据链路层附近讲信道划分与多路访问控制。轮询令牌这块内容,谢希仁把它放在“局域网”和“CSMA/CD”之后,用的是对比视角:先说随机访问,再说受控访问。复习时我建议你把“随机访问协议”和“受控访问协议”作为两大分支,各自列一张图,重点记住各自的典型协议和适用场景。
湖科大教书匠的计算机网络课程里,多路访问协议也是408考生必看的一节,讲得很细,尤其适合你对照着做概念辨析题。湖科大老师对“协议三要素”的解读比较深入,这对你用学术化语言回答简答题很有帮助。
自顶向下版教材(Computer Networking: A Top-Down Approach)则把这个话题放在第6章链路层。它更强调“多路访问协议”的三类划分:信道划分、随机访问、轮流访问。这里的“轮流访问”(Taking Turns)就是轮询和令牌传递的合称。
总体复习思路:先把“为什么需要受控访问”讲清楚,再分别记忆轮询和令牌的机制与优缺点,最后做几道计算题巩固公式。
6.2 高频考点和标准答题模板
期末和考研常见考点如下:
一、概念辨析:随机访问协议和受控访问协议的区别。
标准答法:随机访问协议允许站点在信道上自由发送,发生碰撞后通过退避算法重传,牺牲了确定性和公平性;受控访问协议通过中央授权或令牌传递限制站点的发送时机,消除了碰撞,保证公平性和确定性,但引入了额外控制开销。
二、轮询开销计算。
牢记公式:信道利用率 = 数据传输时间 /(全部轮询和响应开销 + 数据传输时间)。计算时注意是否包含全部从站,是否包含无数据站的空响应。
三、令牌环最小时延和比特长度计算。
牢记公式:环的比特长度 = 传播时延 × 数据率 + 站点数 × 每站延迟比特数。再根据帧长度和环比特长度判断协议是否需要“填充位”或设置最短帧长。
四、为什么令牌环比CSMA/CD更适合重负载。
标准答法:CSMA/CD在负载增大时碰撞概率增大,重传导致利用率下降;令牌环因为无碰撞,在重负载下能做到接近满载的稳定利用,同时每个站点的等待时间有上界,适合实时性要求高的场景。
五、令牌的维护。
标准答法:令牌丢失或重复时,需要由一个监控站负责超时检测并重新生成令牌;数据帧永远循环不删除时,监控站根据帧的忙/闲标志位判断并清除;站点故障时通过旁路机制隔离。
如果你在备考,我还建议把《计算机网络第八版答案》里的相关习题做一遍,但有个忠告:计算题不要直接抄答案,一定要先自己列式子。轮询和令牌的题目有时候就是“公式套错一步,全盘皆输”的路线,亲手推导一遍比看十遍答案都有用。
我自己的一个小习惯是,学完这块内容之后,顺手把家里的路由器网络拓扑画出来,然后类比一下:无线信道是共享的,接入点控制各设备发数据的方式,就有点像802.11里的轮询/竞争混合调度。当你发现网络协议真的能解释你身边的设备行为时,这些公式才有生命力,而你也会真正学懂它们。
