资讯动态

数据链路层核心考点精讲:从封装成帧到交换机与VLAN

发布时间:2026/10/22 2:59:32 来源:尧图企业网站定制
期末复习季很多人捧着计算机网络教材翻到第三章就开始头皮发麻数据链路层概念多、协议杂、计算题一个套一个封装成帧还没看清CRC又来了后面还跟着堆滑动窗口和交换机。我当年复习这一章的时候也踩过不少坑后来才发现整个第三章看起来零散其实有一条非常清晰的主线链路层就是解决“相邻两个节点之间怎么把数据可靠地送到对端”的问题。不管是以太网、PPP、交换机还是VLAN本质上都是围绕这条主线的不同解法。这篇复习笔记不打算按教材顺序机械罗列而是把数据链路层拆成六个关键板块链路层管什么、帧边界怎么找、差错怎么查、丢了怎么重传、以太网怎么避免冲突、交换机怎么转发。每个板块都配上必考公式、典型计算思路和我自己总结的易错点。不管你现在是刚开始复习还是已经刷过一轮题想查漏补缺这份笔记都能直接拿来用。1. 数据链路层的复习主线先搞清楚它管的是哪一段“路”1.1 链路、数据链路和“链路两端的协议栈”复习第三章第一个绕不开的概念就是“链路”和“数据链路”的区别。很多同学把这两个词当成同一个东西做题的时候却发现自己分不清“物理链路故障”和“数据链路故障”到底在考谁。物理链路就是实实在在的传输介质比如一根双绞线、一段光纤、一条无线信道它负责把比特从一端送到另一端。数据链路则是在物理链路之上加上一套通信协议后形成的逻辑通路。简单说物理链路是“路”数据链路是“路上跑的交规”。路由器之间用网线连起来这只是一条物理链路只有两端网卡、驱动和协议栈都正确工作配合封装、差错检测、流量控制这些规则这条链路才变成可用的数据链路。从协议栈位置看数据链路层夹在物理层和网络层中间。网络层把IP数据报往下交链路层在数据报前面加帧头、后面加帧尾封装成一个帧对端链路层收到帧后剥掉头尾把IP数据报原样上交给网络层。这个“加头剥头”的过程就是链路层的本职工作。1.2 三个基本问题是被考得最多的“骨架”教材在讲数据链路层时几乎都会先抛出三个基本问题封装成帧、透明传输、差错检测。我复习时发现只要把这三个问题串成一条逻辑链后面几乎所有知识点都能挂上去。封装成帧网络层交下来的数据报是“有头有尾”的字节流链路层必须在它前后加上定界信息接收端才知道从哪里开始读、到哪里结束这个边界就是帧。透明传输数据报里可能碰巧出现和帧定界符相同的比特组合如果处理不好接收端就会误判帧边界所以链路层要想办法让数据部分“透明”地通过。差错检测比特在物理链路上传输时可能翻转链路层必须加上冗余校验信息接收端用同一套规则验证数据有没有损坏。为什么强调这三个是“骨架”因为后面学的PPP字节填充、HDLC零比特填充、CRC校验、以太网帧格式全都挂在它们下面。复习的时候如果只背协议名不背框架做题很容易张冠李戴。1.3 点对点信道和广播信道决定了两大协议分支数据链路层还根据信道类型分成两条路线很多同学忽略了这个分类结果把PPP和CSMA/CD混在一起记越记越乱。点对点信道两端直接相连不存在第三者竞争所以协议核心是封装、差错检测、可靠传输。典型代表就是PPP协议和HDLC协议。广播信道多个主机共享同一段信道谁都能发所以核心问题变成了“怎么让大家有序地发、冲突了怎么办”。典型代表是以太网使用的CSMA/CD协议。做题的时候看到“一台路由器通过PPP拨号连接运营商”基本走点对点路线看到“多台主机连接在同一个集线器/总线上”就要切换到广播信道思维。我自己复习时习惯在纸上画两个分支图左边点对点右边广播把后面每个协议填进去知识结构立刻清晰很多。2. 帧边界怎么找封装成帧与透明传输才是选择题重灾区2.1 四种帧定界方式的对比帧定界是封装成帧的第一件事。没有定界接收端收到一长串比特流根本不知道从哪切分帧。教科书里给了四种经典方法考试特别喜欢出对比题和“某种方法属于哪个协议”的匹配题。定界方式基本思路典型协议优点缺点字符计数法在帧头用一个计数字段标明帧长度早期某些链路协议实现简单不需要复杂填充计数字段一旦出错后续所有帧边界全部错乱很难恢复字符填充法用特殊字符定界数据中出现定界字符时插入转义字符PPP、部分面向字符协议定界清晰错误影响范围局部化需要逐字节处理增加少量开销零比特填充法用连续6个1定界数据中连续5个1后插入0HDLC、SDLC适合面向比特传输硬件实现方便定界码型需要全链路统一约束违规编码法利用物理层编码中的非法组合作为定界部分局域网如基于曼彻斯特编码的实现不额外占用数据带宽依赖物理层编码方式适用范围有限复习提示考试不会让你把这四种方式背得一字不差但会给你一段数据流问发送端怎么填充、接收端怎么恢复。字符计数法的标定是帧头一个长度字段其他三种方法靠特殊码型定界这是最基本的分辨点。2.2 PPP的字节填充到底插了哪个字节PPP是点对点信道的典型协议它的帧定界符是0x7E。问题来了如果数据部分恰好出现0x7E接收端就会把它当成帧结束标志于是PPP规定了转义规则这就是“字符填充”。具体规则很简单发送端扫描数据字段把数据中的0x7E替换成连续两个字节0x7D 0x5E把数据中的0x7D替换成连续两个字节0x7D 0x5D有些实现还会把小于0x20的控制字符也做类似转义但期末考试最常考前面两条。接收端则是反操作看到0x7D就丢掉0x7D把下一个字节和0x20做异或还原成原字节。这个“异或还原”的细节很多同学会忽略我来补一句0x5E异或0x20正好是0x7E0x5D异或0x20正好是0x7D所以接收端只需要把0x7D后的字节异或0x20就能恢复原始数据。举个例子数据字段是A1 7E B2PPP封装后变成A1 7D 5E B2。题目如果问你“这个字段实际有几个字节”你要能算出填充前的长度和填充后的长度这是常见小题。2.3 透明传输不等于“数据看不见”“透明传输”这个词特别容易在选择题里被误解。有些同学看到透明以为意思是“可以把数据加密隐藏”其实不是。透明传输是说上层给链路层的任何比特组合链路层都能原封不动地送到对端就好像这些数据在链路上“透明”通过不会因为长得像控制字符就被截断。判断标准很简单如果数据里出现和定界符相同的码型链路层必须能区分“这是定界符”和“这是普通数据”。字符填充、零比特填充、违规编码都是为了解决这个“长得像定界符”的问题。不少判断题就爱写“透明传输指数据在传输过程中对用户完全可见”这明显是错的。3. 差错检测CRC的模2除法必须熟练到条件反射3.1 为什么链路层偏爱CRC而不是校验和提到差错检测奇偶校验、校验和、CRC三大流派期末考里CRC题目占比最高。原因也很实际链路层通常用硬件实现差错检测而CRC非常适合用移位寄存器电路完成速度又快检错能力又强所以在以太网、PPP、HDLC里到处都是它的身影。奇偶校验只能检测奇数位错偶数位错它完全看不出来Internet里常用的校验和是“按16位求和取反”适合软件算但检错能力不如CRCCRC则基于多项式除法思想错误检测覆盖面更广。因此复习时不要只背CRC的步骤还要理解它“为什么比奇偶校验强”CRC本质上把数据看成一个大二进制多项式并用一个约定的生成多项式去除余数不为0就说明数据坏了。3.2 CRC做题四步法一步都不能省期末CRC题目通常给你一段数据位和一个生成多项式让你求FCS校验码。我把步骤拆成四步确定余数位数rr等于生成多项式的最高次幂。比如生成多项式是x³x1最高次幂是3所以余数取3位。在数据位后面补r个0构造被除数。用生成多项式对应的二进制串对补零后的数据做模2除法。模2除法就是各位做异或不借位不进位。除到最后留下的r位余数就是FCS把它拼在原始数据后面发送。如果你不擅长手算推荐用一段极短的伪代码帮你理解移位寄存器的本质def crc_remainder(data_bits, poly_bits, r): bits data_bits [0] * r for i in range(len(data_bits)): if bits[i] 1: for j in range(len(poly_bits)): bits[ij] ^ poly_bits[j] return bits[len(data_bits):] # 数据 1010生成多项式 1011应得到余数 011 print(crc_remainder([1, 0, 1, 0], [1, 0, 1, 1], 3))输出结果是[0, 1, 1]也就是FCS011。完整发送帧就是1010011。接收端用同一个生成多项式1011去除1010011如果余数全为0说明帧没有出错如果有非零余数说明帧中有比特翻转直接丢弃或要求重传。3.3 CRC检错能力的边界从哪里看期末简答题经常问“CRC能检测哪些错误”标准回答可以从三个层次展开能检测所有奇数个比特错误因为生成多项式的低次项通常包含x⁰项偶数个错误可能留下能整除的余数而奇数个错误不可能被整除。能检测所有突发长度不大于r的突发错误。突发长度指连续出错比特的跨度只要跨度不超过r生成多项式必然导不出“零余数”。对突发长度等于r1的错误漏检概率大约是2的负r次方对更长突发错误漏检概率也类似。这就是为什么r越大CRC越可靠。考试时我建议不要只背结论最好能自己在草稿纸上写一个5位数据加3位校验的完整除法体会一次“余数为零意味着什么”否则后面的应用题容易卡壳。4. 可靠传输协议停等协议效率为什么差滑动窗口怎么救场4.1 信道利用率公式是可靠传输计算的起点数据链路层除了把帧送到对端还要保证“丢了自己能重传”这就要靠可靠传输机制。可靠传输的第一题高频计算是信道利用率。信道利用率的本质是“真正用来发送数据的时间占整个发送周期时间的比例”。一个发送周期包含三部分发送数据帧的时间、等待确认的往返时延、接收方发送确认帧的时间。在很多简化题目里确认帧极短可以忽略公式就变成信道利用率 发送时延 / (发送时延 往返时延)举个我复习时用过的例子数据率1Mb/s数据帧长1000bit所以发送时延1000bit÷1Mb/s1ms链路传播时延200μs那么往返时延2τ400μs。此时信道利用率1ms/(1ms0.4ms)≈71.4%看起来还可以。但如果换成卫星链路往返时延270ms数据率1Gb/s帧长1500B发送时延只有12μs利用率约等于12/(12270000)几乎趋近于零。这就是停等协议的最大痛点。很多同学算到这里才真正明白滑动窗口机制不是课本的“额外章节”而是为了解决这个“发送端大部分时间在干等”的问题而生的。4.2 停等ARQ最简单的可靠传输但效率太低了停等ARQ过程可以用一句话概括发一个帧等确认等不到就超时重传。因为每次只发一个帧接收方只要用1个比特的序号0和1交替就能区分新旧帧实现也最简单。但停等ARQ的缺陷很明显它把整个信道的利用率压得很低尤其在长距离高带宽链路上。考试计算里如果题目说“数据帧长1500字节链路速率1Gb/s单向传播时延25ms忽略确认帧长度”你先算发送时延1500×8÷10⁹12μs再看往返时延50ms利用率大约是12μs/50012μs≈0.024%。这说明停等协议在这种场景下基本“废”了所以才有滑动窗口协议。4.3 GBN和SR窗口到底能不能超过序号空间的一半滑动窗口协议让发送方可以连续发送多个帧而不必等每个确认。最常见的两种是后退N帧GBN和选择重传SR期末特别喜欢考两者的窗口约束。对比维度后退N帧GBN选择重传SR发送窗口最大值序号数的2的n次方减1序号数的2的(n-1)次方接收窗口大小1只能顺序接收可以与发送窗口相同确认方式累计确认单独确认也可累计重传方式出错帧以及之后所有帧全部重传只重传出错的帧接收缓存不需要缓存乱序帧需要缓存乱序帧开销与实现复杂度简单但信道重传浪费大复杂但重传量小为什么要限制窗口大小假设序号只有2位即0到3如果发送窗口取4发送0、1、2、3四个帧接收方全部收到并确认但确认丢光发送方超时重发0号帧此时接收方可能误以为这是新一轮的0号帧还是上一轮的0号帧如果窗口等于序号空间大小新旧帧序号完全无法区分。所以GBN要求发送窗口≤2的n次方减1SR要求发送窗口≤2的(n-1)次方本质上都是为了留出“歧义空间”。4.4 考场上的GBN/SR计算套路这类题通常给你序号位数n、发送窗口大小、一个帧序号序列问发送方在收到某个ACK后还能发哪些帧。我总结的做题顺序是先判断协议是GBN还是SR确定接收窗口大小。画出当前发送窗口下界和上界发送窗口内的帧都可发送。收到确认后窗口整体滑动把确认帧以及它之前所有帧移出窗口。如果出现超时GBN从超时帧开始重传SR只重传超时帧但要区分“已经收到缓存但没确认的帧”。再把4.1的利用率公式结合一下很多题就会变成“计算发送窗口大小至少为几才能让利用率达到100%”这种题目的核心是让发送窗口足够大好让发送端在整个往返时延内不停发帧而不是发完就干等。5. 从ALOHA到CSMA/CD以太网凭什么能“边发边听”5.1 广播信道是“一喊全听见”所以竞争不可避免和点对点信道不同以太网早期是广播信道一台主机发帧链路上所有主机都能收到。既然大家共用一条线路有两台主机同时发就会产生冲突信号叠加后谁也读不懂。最初的ALOHA协议非常简单想发就发发完检测是否冲突如果冲突就等随机时间重发。后来出现了时隙ALOHA把时间切成固定时隙只能在时隙开始时刻发送冲突概率下降信道利用率上限从纯ALOHA的18.4%提升到时隙ALOHA的36.8%。这两个数字在选择题里挺常考我一般是顺带记一句“时隙ALOHA把发送时刻离散化所以减少了碰撞窗口”。5.2 CSMA/CD的四个动作先听后发、边发边听、冲突停发、随机重发CSMA/CD是“载波监听多址接入/冲突检测”的缩写是以太网在共享信道阶段的核心协议。它的完整流程是发送前先监听信道信道空闲才发发送过程中持续检测冲突信号一旦检测到冲突立即停止发送并发送一段强化冲突信号等待一个随机退避时间后重新尝试发送。关键要理解“为什么需要边发边听”。在总线上主机A发帧后信号需要传播时间才能到达主机B在这段传播时间内主机B可能也监听到信道空闲而开始发送于是冲突发生。最坏情况下某主机从开始发送到确认“没有冲突”所需等待的时间等于信号从一个端到另一个端的传播时延的两倍也就是2τ。这个2τ叫作争用期。5.3 最短帧长公式和那道必考计算题由于发送方在争用期内可能发现冲突它必须保证自己的帧还没有发完否则它已经停止发送根本无法发现冲突。所以要求帧的发送时间≥2τ换算成比特就是最短帧长 2τ × 数据率以太网的标准最短帧长是64字节对应争用期51.2μs数据率10Mb/s时51.2μs×10Mb/s512bit64字节。这个数字是考试题目的常见“标准答案”。来看一道经典变体某总线以太网长1km信号传播速度为2×10⁸m/s数据率10Mb/s不考虑中继器延迟求最短帧长。先算τ1000m/(2×10⁸m/s)5μs2τ10μs那么最短帧长10μs×10Mb/s100bit。这个答案明显小于标准64字节说明这条链路如果按设计参数运行需要把最短帧长定为100bit或者限制网络直径否则无法可靠检测冲突。记住题目一旦给出链路长度目标就是让你算2τ再用公式算最短帧长。5.4 截断二进制指数退避退避时间怎么算冲突发生后不能立刻重发否则又会冲突以太网采用截断二进制指数退避算法决定重发时机。规则是基本退避时间等于争用期2τ第k次冲突后从整数集合{0,1,...,2的k次方减1}中随机选一个数r实际退避时间 r × 2τk最大取到10超过10次后集合不再增长仍按2的10次方减1选重传达到16次还冲突就放弃该帧向上层报错。考试里常给“第3次冲突后可能的退避时间范围是多少”这时k3r∈{0,1,...,7}退避时间就是0到7倍的2τ。注意k从冲突计数开始第1次冲突不算在重传次数里别在这种地方丢分。5.5 以太网帧格式里那几栏必须记住以太网帧格式是送分题但细节多。帧结构依次是前导码、目的MAC地址、源MAC地址、类型/长度字段、数据字段、FCS帧检验序列。前导码用于收发双方时钟同步不算是帧的一部分MAC地址6字节目的地址第一个比特是0表示单播是全1表示广播是组播组号则用于组播类型字段例如0x0800表示上层是IPv4如果取值小于等于1500则解释为长度数据字段最小46字节最大1500字节FCS是4字节的CRC校验码。为什么数据字段最小46字节因为整个帧去掉目的MAC6字节、源MAC6字节、类型2字节和FCS4字节正好剩下18字节固定开销64字节最小帧减去18字节就是46字节。这个“64-1846”的换算在计算题里很常见比如题目说“IP数据报只有100字节以太网帧实际填充了多少”其实通常不需要填充只要数据IP包本身超过46字节即可。6. 交换机的自学习与VLAN理解“谁收到、谁转发”这类题6.1 集线器、网桥、交换机到底差在哪很多同学把集线器和交换机都当成“连多台电脑的小盒子”但在链路层复习中意义完全不同。集线器工作在物理层它只是把接收到的电信号从所有其他端口广播出去所以所有端口都处于同一个冲突域同一时刻只能有一台主机发送。交换机工作在链路层它会根据帧的目的MAC地址决定从哪个端口转发每个端口独立形成冲突域多对端口可以同时通信因此交换机隔离了冲突域。还有一个容易混淆的点是广播域默认情况下集线器和普通交换机都不隔离广播域只有路由器或支持VLAN的交换机配合三层功能才能隔离广播域。判断冲突域的简单口诀是“集线器全是一个冲突域交换机每个端口一个冲突域”判断广播域的简单口诀是“没有路由器介入整个二层网络一个广播域”。6.2 交换机自学习转发表源地址学目的地址查交换机的核心是MAC地址转发表它不是手工配的而是靠“自学习”动态建立的。完整流程如下交换机从某个端口收到一帧先把“源MAC地址入端口”记录到转发表中并更新时间戳根据帧的目的MAC地址查表如果表中有匹配项且对应端口不是帧的入端口就把帧从对应端口转发出去如果表中匹配项对应端口就是帧的入端口说明目的主机和源主机在同一侧交换机不转发直接丢弃如果表中没有目的MAC地址就把帧从除入端口外的所有端口洪泛发送转发表中的条目会老化一段时间没有收到该源MAC的帧就会删除。考试特别喜欢考第5步洪泛。比如四个主机A、B、C、D分别连在交换机端口1、2、3、4上A向C发送一帧。如果交换机转发表是空的它查不到目的MAC就会向端口2、3、4洪泛最终B、C、D三个端口都会收到这一帧。之后C回复A交换机从端口3收到帧记录“C在端口3”再查A的目的地址发现A对应端口1就从端口1转发。这个例子做完一遍交换机的学习转发流程基本就掌握了。6.3 端口与VLAN同一个交换机可以分成多个“虚拟局域网”默认情况下交换机所有端口属于同一个广播域广播帧会跑到所有端口上既浪费带宽又带来安全问题。VLAN虚拟局域网通过在帧里增加一个802.1Q标签把同一台交换机上的端口划分成多个逻辑广播域。802.1Q标签有4字节其中VLAN ID占12位所以理论上最多支持4096个VLAN。跨VLAN的二层广播帧不会互相传广播域被VLAN边界隔开了。两个不同VLAN的主机即使插在同一台交换机上也无法直接二层通信必须要经过三层设备路由器或三层交换机进行IP路由。期末画图判断题里经常给一台交换机划了VLAN 10和VLAN 20问你“某主机发广播帧哪些端口能收到”。答案就是同一VLAN内的其他端口能收到不同VLAN的端口收不到。别把交换机的物理端口和VLAN逻辑端口混成同一件事。6.4 交换机相关的常见选择题陷阱刷题量上去之后你会发现交换机这儿的坑很集中我挑三个最常考的提醒一下转发表记录的是MAC地址和端口不是IP地址。看到“交换机根据IP地址转发”立刻打叉交换机隔离冲突域但不隔离广播域除非配合VLAN或路由器。看到“交换机隔离广播域”要分辨是不是默认情形交换机洪泛是“查不到目的MAC地址”时的兜底策略不是“链路拥塞”时的策略。这俩字眼特别容易被替换。把这些坑记住之后再做“A发帧给不存在的MAC地址交换机会怎么处理”这类题你会非常笃定洪泛到除源端口外的所有端口。7. 考前一周的个人复习建议最后说点实在的。第三章不是靠背概念能过的内部的因果链太强了链路层的三基本问题引出封装和CRCCRC保证帧到了对端还能验一下传输效率问题引出停等和滑动窗口广播信道竞争引出CSMA/CD以太网的实现细节又引出交换机转发和VLAN。这每一环都不是孤立知识点而是被“可靠性”和“效率”这两个需求串起来的。我自己考前习惯把公式集中抄在一张A4纸上主要包括信道利用率公式、最短帧长公式、争用期2τ的计算、CRC模2除法的步骤、GBN与SR的窗口大小约束。然后找三遍简单的CRC题手算确保不卡壳。不要一上来就背协议全称先算一道题再根据结果回看协议流程会记得牢固得多。期末考不是要你背出整本教材而是要在有限时间内快速判断“这题考的是哪条链路要套哪个公式”。按照上面这条主线把六块内容过一遍上考场的时候你会明显感觉自己心里有底了。

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

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

免费获取报价 →
↑