网线插好了却 CRC 报错?帧结构里藏着答案
文章目录
- 网线插好了却 CRC 报错?帧结构里藏着答案
-
- 一、开场:测线仪八个灯全亮,网为什么还是慢?
- 二、一帧长什么样:把它当成一个标准快递包裹
-
- 1. 帧的结构:一个信封的五个要素
- 2. 两个关键数字:64 和 1518
- 3. 类比:封条对不上,直接拒收
- 三、MAC 地址:48 位里的“身份证”和三种帧
-
- 1. OUI:前 24 位是“哪个厂家”
- 2. 三种目的帧
- 四、命令落点:把错帧计数和双工协商读明白
-
- 1. display interface:错帧全在这
- 2. 速率与双工:一端半双工,两头都难受
- 3. Jumbo 帧:大信封要沿路每站都认
- 4. 错帧排查决策表
- 思科对照
- 五、🔧 运维视角 & 📐 设计视角
- 六、小结与命令速查表
- 七、思考题 & 评论区聊聊
一、开场:测线仪八个灯全亮,网为什么还是慢?
上礼拜去一个新装修的办公区验收。工位上电脑能上网、灯也亮,但就是怪:拷贝文件速度忽快忽慢,视频会议偶尔卡成 PPT,打印机动不动超时。
甲方信息员一脸无辜地掏出测线仪:“你看你看,八个灯全亮、一路全通,我测过了,线没问题!”
我登交换机一敲 display interface GigabitEthernet0/0/3,指着回显让他看:
Duplex: HALF, Speed: 100
Input: …… CRC: 12837, Runts: 402
Output: …… Late Collisions: 316
问题全在这几行:协商成了半双工、100 兆,CRC 错帧一万多,延迟冲突三百多。
记住一句话:测线仪灯亮,只证明八根线通了;不代表这根线压得好、跑得到位。 线序错、水晶头压得不紧、串扰、双工不匹配,测线仪都可能“绿灯放行”,但交换机的错帧计数会如实记着。
这一课,我们就把 MAC 表里那一帧拆开揉碎——它在线缆里到底长什么样?每个字段管什么?CRC、Runts、Giants 这些计数又是怎么回事?
二、一帧长什么样:把它当成一个标准快递包裹
1. 帧的结构:一个信封的五个要素
以太网帧(以最常见的 Ethernet II 为例)的结构很规整,你把它想象成一个标准快递包裹:
- 目的 MAC:收件人地址(这帧送给谁);
- 源 MAC:寄件人地址(这帧谁发的);
- 类型/长度:里面装的是什么——0x0800 是 IPv4、0x0806 是 ARP、0x86DD 是 IPv6;
- 数据 Payload:信纸/货物(上层的 IP 报文);
- FCS:封口上的验货封条,一段 CRC 校验码。

