首页/新闻资讯/正文详情

数据链路层核心知识:帧、CRC、CSMA/CD与交换机转发

发布时间:2026/9/24 18:49:02 来源:云帆数科 栏目:资讯中心
数据链路层核心知识:帧、CRC、CSMA/CD与交换机转发
1. 这一讲到底在讲什么先搞懂“网络到底怎么把数据送出去”如果你正在啃计算机网络不管是谢希仁的教材、王道的考研课还是湖科大教书匠的视频到了第5讲基本都会进入一个让很多人开始掉队的章节——数据链路层。前面几讲你学的是概述、物理层知道网络分层次知道比特流在介质上怎么变成电信号、光信号但数据从一台机器到另一台机器到底是怎么“一站一站”送的这就是第5讲要回答的问题。我当年学这一章的时候最大的感受是终于开始有“网络”的感觉了。物理层只是解决“两个设备之间能不能传比特”而数据链路层解决的是“传出去的比特怎么变成有意义的数据块、怎么保证不出错、出错了怎么办、多个设备共享一条链路的时候谁先说”。这一讲的知识点无论是期末复习、考研408还是后面面试问“TCP/IP协议栈”都绕不开。那这篇东西适合谁看三类人第一类是正在上计算机网络课、马上要期末考的学生你需要把这一讲的知识点系统捋一遍第二类是准备考研408的数据链路层是选择题和综合题的常客尤其是CRC、CSMA/CD、以太网帧格式这些几乎年年有第三类是想搞明白“抓包软件里那些帧到底是什么意思”的自学者这一讲就是你的地基。我尽量把原理、计算、抓包观察、考试套路都串在一起讲你按照这个思路去学比单刷一遍教材管用得多。先说一个重要的认知数据链路层虽然叫“链路层”但它不是一个只有“线”的概念。它讨论的是同一段物理链路上相邻两个节点之间怎么通信。注意“相邻”两个字——在IP层面你关心的是端到端从你的电脑到服务器的IP地址但在数据链路层数据是一段一段跳过去的每一跳的发送方和接收方必须是物理上能直接通信的两个设备。这个视角转换不过来后面VLAN、ARP、交换机的工作原理全都会糊。2. 这一讲的核心主线从“比特”到“帧”的三大关键问题数据链路层内容多但你别慌它的所有知识点其实是围绕三个核心问题展开的怎么把数据封装成帧、怎么让接收方发现传输错误、怎么协调多个设备共享同一条链路。你把这三个问题装进脑子里再去学具体协议和计算会有一种“原来如此”的通透感。2.1 为什么必须有“帧”物理层的比特流本身没有边界物理层干的事很单纯它就把0和1的比特流从一个点挪到另一个点至于这串比特里哪些是地址、哪些是数据、哪些是校验码物理层完全不管。就好比你让人帮你传话你说了一长串字对方收到了但这句话从哪里断句、哪部分是主语哪部分是谓语物理层是不关心的。数据链路层要做的第一件事就是给这串比特“划线分段”这就是成帧。它把网络层交给它的IP数据报前面加个帧头后面加个帧尾中间再加个校验字段封装成一个完整的“帧”。帧头里最核心的信息是目的MAC地址和源MAC地址帧尾通常是FCS帧校验序列用来做差错检测。没有这个封装过程接收方拿到比特流根本不知道从哪开始读第一个字节更不知道这帧数据是发给谁的。这里有个细节很多初学者会忽略帧的长度是有上下限的。以太网规定帧的最小长度是64字节最大是1518字节不算前导码。为什么有最小长度这就跟后面要讲的CSMA/CD冲突检测有关如果帧太短发送方可能还没检测到冲突就已经把帧发完了冲突检测机制就会失效。这个64字节的数字不是随便拍的它是根据“最远两个节点的往返传播时延”算出来的要求发送一帧的时间大于最大往返时延的两倍。你可以把它理解成你喊一嗓子要保证你在喊完之前能听到回声如果喊得太短回声还没回来你就停了那你怎么知道有没有人跟你同时喊这个细节408和期末考试都喜欢拿出来考别看它小丢分最可惜。2.2 差错检测的核心CRC循环冗余校验到底是怎么算的这一讲里动手计算最重的就是CRC。很多同学一看到多项式除法就头大其实你只要掌握方法它比你想的简单。CRC的思路是发送方在数据后面附加n位校验码接收方用同样的生成多项式去除收到的数据余数为0就认为没错余数不为0就说明有比特翻转。具体计算分三步。假设你要发送的数据是原始报文比如一个二进制串M约定的生成多项式是G(x)先用M后面补上“生成多项式最高次数个0”然后对这个新串做模2除法注意是不借位不进位的二进制除法说白了就是按位异或最后得到的余数就是FCS把它拼到原始报文的末尾发送出去。接收方收到完整帧后用同样的生成多项式去除整个帧的数据部分加FCS如果余数为0就认为传输无差错。我举个例子帮你走一遍。假设原始数据是101001生成多项式是G(x)x^3x^21对应二进制是1101。G(x)的最高次数是3所以先在原始数据后面加3个0得到101001000。然后开始做模2除法101001000除以1101按位异或一步步往下算最后余数我告诉你是001。那发送方发出的完整帧就是原始数据101001加FCS 001也就是101001001。这里有一个常见误区余数位数不够怎么办比如余数算出来是1但生成多项式是1101FCS应该是3位那就要在前面补0写成001再拼上去。很多同学在这个地方丢分纯粹是粗心。另外CRC到底能检测出哪些错误它检测得出所有奇数个比特错误也检测得出所有突发长度小于等于r位的突发错误r是冗余码位数但并不是100%能检测出所有错误——如果错误刚好让余数变成0那CRC就“骗”过去了。不过这种事情概率极低工程上可以接受。2.3 多台设备抢一条链路CSMA/CD的“先听再说边听边说”如果你接触过传统以太网一定听过CSMA/CD这个名字载波监听多路访问/冲突检测。这个机制在现在用交换机的网络里其实已经没有实质作用了交换机每个端口是一个独立冲突域但考试要考因为它是理解“共享式以太网为什么效率不高”的关键。它的工作过程你把它想成一个会议室里大家发言的规矩说话之前先听一听有没有人在说话没人说你再开口这叫“先听后说”你开口的同时还得继续听万一发现有人跟你同时开口立刻停止发言这叫“边说边听”停止之后不能马上重新说得等一个随机的时间再重试这叫“随机退避”。为什么要随机退避如果两方冲突后都等同样的时间再重发那它们大概率又会同时开口又冲突又同时重发永远死循环。随机退避就是让它们错开这个时间不是随便取的用的是截断二进制指数退避算法基本思路是重传次数越多可选的随机时间范围越大这样冲突越频繁等待的随机性越大越不容易再次撞车。还有一个考试高频计算题最短帧长和争用期。争用期就是“最远两个节点都能检测到冲突的最长时间”等于端到端往返传播时延2τ。以太网规定争用期是51.2微秒这个数字对应的是10Mbps以太网在这个时间内能传输的比特数就是512比特也就是64字节。所以最短帧长争用期×数据传输速率51.2μs×10Mbps512bit64字节。很多计算题就是给你网线长度、传播速率、数据速率让你求最短帧长或者反过来给你最短帧长求最大网线长度。会了这一道题这一类题就都会了。3. 实操拆解用Wireshark亲手看一帧以太网数据长什么样原理讲再多不如自己抓一次包。我强烈建议你学习第5讲的时候打开Wireshark随便访问一个网站然后停下来看捕获的报文。你会看到每一个网络层数据包外面都包着一层“以太网帧头”这就是数据链路层干的事。3.1 抓包看帧结构目的MAC、源MAC、类型、数据、FCS在Wireshark里你展开一个以太网帧会看到这样几个字段Destination目的MAC地址、Source源MAC地址、Type上层协议类型常见的有0x0800表示IPv40x0806表示ARP0x86DD表示IPv6。再往下才是IP层、TCP层的数据。注意Wireshark默认不显示帧尾的FCS因为网卡在接收时已经把校验过的FCS字段剥离掉了你在软件里看不到。有同学问“CRC校验如何通过报文观察”其实在实际抓包里你观察的点就是看Wireshark有没有报“bad checksum”——如果网卡或者抓包工具直接告诉你这个帧的校验和不对那就说明物理传输过程中数据坏了。Wireshark里如果你看到某个以太网帧标红并且注释里有“incorrect”或者“bad”之类的字样基本就是FCS校验失败。这件事特别重要数据链路层的CRC校验跟TCP/UDP的校验和不是一回事。CRC是覆盖整个帧的数据部分由硬件网卡完成校验结果不对这帧直接就被丢了根本不会往上传给IP层。而TCP的校验和是覆盖TCP报文段的首部和数据部分在端到端之间验证。前者解决的是“这一段链路上传错了没”后者解决的是“整个端到端传输过程中有没有被任何中间环节改坏”。两者分层负责你理解了这个后面学传输层就不会概念打架。3.2 用ping命令观察“一跳一跳”的帧转发再做一个实验在命令行执行ping某个IP地址同时用Wireshark抓包。你会看到本机发出的第一个包大概率是一个ARP请求帧——因为你的电脑不知道该IP地址对应的MAC地址是什么所以要先在本地网络里广播问一下。ARP请求帧里的目的MAC地址是全F也就是FF:FF:FF:FF:FF:FF这是一个广播地址意味着“这条链路上的所有设备都要听”。正常通信时帧的目的MAC地址就是对方设备的MAC地址不是IP地址。这里有个经典误区数据在局域网里传输靠的是MAC地址不是IP地址。IP地址是“逻辑地址”负责跨网络的寻址MAC地址是“物理地址”负责同一段链路上的寻址。你可以把IP地址想象成一个人的身份证号走到全国都能识别他把MAC地址想象成他当前住的房间号只有在这个楼里才有意义。数据包从一个网络到另一个网络IP地址始终保持不变除非NAT但每一跳的MAC地址都在变——下一跳是谁帧头里的目的MAC就是谁。这是第5讲里最容易被混淆的点却也是理解网络层路由的基础。3.3 交换机怎么转发帧自学习与MAC地址表第5讲还会讲到交换机它是数据链路层的设备。交换机转发帧的依据不是IP地址而是MAC地址表。这张表是怎么来的靠“自学习”。当一个帧从某个端口进来交换机会记录“源MAC地址是从哪个端口学到的”然后把目的MAC地址跟表里已有的条目比对如果表里有对应端口就直接往那个端口转发这叫单播转发如果表里没有交换机不知道目的设备在哪就只能往除了入端口之外的所有端口广播这个帧这叫泛洪如果目的MAC是广播地址那就更简单所有端口都发一份。学这一块的时候我建议你手动画一个简单的拓扑有三台交换机、几台电脑然后模拟一下A发给B帧经过交换机1时发生了什么交换机1的MAC地址表变成什么样B回A的时候表又怎么变。画完你就明白了交换机的转发是“被动学习、按表转发”的它没有全网的视野只认识自己端口上见过的设备。这个东西期末喜欢考选择题考研也偶尔考理解比死记硬背重要。4. 延伸知识点VLAN和无线局域网第5讲的天花板有些教材会把VLAN虚拟局域网放在数据链路层后面有些会在第5讲直接带出来。不管放在哪VLAN都是数据链路层的进阶重点也是面试官喜欢问的点。4.1 为什么需要VLAN广播域太大是灾难前面说了交换机收到目的MAC地址未知的帧会泛洪广播帧也会发给所有端口。如果整个公司就一台大交换机几百台电脑都连在上面那任何一个设备发一个ARP广播全公司所有电脑都能收到。这既浪费带宽又有安全隐患——你不想让隔壁部门的人看到你的电脑在跟谁通信。VLAN就是用来解决这个问题的你在交换机上把端口分组不同组属于不同的虚拟局域网广播帧只在同一个VLAN内传播。比如把财务部的端口划到VLAN 10把技术部的端口划到VLAN 20两边就算插在同一台交换机上默认也互相“看不见”。4.2 802.1Q帧头在以太网帧里插进4个字节VLAN是怎么在帧里标识的标准做法是IEEE 802.1Q它在传统的以太网帧头里插入了4个字节的VLAN Tag其中最关键的是12位的VLAN ID取值范围是1到4094。4个字节不多但“插进去”这个操作意味着帧的最大长度也要跟着变所以802.1Q帧最大可以到1522字节。这里有个考点支持VLAN的交换机之间通信时帧里带Tag普通电脑网卡收发的帧一般不带Tag。所以如果你用Wireshark抓VLAN报文只在交换机之间Trunk链路才能看到带802.1Q Tag的帧从电脑网卡上抓通常看不到。我建议你把802.1Q帧结构画一遍目的MAC6字节、源MAC6字节、VLAN Tag4字节其中TPID固定是0x8100后面2字节里低12位是VLAN ID、类型2字节、数据、FCS。跟普通以太网帧一对比差别就在那4个字节。这个知识点相当爱考因为很多学生只记得“以太网帧结构”不知道VLAN Tag插在哪、插了之后对帧长有什么影响。4.3 无线局域网CSMA/CA和CSMA/CD的区别如果第5讲进度快可能也会提到无线局域网WLAN。无线跟有线最大的区别是无线信道上发送方很难在发送的同时监听冲突因为自己发出去的信号会盖过收到的信号所以无线局域网用的是CSMA/CA碰撞避免而不是碰撞检测。CSMA/CA的核心思想是“先听后发、发前还要随机等”尽量降低冲突概率而不是冲突之后再去检测。这里还有一个经常考的概念隐蔽站问题。A和C都能跟B通信但A和C彼此听不到对方那么A在发数据的时候C以为信道是空闲的也发结果数据在B那里碰撞了。这个场景是CSMA/CD解决不了的因为CD依赖“听得到冲突”而A和C根本听不到彼此。CA机制用预约信道和ACK确认来提高可靠性也是因为这个环境比有线复杂得多。你只要记住一句话有线以太网用CD检测冲突无线局域网用CA避免冲突原因是无线环境下无法边发边听。5. 期末复习和考研408第5讲最容易踩的五个坑我见过太多学生这一讲听课的时候觉得都懂一做题就懵。归根结底是几个概念没掰扯清楚。我把常见的坑集中列出来你对号入座看看自己有没有中招。第一个坑把MAC地址和IP地址当成一回事。MAC地址是由网卡出厂时写死的全球唯一但它是平面地址没有层次不能用于跨网络寻址。IP地址是分层级的网络号和主机号路由器靠它找到目标网络。打个比方你寄快递收件人姓名是MAC地址地址是IP地址——在楼里找房间要靠门牌号MAC在全世界找这栋楼要靠地址IP。所以你问“要不要改MAC地址”大部分场景下不需要改了它IP网络寻址逻辑一点不受影响。第二个坑认为CRC能“纠错”。CRC是检错码不是纠错码。它能发现错误但不知道错在哪一位海明码才是纠错码发现错误后通常的处理办法是丢弃重传。很多人写题的时候把CRC当成纠错码来做方向就错了。第三个坑把“停止-等待协议”和“连续ARQ协议”当成数据链路层独有。其实这些可靠传输机制在传输层TCP里也用但数据链路层的滑动窗口协议比如GBN选择重传解决的是链路上相邻两节点的可靠传输TCP解决的是端到端的可靠传输。考试特别喜欢在选项里把“可靠传输”的层次搞混。第四个坑算最短帧长的时候漏了往返时延。最短帧长2τ×数据传输速率这里用的是往返时延不是单向时延。很多题给“两点间距”和“信号传播速度”让你求单向时延τ然后你忘了乘以2直接把τ代入公式算出来正好差一半。这个坑我当年也踩过。第五个坑以为交换机隔离冲突域就一定隔离广播域。普通交换机每个端口是一个冲突域但所有端口默认在同一个广播域。要隔离广播域得靠划分VLAN或使用路由器。这个点期末选择题几乎必考你只要记住“冲突域和广播域是两个维度”就不会绕晕。6. 这一讲怎么学最有效给自学者和应试者的路线图如果你是自己看书学我建议别按教材章节顺序硬啃而是按“帧是怎么回事 → 怎么保证不出错 → 共享信道怎么协调 → 交换机怎么转发 → 进阶VLAN”这个链条来。这条链路跟实际网络数据流动的顺序完全一致学起来有画面感。第一步先把“帧”这个东西刻在脑子里。你打开Wireshark抓一次包对着屏幕把帧头里的每个字段都念出来。第二步把CRC算熟。别只背公式找三道例题自己手算一遍算完再看答案。计算机网络这门课计算的熟练度只能靠手。第三步把CSMA/CD的时序图画一遍A开始发、冲突发生、A检测到冲突、A发阻塞信号、A随机退避、A重发整个过程画完你就把争用期、最短帧长、退避算法全串起来了。第四步自己去Packet Tracer或者实际交换机的命令行里敲几条命令比如创建VLAN、把端口划入VLAN、看MAC地址表这些操作以后面试或者实际工作中都可能有。这道题我再多说一句如果你在考研数据链路层虽然是第5讲但它的重要性一点不比网络层低。408的真题里以太网帧格式、CRC计算、CSMA/CD计算、交换机转发、VLAN都是反复出现的题型。我建议你把近十年的相关真题全部刷一遍不是为了押题而是为了把“计算套路”练成肌肉记忆——考试时留给你思考的时间不多多数题就是靠熟练度秒杀。最后再分享一个我的个人习惯学计算机网络每学完一讲我都会用自己的话把这个协议“讲给一个不懂网络的人听”。如果我能用大白话把CRC为什么能检错、CSMA/CD为什么需要最小帧长讲明白说明我真的懂了。如果你讲不出来回去再看一遍书你会发现很多之前忽略的细节。第5讲是计算机网络这门课里“从抽象到具体”的关键一跃跨过去后面的网络层、传输层你就会学得越来越顺。

