组网第十课:编码、速率与排障——从比特到信号的最后一公里

组网第十课:编码、速率与排障------从比特到信号的最后一公里

文章目录

某单位报障:"新换的千兆宽带,办公室电脑测速只有 95M。"链路、路由、防火墙全查了,正常。最后在机柜前蹲下来一看------那台"千兆交换机"的端口协商成了 100M 半双工,而网线是那批"便宜超五类"(8 芯只压了 4 芯,只够百兆)。

我把两根线芯压全、重插,端口"啪"地协商到 1000M 全双工,测速直接 940M。

客户恍然大悟:"原来'千兆'不是插上就有,还得看物理层这层'编码和协商'合不合拍。"

这一课,就把物理层的最后一环讲透:编码怎么把比特送上线路、速率怎么算、物理层四大杀手怎么定位。

一、为什么需要编码:比特不能"裸奔"

一串 0101 没法直接上线路------线路上传的是电压/光强的连续变化 ,需要一个"翻译规则"把比特变成信号,这就是线路编码(Line Coding)。它解决三个问题:

  1. 时钟同步:接收端要知道"每个比特的边界在哪",信号里得有"节拍";
  2. 直流平衡:长串连续的 0 或 1 会让电平长期不变,接收端失去同步、器件发热,编码要保证电平均匀变化;
  3. 效率:同样一根线,编码效率决定能跑多少有效比特。

打个比方:编码就是给比特"配了辆合适的车"------曼彻斯特是老牛车,8B10B 是货车,64B66B 是高铁,PAM4 是"一次拉四个乘客"的公交车。

二、编码家族谱:从曼彻斯特到 PAM4

以太网四十多年,线路编码换了好几代:

编码 规则 效率 用在哪儿
曼彻斯特 每个比特中间必有一次跳变(1=低→高,0=高→低) 50% 10M 以太网(最早)
8B10B 8bit 数据 → 10bit 符号,加控制字 80% 千兆(1000BASE-X)
64B66B 64bit 数据 + 2bit 同步头 97% 万兆/25G/100G(以太网光口)
PAM4 用 4 个电平,1 个符号承载 2bit 200%(相对 NRZ) 50G/100G/400G(数据中心)

关键认知:

  • 曼彻斯特效率只有 50%------传 10M 数据,线路要跑 20M 的信号变化,早被淘汰;
  • 8B10B 通过"编码表"保证直流平衡和时钟密度,代价是 20% 带宽;
  • 64B66B 只加 2bit 同步头,效率冲到 97%,但要求线路质量更好;
  • PAM4 不是"1bit=1电平",而是 1 符号=2bit------不提高线路频率,直接翻倍吞吐,是 400G/800G 时代的关键。

规划认知 :同样一根光纤,接口换 64B66B 或 PAM4,速率就能翻倍------物理层的"提速"不全是换介质,编码也在偷偷进化。

三、波特率 vs 比特率:一个信号符号能装几个比特

这是物理层最容易被绕晕的一对概念:

  • 波特率(Baud):每秒钟信号变化的次数(符号率),单位 Baud;
  • 比特率(Bit rate):每秒钟传输的比特数,单位 bps。

关系很简单:比特率 = 波特率 × 每符号比特数。

  • 每符号 1bit(NRZ):比特率 = 波特率;
  • 每符号 2bit(PAM4):比特率 = 波特率 × 2;
  • 加上编码开销:有效数据率 = 线路速率 × 编码效率。

用 Python 把"线路速率→有效速率"算一遍,概念就清楚了:

python 复制代码
# 编码效率与有效速率换算
codings = [("曼彻斯特", 1, 2, 10), ("8B10B", 8, 10, 1000), ("64B66B", 64, 66, 10000), ("PAM4(忽略开销)", 2, 1, 10000)]

print("编码        线路速率    有效速率")
for name, data, sym, line_rate_mbps in codings:
    if name.startswith("PAM4"):
        eff = 2.0          # 每符号 2 bit,无编码开销假设
    else:
        eff = data / sym
    valid = line_rate_mbps * eff
    print(f"{name:15s} {line_rate_mbps:>7} Mbps   {valid:>7.0f} Mbps")

# 实际工程:1G 网口理论 ~1000Mbps,TCP 吞吐 ~940Mbps(扣除帧头/协议开销)
print("\n注: 10G 光口用 64B66B,有效 ~9.7Gbps;若换 PAM4 且线路速率不变,吞吐翻倍")

一句话 :"千兆"是线路速率,真正能用的要乘以编码效率。这也是为什么千兆网实际测速到不了 1000M------940M 才是正常值。

四、物理层四大"杀手":断·弱·污·超长

排障物理层,90% 的问题集中在四类:

杀手 现象 特征 手段
断 完全不通、灯灭 线缆/接头物理断开 打灯、万用表、通断测试仪
弱 通但不稳、丢包 信号幅度不足(长线、劣线、光衰) 测光功率/线缆衰减、换线换模块
污 误码、CRC 涨 接头氧化、脏污、受潮、串扰 清洁接口、重新压接、换屏蔽线
超长 时延大、吞吐减半 超 100 米铜缆、超规格距离 上光纤或加中继/交换机

装维口诀 :断是"灯不亮",弱是"通得虚",污是"错码多",超是"距离顶"。物理层先按这四类对号入座,能省下一大半排查时间。