各字段字节数(B 表示字节):
| 前导码 Preamble | 7B | 一串交替的 0101,让接收方时钟同步,物理层前缀,不计入帧长 |
| 帧起始 SFD | 1B | 10101011,宣告“帧要开始了”,同样不计入帧长 |
| 目的 MAC | 6B | 收件人 |
| 源 MAC | 6B | 寄件人 |
| 类型/长度 | 2B | 装的是 IPv4/ARP/IPv6,还是数据长度 |
| 数据 Payload | 46~1500B | 上层报文;不足 46 字节要填充(Pad) |
| FCS | 4B | 帧校验序列(CRC-32),验货封条 |
2. 两个关键数字:64 和 1518
注意前导码 + SFD 那 8 个字节是物理层的“同步前缀”,不算进帧长。真正算帧长的是“目的 MAC → FCS”这一段:
- 最小帧 64 字节:6+6+2+46+4 = 64。数据不足 46 字节就补 Pad 凑满,这是为了让冲突检测有效;
- 最大帧 1518 字节:6+6+2+1500+4 = 1518,对应标准 MTU 1500;
- 超过 1518 的普通帧会被当“巨帧”丢弃;要传更大的,得端到端开 Jumbo(见第四节)。
为什么偏偏是 64? 这是早期以太网 CSMA/CD(载波监听、冲突检测)机制留下的规矩:帧必须足够长,才能让信号在最远两台设备之间往返一趟的时间里,还来得及检测到冲突。按最极端的网络直径一算,底线恰好是 64 字节、约 512 位时隙。今天的全双工交换网络早已没有传统冲突,但为了兼容老设备,最小帧长一直保留。另外,帧与帧之间还留了 12 字节的帧间隙(IFG),给网卡一点处理和喘息的空当,它同样不算帧长。
3. 类比:封条对不上,直接拒收
FCS 是发送端对整帧算的一个 CRC-32 校验码。接收端收到后自己再算一遍:
- 算出来的 FCS 和帧尾的一致 → 封装没破,正常上交;
- 对不上 → 说明这帧在途中被破坏了(信号衰减、干扰、水晶头接触不良、双工冲突),接收端直接丢弃,不往上送,同时在 CRC 计数器上记一笔。
就像快递的封条,撕开了、对不上号,收件人当场拒收——这帧不会被“修好”,而是丢掉等上层重传。你看到的网速慢、卡顿,本质上就是错帧被丢 + 上层不断重传。
#mermaid-svg-XbDqUwOEmXuZsNhj{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-XbDqUwOEmXuZsNhj .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-XbDqUwOEmXuZsNhj .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-XbDqUwOEmXuZsNhj .error-icon{fill:#552222;}#mermaid-svg-XbDqUwOEmXuZsNhj .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-XbDqUwOEmXuZsNhj .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-XbDqUwOEmXuZsNhj .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-XbDqUwOEmXuZsNhj .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-XbDqUwOEmXuZsNhj .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-XbDqUwOEmXuZsNhj .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-XbDqUwOEmXuZsNhj .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-XbDqUwOEmXuZsNhj .marker{fill:#333333;stroke:#333333;}#mermaid-svg-XbDqUwOEmXuZsNhj .marker.cross{stroke:#333333;}#mermaid-svg-XbDqUwOEmXuZsNhj svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-XbDqUwOEmXuZsNhj p{margin:0;}#mermaid-svg-XbDqUwOEmXuZsNhj .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-XbDqUwOEmXuZsNhj .cluster-label text{fill:#333;}#mermaid-svg-XbDqUwOEmXuZsNhj .cluster-label span{color:#333;}#mermaid-svg-XbDqUwOEmXuZsNhj .cluster-label span p{background-color:transparent;}#mermaid-svg-XbDqUwOEmXuZsNhj .label text,#mermaid-svg-XbDqUwOEmXuZsNhj span{fill:#333;color:#333;}#mermaid-svg-XbDqUwOEmXuZsNhj .node rect,#mermaid-svg-XbDqUwOEmXuZsNhj .node circle,#mermaid-svg-XbDqUwOEmXuZsNhj .node ellipse,#mermaid-svg-XbDqUwOEmXuZsNhj .node polygon,#mermaid-svg-XbDqUwOEmXuZsNhj .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-XbDqUwOEmXuZsNhj .rough-node .label text,#mermaid-svg-XbDqUwOEmXuZsNhj .node .label text,#mermaid-svg-XbDqUwOEmXuZsNhj .image-shape .label,#mermaid-svg-XbDqUwOEmXuZsNhj .icon-shape .label{text-anchor:middle;}#mermaid-svg-XbDqUwOEmXuZsNhj .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-XbDqUwOEmXuZsNhj .rough-node .label,#mermaid-svg-XbDqUwOEmXuZsNhj .node .label,#mermaid-svg-XbDqUwOEmXuZsNhj .image-shape .label,#mermaid-svg-XbDqUwOEmXuZsNhj .icon-shape .label{text-align:center;}#mermaid-svg-XbDqUwOEmXuZsNhj .node.clickable{cursor:pointer;}#mermaid-svg-XbDqUwOEmXuZsNhj .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-XbDqUwOEmXuZsNhj .arrowheadPath{fill:#333333;}#mermaid-svg-XbDqUwOEmXuZsNhj .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-XbDqUwOEmXuZsNhj .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-XbDqUwOEmXuZsNhj .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-XbDqUwOEmXuZsNhj .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-XbDqUwOEmXuZsNhj .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-XbDqUwOEmXuZsNhj .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-XbDqUwOEmXuZsNhj .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-XbDqUwOEmXuZsNhj .cluster text{fill:#333;}#mermaid-svg-XbDqUwOEmXuZsNhj .cluster span{color:#333;}#mermaid-svg-XbDqUwOEmXuZsNhj div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-XbDqUwOEmXuZsNhj .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-XbDqUwOEmXuZsNhj rect.text{fill:none;stroke-width:0;}#mermaid-svg-XbDqUwOEmXuZsNhj .icon-shape,#mermaid-svg-XbDqUwOEmXuZsNhj .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-XbDqUwOEmXuZsNhj .icon-shape p,#mermaid-svg-XbDqUwOEmXuZsNhj .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-XbDqUwOEmXuZsNhj .icon-shape .label rect,#mermaid-svg-XbDqUwOEmXuZsNhj .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-XbDqUwOEmXuZsNhj .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-XbDqUwOEmXuZsNhj .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-XbDqUwOEmXuZsNhj :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
一致
不一致
上层数据
封装目的MAC 源MAC 类型
计算FCS校验码
网卡发出
对端收到帧
FCS核对是否一致
正常上交处理
丢弃并计一笔CRC
三、MAC 地址:48 位里的“身份证”和三种帧
1. OUI:前 24 位是“哪个厂家”
MAC 地址共 48 位(6 字节),写成 6 组十六进制,比如 AC-DE-48-00-11-22。
- 前 24 位(前 3 组)是 OUI,厂商标识,由 IEEE 分配,能看出网卡是谁家的(比如华为、Intel、Dell 各有前缀);
- 后 24 位(后 3 组)是设备 ID,由厂商自行分配,保证全球唯一。