相关推荐

自媒体人的音频焦虑:配音素材App到底怎么选才不踩雷?
自媒体人的音频焦虑:配音素材App到底怎么选才不踩雷?

做自媒体第三年了,说实话,内容创作中最让我焦虑的环节,一直是音频。 画面可以慢慢调,文案可以反复改,但声音这个东西一旦拉胯,观众三秒就划走了。尤其是配音这块,自己录怕音质差,找素… · 2026/9/24 18:48:56

Docker入门实战:从环境搭建到容器编排的避坑指南
Docker入门实战:从环境搭建到容器编排的避坑指南

实习第一天,带我的同事丢给我一台机器,说“先熟悉一下 Docker,把测试环境搭起来”。当时我连 Docker 和虚拟机的区别都说不清,硬着头皮装环境,光是 Docker Desktop 就折腾了一下午。后来泡在文档、社区帖子和一次次“删… · 2026/9/24 18:48:42

真实IP获取与伪造:XFF、CDN与源站隐藏挖掘实战解析
真实IP获取与伪造:XFF、CDN与源站隐藏挖掘实战解析

1. 取到"真实IP",为什么比想象中难这么多做Web安全或者SRC漏洞挖掘,无论你是打绕过、查日志、做风控还是排查攻击来源,第一步几乎都绕不开"拿到客户端真实IP"。但就是这个最基础的步骤,实际做起来远比想象中麻… · 2026/9/24 18:48:42