五、速率协商与双工:千兆为什么变百兆

千兆变百兆、全双工变半双工,是物理层最经典的"哑故障":链路正常、灯亮着,就是速度不对。根因通常是:

  1. 线缆只有 4 芯(只压了 1/2、3/6 两对)------千兆需要 4 对全通;
  2. 线缆类别不够/超长------超过 100 米或劣质线,协商自动降级;
  3. 两端自动协商异常------一端固定速率、一端自动,出现"以低者为准";
  4. 端口配置错------有人手动指定了 100M。

设备上查看与修复速率协商的命令(华为/思科通用思路):

bash 复制代码
# 华为 VRP:查看端口协商结果
display interface GigabitEthernet0/0/1
#   Speed(duplex) : 1000M(a-full)   # a-full = 自动协商 全双工
#   若显示 100M(a-half):协商异常,查线缆或强制

# 强制端口速率/双工(与对端保持一致)
interface GigabitEthernet0/0/1
  undo negotiation auto      # 关闭自动协商
  speed 1000
  duplex full

# 查物理错包(协商降级后常伴随 CRC/碰撞计数)
display interface GigabitEthernet0/0/1
#   Input errors / CRC errors 持续增长 => 物理层脏/劣/超长

六、用 Python 验算:网线千兆为什么只有 940M

python 复制代码
# 千兆理论 vs 实测:帧开销从哪来
# 一个最大帧 1518B(含 8B 前导 + 12B 帧间隙),有效载荷 1500B
frame_total = 1518      # 一个以太网帧在线上占用的字节(含前导+IFG)
payload = 1500          # 实际数据字节
line_rate = 1e9         # 线路速率 1 Gbps

# 每秒最多能传多少帧?
frames_per_sec = line_rate / (frame_total * 8)
# 有效吞吐
valid_bps = frames_per_sec * payload * 8

print(f"千兆线路每秒最多 ~{frames_per_sec:,.0f} 个最大帧")
print(f"有效吞吐上限: {valid_bps/1e6:,.0f} Mbps")
print(f"损失占比: {(1 - valid_bps/line_rate)*100:.1f}%(帧头+帧间隙+前导)")

# 结论:千兆实测 940M 左右 = 协议开销的必然结果,不是故障
print("结论: 940M 是千兆的'协议天花板',测速低于 940M 才需要查物理层")

结论 :物理层提分不靠"加快线路",而是------选对介质、认对接口、保证编码、管好协商。把这几件事做对,物理层基本没有故障空间。

小结

  • 线路编码把比特变成信号:解决时钟、直流平衡、误码率;
  • 编码家族:曼彻斯特(50%)→8B10B(80%)→64B66B(97%)→PAM4(200%);
  • 波特率 vs 比特率:比特率 = 波特率 × 每符号比特数,有效速率还要乘以编码效率;
  • 物理四杀手:断、弱、污、超长,先对号入座再排障;
  • 千兆 940M 是正常,低于 940M 才怀疑物理层(协商、线缆、超长);
  • 物理层结尾,也是整个"物理介质层"收官------下一步进入数据链路层。

思考题:一根标称六类网线,压接正确、端口协商 1000M,但跑 iPerf3 只有 500M。它属于物理层"四杀手"里的哪一类?除了换线,还有哪些手段可以快速确认?(提示:先用"线缆测试仪"验证链路质量,再考虑是否串入级联设备或中间断点)

下期预告

物理层十课讲完:从 DDN 老线到同轴,从网线到光纤,从编码到速率。接下来进入组网的"实战主场"------政企专线全景 :一条专线从 CPE 到局端、到对端,到底经过哪些"盒子"?怎么一眼认出它用了什么承载技术?下一课:组网第十一课:政企专线全景图谱与五层看灯法。

📖 本系列其他课程

专栏主页:《组网那点事》------从 DDN 到 AIDC 智算组网 100 课

相关推荐
青瓦梦滋6 小时前
WebSocket协议
linux·服务器·网络·c++·websocket·网络协议·http
IpdataCloud9 小时前
批量查IP的API接口怎么选?免费API配额瓶颈与离线库本地批量方案实测
网络·网络协议·tcp/ip
网络小江15 小时前
组网第33课:IP 地址与子网——CIDR、掩码、VLSM、网段规划与可用地址速算
网络协议·tcp/ip·子网掩码·vlsm·网络规划
山雀~15 小时前
WebSocket 断连之后:一次手机采集偶现卡死的排查与修复
网络·websocket·网络协议
码少女16 小时前
Linux——网络层-IP协议以及路由选择
linux·网络·网络协议·tcp/ip
dsadas17 小时前
ospf宣告网段的理解
网络协议
爱研究的小梁19 小时前
从无人车配送走向集群联动作业,通信如何扛住协同压力?
网络·网络协议·机器人·信息与通信
汤愈韬20 小时前
OSPF的虚链路
网络·网络协议
honsor20 小时前
双网口 + RS485 机柜温湿度传感器,Modbus RTU/TCP 如何接入 Zabbix
网络协议·tcp/ip·zabbix
FPGA小迷弟2 天前
FPGA开发Vivado Block Design/Vitis/SDK/xlinx/开发教程,保姆级别,一看就会!
网络协议·tcp/ip·fpga开发·verilog·fpga