MAC 第一个字节还有两个特殊位,了解即可:
- I/G 位(第 1 个字节的最低位):0 表示单播(具体某台设备),1 表示组播;
- U/L 位(第 1 个字节的次低位):0 是全局 OUI 管理,1 是本地自行修改。
2. 三种目的帧
| 单播 | 某一具体 MAC | 一对一 | 你和某台服务器通信 |
| 组播 | 第一字节最低位为 1,如 01-00-5E-xx-xx-xx | 一对一组 | IPv4 组播、部分协议发现 |
| 广播 | FF-FF-FF-FF-FF-FF | 一对所有 | ARP 请求“谁是这个 IP” |
第 22 课讲的“未知单播/广播/组播要泛洪”,正是建立在目的 MAC 这几种形态上的。
四、命令落点:把错帧计数和双工协商读明白
1. display interface:错帧全在这
<SW> display interface GigabitEthernet0/0/3
重点看这几行(字段名随设备版本略有差异,看意思):
GigabitEthernet0/0/3 current state : UP
Line protocol current state : UP
Speed : 1000, Duplex : FULL
Last 300 seconds input rate 1200 bytes/sec
Input:
Unicast: …, Broadcast: …, Multicast: …
Errors: 13, Runts: 402, Giants: 0
CRC: 12837, Discard: 0
Output:
Unicast: …, Errors: 0
Collisions: 3, Late Collisions: 316
这些计数怎么读,是这一课的核心:
| CRC / FCS | 帧校验对不上,内容损坏 | 物理层:水晶头、网线、接口、光模块、干扰 |
| Runts(残帧) | 小于 64 字节的坏帧 | 网卡故障、双工不匹配 |
| Giants / Jabbers | 大于 1518 的帧 | 巨帧,Jumbo 没端到端开启 |
| Late Collisions | 延迟冲突 | 一端半双工、或线缆超长 |
| Collisions | 冲突 | 半双工网络正常会有,全双工下应基本为 0 |
| Errors / Discard | 综合错误、丢弃 | 拥塞缓冲、以上问题叠加 |
判读有个窍门:先看速率双工,再看错误计数是不是在涨。 看的时候连敲两次,间隔几秒:
<SW> display interface GigabitEthernet0/0/3 | include CRC
- 计数一直涨 → 故障正在发生;
- 只是个历史大数、不增长 → 可能是以前的旧账,记下即可。
2. 速率与双工:一端半双工,两头都难受
开场那台口就是协商成了 100M / HALF。双工不匹配是“能通但慢、错帧、延迟冲突”的经典原因。
- 全双工:像双向车道,收和发同时进行,互不打断;
- 半双工:像对讲机,同一时刻只能一个人说,两头抢话就冲突,报 Late Collisions、产生错帧。
正常两端都应协商成 1000M / FULL。默认自协商即可,只有自协商异常、需要强制时才手动锁定(两端要一致):
<SW> system-view
[SW] interface GigabitEthernet0/0/3
[SW-GigabitEthernet0/0/3] undo negotiation auto # 关闭自协商(仅在需要强制时)
[SW-GigabitEthernet0/0/3] speed 1000 # 强制千兆
[SW-GigabitEthernet0/0/3] duplex full # 强制全双工
[SW-GigabitEthernet0/0/3] quit
[SW] return
<SW> save
验证:
<SW> display interface GigabitEthernet0/0/3 | include Speed
Speed : 1000, Duplex : FULL
- 看到 Speed : 1000, Duplex : FULL 即正常;
- 异常:如果你这端强制全双工、对端却开着自协商,对端往往协商成半双工,双工不匹配。原则是两端都自协商,或两端都强制成一致。
3. Jumbo 帧:大信封要沿路每站都认
存储、虚拟化、大数据场景常传大块数据,标准 1500 字节不够用,会开 Jumbo 帧(常见 9000 字节)。
这就是大集装箱的类比:你换大信封没问题,但沿途每一个分拣站都得认大信封——只要有一台设备还是 1518,大帧到它那儿就被丢,报 Giants。
华为盒式交换机在接口下开启(具体命令以设备型号/版本为准):
<SW> system-view
[SW] interface GigabitEthernet0/0/10
[SW-GigabitEthernet0/0/10] jumboframe enable 9000 # 接口放行9000字节巨帧
[SW-GigabitEthernet0/0/10] quit
[SW] return
- 务必端到端逐跳开启:服务器网卡、每台交换机、路由器接口,一个都不能少;
- 配合 ping -s 8972(大包)验证,相关的大包测试和 MTU 探测方法在第 19 课讲过,这里不重复。
4. 错帧排查决策表