C盘清理全攻略:7款免费磁盘分析工具与实操技巧
C盘清理全攻略:7款免费磁盘分析工具与实操技巧

1. C盘飘红这件事,到底难在哪C盘飘红几乎是每个Windows用户都会遇到的经典问题。你正赶着交方案,或者游戏刚加载到一半,右下角突然弹出一个“磁盘空间不足”的提示,低头一看C盘那条进度条已经红得发紫。更让人抓狂的是&#xff0c… · 2026/9/24 19:58:02

C盘爆满怎么清理?7款免费磁盘分析工具与实操指南
C盘爆满怎么清理?7款免费磁盘分析工具与实操指南

1. 先搞清楚C盘为什么"飘红",再谈清理C盘飘红这件事,几乎每个用Windows的人都遇到过。你正干活干到一半,右下角突然弹个提示"磁盘空间不足",打开"此电脑"一看,C盘那条进度条红得刺眼。第… · 2026/9/24 19:58:02

Kata Containers落地实践:从runc切换的隔离方案与性能调优
Kata Containers落地实践:从runc切换的隔离方案与性能调优

1. 为什么我把集群的默认运行时从 runc 换成了 Kata Containers先讲一段我自己经历过的场景。之前我负责一个多租户的数据分析平台,用户会上传自己写的 Python 脚本和模型,在 Kubernetes 集群上跑批处理任务。功能上线半年后,安全团队做了次威… · 2026/9/24 19:58:02

