资讯详情

数据链路层核心考点全解析:封装成帧、CRC校验与滑动窗口协议

📅 2026/10/19 15:08:10 | 华诺云谱 👁 阅读
数据链路层核心考点全解析:封装成帧、CRC校验与滑动窗口协议
1. 数据链路层到底在解决什么问题1.1 从“两台机器怎么说话”说起学计算机网络到了数据链路层这一章很多人会突然觉得画风变了。物理层讲的是比特流怎么在铜线、光纤里跑网络层讲的是路由和转发而数据链路层夹在中间干的事情特别具体让相邻的两个节点之间能够可靠地传数据帧。什么叫“相邻”不是地理上挨着而是在同一条链路上中间没有经过任何路由器。比如你的电脑连到宿舍的交换机这是一段链路交换机连到楼层的汇聚设备这又是一段链路。数据链路层管的就是这一段一段的“局部传输”它不关心从广州到北京怎么走那是网络层的事。谢希仁老师的教材在这一章安排得非常扎实核心就围绕三个问题展开封装成帧、差错检测、可靠传输。这三个问题看起来简单但每一个背后都有一堆细节和坑。我当年期末复习的时候最开始觉得“不就是加个头加个尾吗”结果做题才发现帧定界、透明传输、CRC校验、滑动窗口每一个都能出大题。这一章在期末考试里的分量很重通常能占到卷面20%到30%。选择题、填空题、计算题、简答题都可能出。尤其是CRC校验的计算和滑动窗口协议的分析几乎是每年必考。所以这篇内容我打算把这一章的重点从头到尾捋一遍不光讲知识点还讲怎么考、怎么答、怎么避坑。1.2 这一章的知识地图先把框架搭起来后面往里填东西就不会乱。数据链路层这一章谢希仁老师的教材主要讲了这么几块基本概念链路、数据链路、帧、封装成帧、透明传输差错检测奇偶校验、CRC循环冗余校验可靠传输停止等待协议、后退N帧协议、选择重传协议流量控制滑动窗口机制介质访问控制CSMA/CD、CSMA/CA、令牌传递以太网MAC地址、帧格式、交换机工作原理PPP协议点对点协议的基本流程这些内容不是孤立的它们之间有很强的逻辑关系。封装成帧是基础差错检测是保障可靠传输和流量控制是核心机制介质访问控制解决的是“大家抢着说话怎么办”以太网和PPP是具体的技术实现。复习的时候我建议按这个顺序走先搞懂帧的结构和透明传输再理解CRC怎么算然后重点攻克滑动窗口的三种协议最后把以太网和PPP的细节记住。这样从底层到应用逻辑是顺的。提示这一章的概念特别多容易混淆。建议自己画一张思维导图把每个概念的定义、作用、相互关系都标清楚。考前一周每天看一遍比死记硬背强得多。2. 封装成帧与透明传输的细节拆解2.1 帧是怎么“包”出来的数据链路层传给物理层的数据单位叫帧。帧就像快递包裹里面装的是网络层交下来的IP数据报外面要加包装——帧头和帧尾。帧头里放的是控制信息比如源MAC地址、目的MAC地址、类型字段帧尾里放的是校验码比如CRC。为什么要加帧头和帧尾因为物理层传的是连续的比特流接收方怎么知道从哪里开始是一帧、到哪里结束就是靠帧头和帧尾的特定比特模式来定界。这就像你在一长串数字里找电话号码得有个分隔符才知道边界在哪。谢希仁老师教材里重点讲了两种帧定界方法字符计数法在帧头用一个计数字段标明帧的长度。这个方法有个致命问题——如果计数字段本身出错了后面全乱套所以实际中很少用。字符填充法用特定的字符比如SOH表示帧开始EOT表示帧结束来定界。但问题是如果数据里恰好出现了SOH或EOT怎么办这就引出了透明传输的问题。2.2 透明传输数据里出现控制字符怎么办透明传输的意思是不管数据部分是什么内容哪怕它看起来像帧定界符接收方也不能误判。就像玻璃是透明的你看过去不影响视线数据链路层对数据也是“透明”的不关心你传的是什么。解决方法是字节填充或比特填充。字节填充的做法是在数据中出现的SOH或EOT前面插入一个转义字符ESC。接收方看到ESC就知道后面的字符是数据而不是定界符把它去掉就行。如果数据里本来就有ESC呢那就再插一个ESC变成ESC ESC。接收方看到连续两个ESC就还原成一个ESC。比特填充的做法更巧妙用在HDLC协议里。帧的起始和结束标志是01111110。为了防止数据里出现这个模式发送方在数据中每遇到连续5个1就自动插入一个0。接收方每收到连续5个1就把后面的0删掉。这样数据里永远不会出现6个连续的1也就不会和标志字段混淆。这个知识点考试怎么考常见的是给你一段数据让你写出填充后的比特序列或者反过来给你填充后的序列让你还原原始数据。看起来简单但容易数错。我的经验是用笔在纸上一个一个数别心算。尤其是连续5个1后面插0的规则数错一个就全错。注意字节填充和比特填充是两种不同的方法别搞混。字节填充针对的是字符型数据比特填充针对的是任意比特流。考试的时候看清楚题目给的是哪种场景。2.3 帧同步的常见考法帧同步相关的题目期末考通常有这么几种给出一段比特流判断能否正确分帧给出原始数据和填充规则写出填充后的序列给出填充后的序列还原原始数据分析某种填充方法的优缺点我印象最深的一道题是给了一串包含多个01111110的比特流问接收方会怎么分帧。这种题就是考你知不知道比特填充的作用——如果发送方正确填充了数据里就不会有6个连续的1接收方就能准确找到帧边界。如果没填充接收方就会把数据里的01111110误认为是帧结束标志导致分帧错误。答题的时候一定要把“为什么会误判”和“填充后为什么不会误判”这两个逻辑说清楚。光写结论拿不到满分。3. CRC校验手把手教你算3.1 CRC到底在算什么CRC全称是循环冗余校验是数据链路层最常用的差错检测方法。它的核心思想是把数据看成一个多项式除以一个约定的生成多项式得到的余数就是校验码。听起来很抽象但实际算起来是有固定套路的。我把它拆成三步确定生成多项式G(x)比如G(x) x^4 x 1对应的比特串是10011在数据后面补上k个0k是G(x)的最高次幂用补零后的数据对G(x)做模2除法得到的余数就是CRC校验码模2除法和普通除法不一样它不借位本质上是异或运算。这是最容易出错的地方很多人习惯性地按普通除法算结果全错。3.2 一道完整的CRC计算题假设数据是1101011011生成多项式是G(x) x^4 x 1求CRC校验码。第一步确定G(x)的比特串。x^4 x 1对应的是10011最高次幂是4所以补4个0。第二步数据补零1101011011 0000。第三步做模2除法1100001010 ______________ 10011 ) 11010110110000 10011 ----- 10011 10011 ----- 00001 00000 ----- 00010 00000 ----- 00101 00000 ----- 01010 00000 ----- 10100 10011 ----- 01110 00000 ----- 11100 10011 ----- 11110 10011 ----- 11010 10011 ----- 10010 10011 ----- 0001余数是0001但CRC校验码要取4位所以是0001。最终发送的帧是1101011011 0001。接收方收到后用同样的G(x)去除如果余数为0说明传输无误如果不为0说明出错了。3.3 CRC计算的避坑指南我见过太多人在CRC上翻车总结下来主要是这几个坑模2除法当普通除法算记住模2除法没有借位每一位的运算就是异或。1-100-11但不需要向高位借。补零的个数搞错补零的个数等于生成多项式的最高次幂不是项数。比如x^4 x 1最高次幂是4补4个0不是补3个。余数位数不够余数必须和生成多项式的最高次幂位数一致。如果算出来是1要写成0001。生成多项式记错常见的生成多项式有CRC-16、CRC-32等考试通常会直接给出但你要会把它转换成比特串。提示考试的时候CRC计算题一定要在草稿纸上一步一步写清楚别跳步。跳步容易出错而且检查的时候找不到问题在哪。我一般会算两遍第一遍正常算第二遍用不同的顺序验算确保万无一失。3.4 CRC的检错能力到底有多强CRC不是万能的它只能检测错误不能纠正错误。而且它有一定的漏检概率。具体来说如果生成多项式选得好CRC可以检测出所有单比特错误可以检测出所有双比特错误前提是生成多项式的项数足够可以检测出所有奇数个错误前提是生成多项式包含因子x1可以检测出所有长度小于等于k的突发错误k是生成多项式的最高次幂这些结论考试可能考简答题让你分析CRC的检错能力。答题的时候要把条件和结论对应起来别只写结论。4. 滑动窗口与可靠传输协议4.1 停止等待协议最简单的可靠传输停止等待协议是最基础的可靠传输机制。它的逻辑特别简单发送方发一帧然后停下来等确认收到确认后再发下一帧如果超时没收到确认就重发。这个协议的核心是超时重传。发送方每发一帧就启动一个计时器。如果在规定时间内收到ACK就取消计时器发下一帧如果计时器超时就重发当前帧。但这里有个问题如果ACK丢了怎么办发送方会重发接收方收到重复帧。所以接收方需要给帧编号通常是0和1交替。接收方收到重复帧就丢弃但会再发一次ACK。停止等待协议的效率很低。假设发送一帧的时间是T往返时间是RTT那么信道利用率是T/(TRTT)。如果RTT远大于T利用率就非常低。所以实际中很少用但它是理解滑动窗口的基础。考试里停止等待协议常考的是信道利用率计算和帧编号的作用。计算题一般会给出帧长、带宽、传播时延让你算利用率。公式要记牢利用率 发送时延 / (发送时延 往返时延)。4.2 后退N帧协议批量发送批量重传后退N帧协议GBN解决了停止等待效率低的问题。它的思路是发送方可以连续发多帧不需要每帧都等确认。接收方只按顺序接收如果某一帧出错后面所有帧都丢弃发送方从出错的那帧开始重传。GBN的关键参数是窗口大小。发送窗口的大小不能超过2^n - 1其中n是帧编号的位数。为什么因为如果窗口太大接收方无法区分新帧和重传帧。比如n3编号是0到7窗口最大是7。如果窗口是8发送方发了0到7接收方全收到了但ACK全丢了发送方重传0接收方会以为是新的一轮就出错了。GBN的接收窗口大小是1因为它只能按顺序接收。这一点和选择重传协议不同。考试里GBN常考的是窗口大小的计算和重传帧的确定。给你一个发送序列和确认序列让你判断哪些帧需要重传。这种题的关键是找到第一个出错的帧它和它之后的所有帧都要重传。4.3 选择重传协议只重传出错的帧选择重传协议SR比GBN更高效因为它只重传出错的帧而不是后面的所有帧。接收方可以接收乱序到达的帧先缓存起来等缺失的帧到了再一起交给上层。SR的窗口大小限制更严格发送窗口和接收窗口的大小都不能超过2^(n-1)。比如n3窗口最大是4。为什么因为要保证发送窗口和接收窗口不重叠否则接收方无法区分新帧和重传帧。SR的接收窗口大于1这是它和GBN最大的区别。接收方需要缓存乱序帧所以实现起来更复杂。考试里SR常考的是窗口大小的计算和接收方缓存的分析。给你一个场景让你判断接收方会缓存哪些帧、丢弃哪些帧。这种题要画图把发送窗口和接收窗口的位置标出来一目了然。4.4 三种协议的对比与选择协议发送窗口接收窗口重传方式效率实现复杂度停止等待11超时重传最低最简单后退N帧≤2^n-11批量重传中等中等选择重传≤2^(n-1)≤2^(n-1)单帧重传最高最复杂这张表考试前一定要背下来。选择题、填空题、简答题都可能用到。尤其是窗口大小的限制条件经常考。注意n是帧编号的位数不是窗口大小。比如编号用3位n3GBN窗口最大是7SR窗口最大是4。别搞混。4.5 滑动窗口的常见考法滑动窗口相关的题目期末考通常有这么几种给出n的值求GBN和SR的最大窗口大小给出发送序列和确认序列判断哪些帧需要重传分析接收方在不同协议下的行为计算信道利用率我印象最深的一道题是给了一个GBN的发送序列其中第3帧丢失问发送方会重传哪些帧。答案是第3帧及之后的所有帧。如果换成SR答案就只是第3帧。这种对比题很常见考的就是你对两种协议区别的理解。答题的时候一定要把“为什么”写清楚。比如GBN为什么重传后面的帧因为接收方只按顺序接收第3帧丢了后面的帧即使到了也会被丢弃所以发送方必须重传。这样答才能拿满分。5. 介质访问控制与以太网5.1 CSMA/CD先听后说冲突就退CSMA/CD是以太网早期使用的介质访问控制方法全称是载波监听多点接入/碰撞检测。它的逻辑可以用一句话概括先听后说边听边说冲突就退随机再发。具体来说载波监听发送前先听信道如果空闲就发如果忙就等碰撞检测发送过程中继续听如果发现信号冲突立即停止发送退避算法冲突后随机等待一段时间再重试。等待时间用二进制指数退避算法计算二进制指数退避算法的规则是第i次冲突后从0到2^i - 1中随机取一个数乘以基本退避时间就是等待时间。比如第1次冲突从0和1中选第2次冲突从0到3中选以此类推到第10次冲突后范围不再增大。这个算法考试常考计算题给你冲突次数让你算等待时间的范围。记住公式就行范围是[0, 2^i - 1] × 基本退避时间。CSMA/CD有个重要参数叫争用期也叫碰撞窗口。它是往返传播时延的2倍。如果发送方在争用期内没检测到冲突就可以确认这次发送不会冲突了。以太网规定争用期是51.2微秒对应512比特的发送时间。5.2 CSMA/CA无线环境下的变通CSMA/CA用在无线局域网里因为无线环境无法像有线那样检测碰撞。它的思路是尽量避免碰撞而不是检测碰撞。CSMA/CA的核心机制是载波监听发送前先听信道退避机制信道忙时随机退避一段时间再听确认机制接收方收到帧后必须发ACK发送方收到ACK才认为发送成功RTS/CTS可选机制用于解决隐藏站问题CSMA/CA和CSMA/CD最大的区别是CD是检测冲突CA是避免冲突。考试里经常考两者的对比要能说清楚为什么无线不能用CD。5.3 以太网的帧格式与MAC地址以太网V2的帧格式是考试重点必须记住每个字段的长度字段长度作用目的MAC地址6字节接收方的物理地址源MAC地址6字节发送方的物理地址类型2字节上层协议类型如0x0800表示IP数据46-1500字节网络层交下来的数据FCS4字节CRC校验码数据字段最小46字节最大1500字节。为什么最小是46因为要保证帧的总长度不小于64字节这样CSMA/CD才能正常工作。如果数据太短发送方可能在检测到冲突之前就发完了。MAC地址是48位通常写成12个十六进制数比如00-1A-2B-3C-4D-5E。前24位是厂商代码后24位是厂商自行分配。MAC地址是全局唯一的但可以通过软件修改。考试里以太网帧格式常考的是字段长度和最小帧长的计算。给你一个数据长度让你判断是否需要填充。这种题套公式就行如果数据小于46字节要填充到46字节。5.4 交换机的工作原理交换机是数据链路层的设备它根据MAC地址转发帧。交换机内部有一张MAC地址表记录每个MAC地址对应的端口。交换机的工作流程是收到帧后提取源MAC地址和端口号更新MAC地址表提取目的MAC地址查表如果表中找到对应端口就从该端口转发如果找不到就向除接收端口外的所有端口广播如果目的端口和接收端口相同就丢弃交换机有自学习能力MAC地址表是动态建立的。这一点和集线器不同集线器只是简单地广播。考试里交换机常考的是MAC地址表的更新和帧的转发决策。给你一个拓扑和一系列帧的发送让你画出MAC地址表的变化或者判断某个帧会从哪些端口转发出去。这种题要一步一步来别跳步。6. PPP协议与常见问题排查6.1 PPP协议的基本流程PPP是点对点协议用在直接连接的两个节点之间比如家庭宽带拨号。它的帧格式和以太网类似但有一些特殊字段标志字段0x7E表示帧的开始和结束地址字段0xFF固定值控制字段0x03固定值协议字段2字节标识上层协议信息字段可变长度默认最大1500字节FCS2或4字节CRC校验PPP的透明传输用字节填充如果信息字段中出现0x7E就转义成0x7D 0x5E如果出现0x7D就转义成0x7D 0x5D。PPP的工作流程分为三个阶段链路建立通过LCP协商链路参数认证可选通过PAP或CHAP验证身份网络层协议协商通过NCP协商网络层参数比如IP地址考试里PPP常考的是帧格式和透明传输。给你一段数据让你写出填充后的序列。规则和字节填充一样注意转义字符的替换。6.2 常见问题速查表问题可能原因排查方法CRC校验失败传输错误、生成多项式不匹配检查生成多项式重新计算帧定界错误数据中出现定界符未填充检查填充规则确认转义字符滑动窗口卡住窗口大小设置错误检查n的值确认窗口不超过限制交换机不转发MAC地址表未更新检查源MAC地址确认学习功能正常CSMA/CD效率低冲突太多检查网络负载考虑用交换机替代集线器这张表是我自己复习的时候整理的考试前看一遍能解决大部分概念题。6.3 独家避坑技巧最后分享几个我踩过的坑和总结的技巧CRC计算别跳步每一步都写清楚尤其是模2除法跳步必错。窗口大小记牢公式GBN是2^n-1SR是2^(n-1)别记反了。以太网帧最小64字节数据不够46字节要填充计算题常考。CSMA/CD的争用期是2τ不是τ是往返时间。PPP的转义字符是0x7D不是0x7E别搞混。提示考试的时候遇到不确定的题先跳过把会的做完再回来想。数据链路层这一章计算题多时间分配很重要。我一般先做选择题和填空题再做计算题最后做简答题。计算题至少留20分钟因为CRC和滑动窗口的题很耗时间。这一章的内容就捋到这里。数据链路层看起来杂但核心就是那几个机制封装成帧、差错检测、可靠传输、介质访问控制。把这四个搞懂了考试基本没问题。复习的时候多动手算别光看算一遍比看十遍都管用。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