| CRC 持续涨 | display interface | CRC/FCS 不断增加 | 物理层损坏/干扰 | 重做水晶头、换跳线、查光模块(光功率见第19课)、换口 |
| 大量 Runts | display interface | Runts 涨、帧小于 64 | 网卡故障或双工不匹配 | 查对端网卡、统一双工 |
| Giants 增长 | display interface | 帧大于 1518 被丢 | Jumbo 没端到端开 | 逐跳开 jumboframe |
| Late Collisions | display interface | 延迟冲突多 | 一端半双工或线缆超长 | 两端统一全双工、缩短线缆 |
| 协商成 100M/Half | display interface | Speed/Duplex 偏低 | 自协商失败、线序/压接问题 | 统一自协商或强制、重做水晶头 |
| 灯亮但时快时慢 | 连看两次计数 | 多类错误在涨 | 错帧→重传 | 按上表定位,先物理层后配置 |
物理层基本功:重做水晶头
很多 CRC 最后都栽在一颗小小的水晶头上。室内布线通用 T568B 线序,水晶头铜片朝上、卡榫朝下,从左到右为:
橙白 橙 绿白 蓝 蓝白 绿 棕白 棕
两端都用 T568B 是直连线;一头 568A、一头 568B 是交叉线(现代网口基本都支持 MDI/MDI-X 自动翻转,不用刻意做交叉线)。压接要做到三点:外皮压进水晶头内部、八根芯顶到最前端、卡扣压紧;线对尽量少解开。线对解开过长会导致串扰——这正是“测线仪灯亮、CRC 却疯涨”的隐形元凶。
思科对照
| 看接口错帧 | display interface gi0/0/1 | show interface gi0/1 |
| 速率/双工 | speed 1000 / duplex full / negotiation auto | speed 1000 / duplex full / speed auto |
| Jumbo | jumboframe enable 9000(盒式接口) | mtu 9000(或 system mtu) |
| 错帧字段 | CRC / Runts / Giants / Late Collisions | CRC / runts / giants / late collisions(在 show interface) |
光模块、光功率、收发光那套物理层排查在第 19 课《出口与专线排障实战》已经细讲;本课聚焦电口网线、帧结构和双工协商,不在此重复。
五、🔧 运维视角 & 📐 设计视角
🔧 运维视角:
- 灯亮不等于线好,测线仪通≠业务正常,真正的体检报告是 display interface 里的错误计数,连敲两次看是否在涨;
- “能通但慢、偶发卡顿、延迟冲突”优先排查双工协商,两端务必都是 1000M / FULL;
- 修 CRC 别先怀疑配置,先物理层:重做水晶头、换一根跳线,往往一分钟解决;
- 开 Jumbo 一定要画清端到端路径,逐跳确认,缺一个口就丢巨帧。
📐 设计视角:
- 布线施工时就把水晶头工艺、测试规范写进验收标准,别只看通断,留好测试报告(六类线、规范压接、不超距);
- 全网统一自协商策略,服务器、存储等固定端口可强制全双工并形成文档,避免一端 auto 一端 force;
- 设计存储、虚拟化、大数据网络时,提前统一 MTU/Jumbo 规格,并在设备清单里逐台标注,避免上线后才发现中间某台不支持。
六、小结与命令速查表
- 以太网帧 = 前导码(不计帧长)+ 目的 MAC + 源 MAC + 类型 + 数据 + FCS;帧长最小 64、最大 1518(不含前导码);
- FCS 校验不过的帧直接丢弃并计 CRC,表现为慢、卡顿、重传;
- MAC 48 位:前 24 位 OUI 是厂商、后 24 位是设备 ID;三种目的帧是单播、组播、广播;
- display interface 里:CRC 看物理层、Runts 看网卡/双工、Giants 看 Jumbo、Late Collisions 看双工不匹配;
- 两端速率双工要一致,全双工千兆是常态;
- Jumbo 必须端到端逐跳开启。
本篇命令速查表(华为 VRP):
| 看接口状态/错帧 | display interface gi0/0/1 | show interface gi0/1 |
| 过滤某计数 | display interface gi0/0/1 | include CRC | show interface gi0/1 | include CRC |
| 设自协商 | negotiation auto | speed auto / duplex auto |
| 强制速率双工 | speed 1000 + duplex full | speed 1000 + duplex full |
| 开 Jumbo(盒式) | jumboframe enable 9000 | mtu 9000 |
| 看帧长相关 | 回显中 Runts / Giants / CRC | runts / giants / CRC |
七、思考题 & 评论区聊聊
思考题(答案我会在评论区置顶公布):
一台终端接入口,接口灯亮、能拿到 IP、能上网,但拷贝文件很慢,display interface 看到 Late Collisions 和 CRC 都在增长、Duplex 是 HALF。请判断:最可能的根因是什么?你会按什么顺序排查,验证哪些参数恢复正常才算修好?
💬 互动话题(欢迎评论区交作业):
你遇到过最“玄学”的错帧、协商问题是什么?是装修队压的水晶头、一端 auto 一端 force 导致的半双工、还是某台老设备没开 Jumbo 拖垮整条链路?说说你的“现象—排查—最终真相”,让新人少走点弯路。
系列导航:
- 上一课:第 22 课《MAC 表与帧转发——交换机的“小本本”怎么记》
- 下一课:第 24 课《VLAN 入门——把一张大网切成几段》
- 专栏主页:[网络工程师进阶:企业组网实战——从交换机配置到园区网交付]
我是你们的老网工。这一课我们把一帧拆开,看清了目的 MAC、源 MAC、类型、数据和 FCS,也学会了用错帧计数给物理层“体检”。到这里,交换机怎么学 MAC、帧长什么样,你都明白了。下一课开始解决一个更现实的问题——几百台设备挤在一个广播域里吵翻天怎么办?VLAN 登场,咱们把一张大网切成互不相干的几段。 我们下一课见。


![[LangChain] 学习笔记(02):LCEL 链式调用与动态模型配置实战-171主机测评](https://www.171host.com/wp-content/uploads/2026/10/20261030203301-6ae4fefdb54f3-220x150.png)
![[LangChain] 学习笔记(02):LCEL 链式调用与动态模型配置实战-171主机测评](https://www.171host.com/wp-content/uploads/2026/10/20261030202745-6ae4fdc1556bf-220x150.png)