构建与发布Compositor完全指南:Xcode编译、Developer ID签名、公证与自动更新
构建与发布Compositor完全指南:Xcode编译、Developer ID签名、公证与自动更新

构建与发布Compositor完全指南:Xcode编译、Developer ID签名、公证与自动更新 【免费下载链接】Compositor The Photoshop alternative for Mac 项目地址: https://gitcode.com/gh_mirrors/compos/Compositor Compositor 是一款免费开源的 Mac 图像编辑器&am… · 2026/9/24 19:58:02

Humanizer 的 IGrammaticalCaseTimeSpanHumanizeStrategy:让 TimeSpan 时长文本按语法格(Grammatical Case)本地化
Humanizer 的 IGrammaticalCaseTimeSpanHumanizeStrategy:让 TimeSpan 时长文本按语法格(Grammatical Case)本地化

开发工具 【免费下载链接】Humanizer Humanizer meets all your .NET needs for manipulating and displaying strings, enums, dates, times, timespans, numbers and quantities 项目地址: https://gitcode.com/gh_mirrors/hu/Humanizer 点击查看 免费下载 导读 … · 2026/9/24 19:58:02

十六进制与RGB色值转换全攻略:从手算原理到在线工具实战
十六进制与RGB色值转换全攻略:从手算原理到在线工具实战

做设计这一行的,几乎没人能躲开颜色值的忽然切换。上午还在和开发对稿,前端丢过来一串#2C3E50,让你确认下这个颜色是不是品牌标准色;下午要导出一个给印刷厂的物料,对方又问你要 RGB 数值是多少。很多刚入行的设计师看… · 2026/9/24 19:57:54

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码