资讯动态

数据链路层课后题全解析:CRC、CSMA/CD、最短帧长一次讲透

发布时间:2026/10/20 6:39:17 来源:尧图企业网站定制
数据链路层是很多人学计算机网络遇到的第一个坎。物理层好歹能靠“信号怎么传”脑补过去一进第三章封装成帧、透明传输、差错检测、PPP、CSMA/CD、交换机自学习概念一个接一个课后习题更是从CRC手算到最短帧长计算题题都像在做数学。我在辅导这门课的时候发现大部分同学的问题不是不努力而是知识是散的——知识点背了题目一变就懵公式会套了却不知道为什么要这么算。这篇不打算只贴答案而是把数据链路层课后题背后的逻辑拆开每道题在考什么、答案为什么是这样、换个条件怎么处理、哪些理解误区最容易被扣分。考研复习、期末冲刺或者单纯想把这一章学通透的人都可以照着走一遍。1. 先看全貌第三章到底在考什么1.1 数据链路层的位置你是在给“帧”当翻译物理层解决的是“比特怎么在介质上传输”数据链路层则是把这些比特组织成有意义的“帧”并且保证相邻两个节点之间传输的帧是“干净”的。可以把它理解成快递分拣中心物理层是马路和货车链路层要负责贴面单、检查包裹有没有破损、决定走哪条路、怎么避免两条线同时发货撞车。第三章课后题的绝大多数题目本质都是在考这几件事怎么把比特装进帧里封装成帧、怎么保证任何内容都能装透明传输、怎么发现传输中出了错差错检测、怎么让多个站点有序共享一条线介质访问控制。抓住这四条主线后面所有题你都可以对号入座。很多同学做这章题容易慌是因为题目看起来又像计算又像概念其实归归类就四类算CRC余数、算帧长或争用期、写帧填充结果、辨析名词。做题之前先把这四类在脑子里挂好钩看到题先问自己“这是哪一类”比直接硬算要稳得多。我给学生讲题时反复强调计算题的分是最容易拿的因为它有固定套路概念题才容易丢分因为它要求你说话精确。后面两部分我会分别展开。1.2 三个基本问题的记法用“寄快递”理解封装成帧、透明传输、差错检测是数据链路层的三个基本问题其实对应三件日常事。封装成帧给数据加头加尾。就像寄快递必须填快递单收件人、寄件人、重量都要写清楚。帧头和帧尾就是那两张单子帧界定了“这一包数据从哪里开始到哪里结束”。所以课后题凡是问到“帧定界的作用”答题核心就是让接收方知道一个帧的起点和终点不至于多读或少读。透明传输数据里如果恰好出现了和帧头帧尾相同的比特组合要让接收方不误判。这就像快递箱里若混进了一张和面单长得一模一样的纸片分拣机器会把纸片当面单扫所以我们要给这种纸片先做个标记再装进去。第三章里讲的字符填充、零比特填充都是为了让“任何比特组合都能放进帧里”——这就是“透明”两个字的意思。差错检测接收方要能判断帧在传输过程中有没有被干扰。对应快递验货环节看看东西有没有破损。为什么数据链路层要用CRC而不像IP层那样用简单校验和因为越靠近物理层的传输越容易受到噪声干扰需要更强的检错能力而且CRC用硬件实现很方便一个移位寄存器就能算完代价小效果好所以被大量用在链路层。课后题问你“为什么选择CRC”时从“检错能力硬件实现成本”两个角度回答基本就是标准答案。这三个问题单独考不难但经常混合起来考。比如问你“为什么数据部分出现帧定界符时必须处理”这其实是在考透明传输和封装成帧之间的关系。我见过不少学生能把三条概念背得滚瓜烂熟但换个角度问就答不到点子上就是因为没把三者当成一个整体理解封装成帧是前提透明传输是补充差错检测是保障。1.3 本章两条技术线点到点与广播第三章的协议要分成两条线来学。一条是点到点线路典型代表是PPP协议另一条是广播信道典型代表是以太网里的CSMA/CD协议。课后题里这两条线经常交替出现PPP考封装格式、字节填充、零比特填充以太网考MAC帧格式、CSMA/CD流程、二进制指数退避、最短帧长、交换机自学习。两条线最容易搞混的地方在于很多同学把两种协议的细节混在一起记导致答非所问。其实它们的核心区别就一句话点到点线路不需要解决“谁先发”广播信道必须解决“很多人抢一条线怎么办”。拿宿舍厕所打比方单人间厕所不需要排队规则公共厕所就得定规矩甚至撞门了还得退出去重新等。PPP不需要CSMA/CD那套机制就是因为PPP线路两端只有两个节点不存在竞争而以太网里所有站点共享总线就得把事情定得特别细。这两条线在题目里的权重也不太一样。考研和期末考试里以太网这一侧通常是重点CSMA/CD的计算、退避算法的规则、最短帧长的推导都是高频考点PPP则主要考帧格式和填充规则属于“把规则记清楚就能拿分”的部分。学习顺序上我建议先啃下以太网这条线再回头收拾PPP内容分配会更合理。2. 课后题套路拆解考点不外乎四类2.1 CRC计算题不会手算后面全崩CRC循环冗余检验是第三章的“题王”几乎所有版本的课后题都会出现“给出发送数据、生成多项式求余数”这种题。解题流程固定为四步。第一步看生成多项式的最高次幂r在被传送数据后面补r个0。比如P(x)x^4x1最高次幂是4那就补4个0。第二步用补零后的数据做模2除法除数是生成多项式对应的二进制串。第三步除到最后的余数位数小于或等于r位这个余数就是CRC校验码。第四步把r位余数接在原数据后面得到真正发送的帧。就这么四步没有别的花样。这里有三个最常见的丢分点。第一生成多项式的二进制串必须写对。比如x4x1对应10011最容易漏的是最后那个“1”也就是x的0次项如果多项式是x3x21对应1101同样别漏末位的1。第二模2除法是异或运算没有进位和借位和普通十进制除法的感觉完全不同。很多人想当然按“减一下再除”的老思路走结果全错。第三余数位数不足r位时要在前面补0补齐r位。比如余数算出来是111但r4就要写成0111再接回数据尾部。这个细节我在批改作业时见过太多次建议大家算完一定数一数位数。实操上我推荐一个自检方法把原数据接上余数后再用同一个生成多项式做一次模2除法能除尽说明答案是对的。这个方法不花多少时间但能帮你避免在考场上因为粗心丢一整道题的分数。2.2 CSMA/CD计算题核心就一个公式CSMA/CD部分最典型的计算题是求最短帧长或者反过来给帧长和网络参数反推允许的最远距离。核心公式其实就一条最短帧长 2 × 单程传播时延 × 数据率。这个公式怎么来的值得你花两分钟搞清楚。发送一个最短帧所花费的时间至少要等于信号在总线上往返一次的时间。原因很简单发送站必须在发送过程中检测冲突。如果帧太短发完了冲突信号才回来发送站已经停止发送了它会误以为这次发送成功冲突就被漏掉了。所以把“发送时延”卡在“二倍传播时延”上是保证冲突能被可靠检测出来的底线。理解了这条推导你就不会再把公式记成“传播时延乘以帧长”之类的错误版本。题目再怎么变花样无非两种情况给出电缆长度和传播速率求争用期或者给出数据率和最短帧长反推网络跨距。不管怎么变先回到这个核心公式把时间单位统一好再一步步代参数基本不会错。比如链路长度、传播速率、数据率三个参数题目一般会给两个求第三个本质上都是同一个关系式。有些题还会加一句“经过集线器”或“经过交换机”的影响这类变体后面我会专门说但核心思路不变先看物理跨距有没有变再谈帧长和时延。2.3 概念辨析题很多答案不是算出来的是“抠字眼”抠出来的第三章课后的概念题也不少比如“数据链路和链路的区别”“帧定界的作用”“为什么以太网规定最短帧长64字节”。这类题其实更考验对定义的精确掌握答题时最好采用“定义解释举例”三段式。举一个高频例子“链路”和“数据链路”的区别。链路就是物理线路的一段段通道而数据链路是链路加上实现通信协议的硬件和软件两者不是一回事。很多同学只写一句“链路就是物理线路”丢分就丢在没提“为了实现协议还需要软件和硬件配合”。再加一句“物理层解决链路数据链路层解决数据链路”这样答案就完整了。还有一道容易被忽略的概念题“为什么以太网规定最短帧长64字节”。这题不能只背数字要答出逻辑。以太网MAC帧格式是目的地址6字节、源地址6字节、类型2字节、数据46到1500字节、FCS 4字节加起来正好是64字节到1518字节。最短帧长64字节的规定本质上是为了配合CSMA/CD的冲突检测机制在10Mb/s以太网下64字节对应512比特正好是争用期512比特时间的长度。把“帧格式”和“冲突检测”两点都答上这题就拿全了。这类概念题的共同特点是光背一句定义不够必须把“为什么要有这个概念”也写进去。所以在答“帧定界的作用”这类问题时不要只写“确定帧的边界”要把“防止接收方把不同帧的内容读混”这个结果也说出来。平时练习时把每道概念题的答案都按这个标准过一遍考场上写出来的段落自然就完整。3. 三道最有代表性的课后题带你看完整演算3.1 第一题CRC余数手算全过程题目的经典版本是要发送的数据为1101011011生成多项式P(x)x4x1求CRC校验码以及实际发送的数据。按流程一步一步走。生成多项式P(x)x4x1对应二进制10011最高次幂r4所以在数据1101011011后面补4个0得到被除数11010110110000。接下来做模2除法除数固定是10011。中间会出现几次关键异或11010异或10011得01001下拉后续位后出现10011异或10011得00000最后一段出现11011异或10011得01000。除到末尾取余数得到1110。这个1110就是要加的CRC校验码。把它接到原数据后面实际发送的帧为11010110111110。这里有一个细节值得再说一遍余数1110正好是4位不需要补零。如果算出来是111那就要写成0111再接回去。很多答案丢分不是算错而是位数没对齐。做完之后强烈建议用接收方的视角验证一次把11010110111110继续用10011做模2除法如果能除尽余数为0说明发送的帧是合法的。这个方法特别适合考前刷题时快速自查比反复看自己的计算过程更可靠。如果把这题的数据换掉比如换成发送数据101110001生成多项式换成x31那流程完全不变只是补3个0、除数变成1001。课后题里各种变体本质上都是这四步千万别把题做成了背题。3.2 第二题最短帧长的推导与计算CSMA/CD一道很典型的题在10Mb/s以太网中总线最大长度为2.5km信号在介质上的传播速率为2.3×10^8 m/s求争用期和最短帧长。先求单程传播时延τ。距离要先换算成米2.5km 2500m。τ 2500 / (2.3×10^8) 1.087×10^-5 s约等于10.87微秒。争用期等于2τ算出来约21.74微秒。最短帧长等于数据率乘以争用期10Mb/s × 21.74μs 217.4 bit换算成字节除以8约27.2字节按题目要求取整就是27字节。很多同学算到这里会犹豫不是以太网最短帧长64字节吗这里必须说清楚64字节是标准以太网经过更完整工程考虑之后定的数值包含了中继器延迟、网卡处理延迟等因素而这道题只给了线路长度和传播速率算出来的是物理极限值不是标准规定值。考试时一定按题目给的参数算不要看到以太网就默认64字节。这题还经常反过来考已知数据率、最短帧长和传播速率反推总线最大长度。那公式就变成最大长度 传播速率 × 最短帧长 / (2 × 数据率)。本质上还是同一个公式把量纲对齐了往里代就行。做题时养成先把单位写完整的习惯这会省去大量因单位换算导致的低级错误。3.3 第三题PPP帧的字节填充过程PPP协议在异步线路上采用字节填充课后题常给一段信息字段让你写出填充后的样子。规则有三条。第一条信息字段中出现0x7E转换成两个字节0x7D、0x5E。第二条信息字段中出现0x7D转换成0x7D、0x5D。第三条信息字段中出现小于0x20的控制字符在该字符前加0x7D同时把该字符加0x20。比如信息字段里原本有一个字节0x03它小于0x20就先加上0x20变成0x23再在前面放一个0x7D最后变成0x7D、0x23。这样做的目的只有一个让接收方能区分“数据里的特殊字节”和“真正的帧边界”这就是透明传输在PPP里的实现方式。有版本还会问到既然字符填充能解决问题为什么HDLC要用零比特填充这题的关键是“同步”两个字。PPP常用于异步线路按字节传输所以用字节填充比较方便HDLC常用于同步线路按比特传输只要看到连续5个1就自动在后面插入一个0接收端再把插进去的0删掉实现起来更简单高效。答题时把“同步/异步”这个前提说清楚基本就是采分点所在。做这类填充题我建议先列一个对照表0x7E对应0x7D、0x5E0x7D对应0x7D、0x5D。然后从头到尾扫一遍原始数据见到一个替换一个千万不要漏掉嵌套情况——比如原始数据里已经有0x7D 0x5E这个0x7D照样要再转义一次。这种“转义之后再转义”的细节是这题最容易出错的地方。4. 失分重灾区这些坑我每年都要讲一遍4.1 单位换算送分题变成送命题只在一念之间数据链路层的计算题难度不大但单位换算能把一大堆人绊倒。最常见的几个坑排列如下。第一小b和大B的区别。数据率里Mb/s的b是比特字节用B表示1B8b。最短帧长算出来是比特数要除以8才得到字节数。很多同学在最后一步忘了除8整道题全错。第二长度单位。2.5km要写成2500m才能参与计算传播速率是米每秒两边单位不统一就得先换算。第三时间单位。1秒10^6微秒1微秒10^-6秒。算传播时延时经常会遇到小数写成科学计数法可以避免看错位数。我在课上给学生的速查表是这么列的大家可以直接抄走场景常用写法易错点1 Byte8 bit算字节一定要除以81 Mb/s10^6 b/s不是2^20也不是MB/s1 km1000 m3km写3000m再代入公式1 s10^6 μs微秒级计算用科学计数法1帧最大1518B以太网帧数据区最大1500B做题前先花10秒看一眼单位做完再花10秒回头验算一次量纲比刷十道题都管用。4.2 争用期、冲突窗口、最短帧长三个名词一套公式很多人把争用期、冲突窗口、最短帧长当成三个孤立概念背分数就是这样丢的。其实它们是一条线上的三个说法争用期就是冲突窗口都是指二倍的单程传播时延2τ最短帧长等于数据率乘上争用期。也就是说争用期是时间概念最短帧长是这时间里能发出的比特数两者描述的其实是同一件事。为什么要让它们相等因为发送站在一个争用期内不能停止发送否则冲突信号回来时它已经“下班”了检测不到冲突。这句话可以作为答题金句凡是问CSMA/CD机制相关原理的题都离不开它。考试里经常出现的错误说法是“最短帧长传播时延×数据率”少乘了一个2。为什么会漏因为没想清楚冲突信号是要跑一个来回的发送站的信号跑到最远端冲突信号再从最远端跑回来总路程是两倍链路长度。所以公式里那个2不是凭空加的是信号往返路程决定的。还有一个容易混淆的地方总线越长争用期越长最短帧长也越长。但反过来数据率越高为了同样的检测可靠性最短帧长也要变长。如果题目说“提高数据率后最短帧长可以缩短”那就是错的正确做法是通过缩短链路长度或引入其他机制来配合高数据率。这一点在论述题里经常被拿出来考。4.3 二进制指数退避算法r和k别搞混CSMA/CD检测到冲突之后怎么重传用的是二进制指数退避算法。课后题经常会让你算“第几次重传时等待时间可能是多少”考察的是对算法细节的记忆。算法的完整规则是这样第n次冲突后从离散整数集合{0, 1, 2, ..., 2^k-1}中等概率随机选取一个数r其中kmin(重传次数, 10)。重传时间就是r × 512比特时间在10Mb/s以太网中即51.2微秒。要注意重传次数达到16次仍不成功就放弃并向高层报告错误。最容易错的地方有两个。第一k不是重传次数本身。第一次冲突后k1随机数的范围是0到1也就是等概率选0或1第二次冲突后k2范围是0到3当重传次数超过10次后k就封顶在10了范围不再扩大。第二随机数r的单位是“512比特时间”这个时间相当于一个争用期的长度。有些题会问“第一次冲突后最晚等待多久”那就是1×51.2μs问“第二次冲突后最晚等待多久”是3×51.2μs。这个算法的工程意义值得理解冲突越频繁说明网络越忙退避的时间范围就越大这样能有效避免多个站再次同时重发。低次冲突时等待时间短保证快速恢复高次冲突时等待时间变长缓解拥塞。理解了设计意图就算题目换个问法你也能顺着逻辑推出来。5. 复习建议与自查清单怎么把这章稳稳拿下5.1 做课后题的正确顺序很多人拿到习题集就从第一题开始按顺序做做到后面越做越乱。我的建议是先按题型分类而不是按题号顺序。第一遍先把所有概念题做完比如“链路与数据链路的区别”、“PPP协议的主要特点”这类题目的是把第三章的知识框架搭起来。第二遍做CRC计算和字节填充题这两类题考的是流程熟练度认认真真手算三五道速度就能上来。第三遍再做CSMA/CD的帧长计算和退避算法题因为这里牵扯到对物理层参数的理解放在最后用计算把机制串起来。如果时间紧张优先保证CRC和最短帧长两类计算题彻底吃透。从考试性价比看计算题分值稳定、套路固定比概念题更容易拿分。但别完全放弃概念题因为概念题往往是计算题的前置条件比如连帧格式都记不清算最短帧长时就会漏掉帧头帧尾的开销。5.2 一道题的多重验证技巧做第三章的题最怕的不是不会而是做完不知道对不对。我推荐三种验证方法。CRC题算完余数后把原数据接上余数再除以生成多项式除尽则对。这是最保险的办法考场上花不了30秒。帧长计算题算完后把所有参数代回最短帧长的公式看等式两边是否一致如果反推链路长度和题目给的不一样肯定是哪一步单位没对齐。概念题则是把答案里的关键词都圈出来反着问自己“如果没有这个概念会怎样”比如没有帧定界接收方不知道帧从哪开始到哪结束通信就直接乱套。这三种方法本质上都指向同一个原则别把答案当终点把答案当成理解机制的工具。题目做错了不要紧关键是想清楚错在哪个环节——是公式记错、单位换算错还是概念理解偏差。我用这个方式带学生复习效果比机械刷题好很多。5.3 第三章自测清单复习完一章与其担心“还有哪里不会”不如拿一份清单逐项打勾。下面这份是我整理的自测清单把第三章最重要的考点都列进去了。序号自测问题是否掌握1能否说出封装成帧、透明传输、差错检测各自解决什么问题2能否区分链路和数据链路3能否30秒内写出CRC计算的四个步骤4是否理解模2除法与普通除法的区别5能否解释最短帧长为什么要等于数据率乘争用期6能否说出争用期、冲突窗口、最短帧长的关系7能否写出PPP字节填充的三条规则8能否解释零比特填充的适用场景9能否口述二进制指数退避算法的完整流程10能否画出以太网MAC帧的格式并标出各字段长度如果有一项答不上来就回到对应小节重新看一遍。这十项都搞定了第三章的基本盘就稳了。我每次带学生复习到这一章最后都会说一句话数据链路层是整个计网体系里最“工程化”的一章。你在前面学到的概念再抽象到这里都要落到帧长、时延、校验位、退避时间这些具体数字上。课后题的答案本身不值钱值钱的是你为自己算出的每一步寻找依据的过程。做这一章题目时不要只对答案要习惯性地追问一句“这个数是怎么来的这个规则想解决什么问题”。把这一章吃透后面学网络层、传输层时会轻松很多因为你会发现很多协议设计的思路都跟数据链路层里这套“发现问题、定义规则、用数字验证”的思维方式一脉相承。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