ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

物理层核心三问:信号、编码与信道容量如何决定网络性能极限

物理层核心三问:信号、编码与信道容量如何决定网络性能极限 做计网体系梳理的时候很多人喜欢把物理层当成“背名词”的一章草草带过奈奎斯特公式背一下香农公式套一下曼彻斯特编码图看一眼就觉得自己过关了。但等真去做项目、排查网络故障、甚至只是看交换机的物理端口协商日志时才发现自己连“信号、编码与信道容量”这三件事到底在解决什么问题都没想明白。这一篇我不打算照着教材目录给你念定义而是把物理层拆开揉碎讲清楚三个层次的问题信号为什么长这样、编码究竟在编什么、信道容量为什么是理论极限。你学完之后再回去看任何一本计网教材的物理层章节会发现那些公式和波形图都能一一对应到真实场景里——这才是“全栈通关”该有的状态。1. 物理层的定位这三个问题其实都围绕同一件事1.1 物理层不管“数据内容”只关心比特的搬运先摆正一个观点物理层在整个计网体系里是最底层的“苦力”。它不关心你发的是网页请求还是视频流也不关心IP地址、端口号它只负责一件事——把一台设备上的比特流通过物理媒介送到另一台设备上。但“搬运”这两个字背后并不简单。比特本身只是一串抽象的0和1它不能自己长脚跑到网线上。物理层要干的活其实可以拆成三条线信号形态问题0和1用什么物理形式表达是电压高低、光的有无、还是无线电波的相位变化同步问题接收端怎么知道每个比特从哪开始、在哪结束怎么从一串连续波形中恢复出一个个离散的0和1速率极限问题一条信道到底最多能跑多快这个速度是由什么决定的这三个问题正好对应信号、编码、信道容量这三个关键词。你去看ISO的OSI模型里物理层定义的四大特性——机械特性接口形状、引脚排列、电气特性电压范围、信号电平、功能特性每条线是干什么的、规程特性事件发生的顺序——本质上都是在回答这三条线里的具体细节。我在学习的时候有个很深的体会物理层是所有层里最“不像软件”的一层。数据链路层、网络层你还能用抓包工具看流程物理层则是纯粹的硬件工程。但也恰恰因为它涉及大量电磁学、通信原理的基础知识反而成了区分“背过书”和“真理解”的分水岭。1.2 常见的误区物理层不等于网卡这里要先破除一个常见的误解。很多人觉得“网卡是物理层设备”这话对也不对。网卡确实负责物理信号的收发但它里面同时还跑着数据链路层的逻辑——比如MAC地址的识别、帧的封装与校验。实际上从OSI角度看网卡是横跨物理层和数据链路层的。同理集线器Hub是纯物理层设备它只是把收到的比特信号转发出去而交换机虽然端口长得差不多但它工作在数据链路层会解析帧头和MAC地址。这个区分不是抠概念它直接影响你的排障思路。比如老式Hub组网时所有端口共享一个冲突域两台设备同时发数据就会“撞车”而交换机的每个端口都是独立冲突域因为它在更高层做了帧级别的转发决策。如果你把两者混为一谈遇到网络拥塞时就会找错排查方向。还有一点也值得注意物理层不是只有铜线。光纤、无线电波、同轴电缆、甚至电力线通信都在物理层的范畴内。不同介质的特性决定了物理层采用的编码和调制完全不同——比如光纤里只能传光的有和无所以通常用强度调制双绞线里可以走差分电压信号所以能用更复杂的电平编码。物理层的所有设计都是“因媒介制宜”的结果。2. 信号比特落地之后的长相2.1 模拟信号与数字信号离散和连续的根本差异信号是物理层的“原材料”。从大学电路课到通信原理信号永远分成两大阵营模拟信号和数字信号。模拟信号的特点是取值连续、时间连续。比如声音通过麦克风转成的电压波形你把它在纸上画出来是一条连续变化的曲线任意两个相邻时刻之间都有无数个取值。正弦波就是最经典的模拟信号它有三个参数可以调节幅度、频率、相位。数字信号则是取值离散、时间离散的。典型的数字信号就是方波要么是高电平记为1要么是低电平记为0。注意这里有个容易混淆的细节数字信号的波形本身在时间上也是连续存在的它占据一段传输时间只不过在每一个“码元周期”内它的取值只能从有限个状态里选一个。这里引出计网里第一个必须搞清的概念——码元和比特的区别。一个码元Symbol是信号状态的一次基本变化周期它携带的信息量可以是1比特、2比特甚至更多。如果一段信号只区分高电平1和低电平0那么每个码元携带1比特如果区分四个电平比如0V、1V、2V、3V那每个码元就能携带2比特。以此类推用M种不同的信号状态每个码元就能携带 log2(M) 比特。我在看一些设备的规格书时经常碰到“波特率”Baud和“比特率”bps这两个词很多人混淆。波特率是每秒传输的码元数比特率是每秒传输的比特数。两者之间的关系是比特率 波特率 × log2(码元状态数)。如果一套系统用四电平编码3000波特的信号实际能跑6000比特每秒。这个换算关系后面讲信道容量时还会用到务必刻在脑子里。2.2 基带传输与频带传输为什么有的地方直接传方波有的地方要“搬个家”当比特变成电信号之后接下来的问题是直接用方波怼进信道里传还是先把它转换成一个高频载波信号的参数再传这两种思路分别叫基带传输和频带传输。基带传输很好理解数字信号不经过调制直接在信道里以原来频率范围传输。局域网里的以太网就是典型的基带传输所以你会看到“100Base-T”这种名词里有个“Base”它表示基带。基带传输适合距离短、信道带宽大、干扰可控的环境比如一栋楼里的双绞线布线。频带传输则不一样。它要把数字信号的频谱“搬移”到某个高频载波附近再发送。为什么需要这么干原因很现实有些信道本身对低频分量的传输效果很差比如无线信道天线尺寸和波长相关直接传低频方波根本不现实多路信号可以调制到不同频率的载波上在同一个介质里并行传输而不互相干扰这就是频分复用远距离传输时高频信号在信道中的衰减特性往往更适合工程实现频带传输的核心是调制。最基础的三种调制方式是ASK幅移键控用载波幅度的大小代表0和1。实现简单但抗噪声能力差因为噪声最喜欢改变幅度。FSK频移键控用载波频率的高低代表0和1。抗干扰能力强常用于无线电和低速通信。PSK相移键控用载波相位的变化代表0和1。抗噪声能力好带宽利用率高现代无线通信的主流派别。实际系统里很少只用单一维度的调制。QAM正交幅度调制就是同时调幅度和相位比如16-QAM用4种幅度×4种相位组合出16个码元状态每个码元携带4比特。你在光猫、WiFi路由器、4G/5G手机里看到的星座图就是QAM调制的结果。我当年学到这块时有个理解捷径把调制想象成“把货物信息写在快递单的哪个位置”。你要寄的东西是比特快递盒本身是载波你不能把比特直接贴在盒子上基带得把比特转化成盒子上的不同贴法幅度、频率、相位的变化才算完事。2.3 数字数据用模拟信道传输一个经典的工程场景严格来说前面讲的是数字信号和模拟信道之间的适配问题。但现实中还有一种更经典的情况存在了很久——上世纪拨号上网时期计算机网络的数据本来是数字的电话线却是为模拟语音设计的。这时候就需要调制解调器Modem登场。发送端把数字比特调制成模拟信号调制Modulate送上电话线接收端再把模拟信号解调回数字比特解调Demodulate。Modem的全名“调制解调器”就是从这两个动作拼出来的。现在宽带接入普及后独立Modem退出了家庭主流但“数字数据跑在模拟信道上”的思想并没有消失。ADSL、光纤入户的光猫本质上仍然是数字数据与信道特性的适配过程。你理解了调制解调器就理解了所有“最后一公里”接入技术的共同底层逻辑。3. 编码让信号自己解决“边界”问题3.1 不直接传比特的原因时钟同步与基线偏移既然0和1可以用高低电平表示为什么不直接把比特对成电压一股脑发出去问题出在两个细节上。第一个问题是同步。接收端要还原比特流必须知道一个比特的持续时间是多久。如果发送端连续发一串“000000”接收端只会看到一条持续低电平的直线它无法知道这到底是6个0还是10个0。解决办法是收发双方约定时钟频率但光有约定还不够一旦双方时钟有微小偏移时间长了就会累积成误差。第二个问题是基线偏移。如果信号长时间保持同一种电平接收端的判决电平用于区分0和1的阈值会逐渐漂移。我们常听说的“交流耦合”电路中长时间直流分量会导致基线漂移最终让接收端误判。编码方案要解决的核心问题就是让信号波形本身携带“时钟信息”。也就是说不管数据长什么样信号都要保证足够频繁的电平跳变让接收端能持续提取同步时钟。3.2 从NRZ到曼彻斯特用跳变换取同步先说最简单的NRZ不归零编码1用高电平表示0用低电平表示。“不归零”意思是电平在整个码元周期内保持不变不会在码元中间跳变回零电平。它的优点是实现简单、带宽利用高缺点就是前面说的——长串0或1时没有同步信息。NRZ的改进版是NRZI不归零反转编码电平保持不变表示0电平在码元起始处跳变表示1。它解决了“连续1”的同步问题但连续0依然危险。真正在计网教材里大书特书的是曼彻斯特编码它被用于早期的10M以太网10Base-T。曼彻斯特的规则不复杂每个比特的中间时刻一定有一次电平跳变这个跳变既代表数据也充当同步时钟。具体规则是从高到低的中间跳变表示1从低到高的中间跳变表示0也可以反过来不同标准定义不同。它的直接好处是接收端在任何时候都能从波形中提取到时钟因为每比特中间必有跳变。坏处也同样明显为了制造跳变信号的频率变成了数据速率的两倍——10Mbps的以太网线上信号的实际频率是20MHz。这意味着它需要占用两倍的带宽这就是“用带宽换同步”的典型交易。差分曼彻斯特编码是曼彻斯特的变体。它不再用跳变方向表示比特而是用“比特起始处有没有跳变”来表示起始处有跳变表示0无跳变表示1。这么做的好处是抗噪声能力更强因为接收端只要检测跳变的有无而不是判断电平方向。我在实际项目里见过不少工程师对曼彻斯特编码的误解以为它只是教材里的古董。但事实上直到今天很多低速工业总线、RFID、红外遥控协议里仍然在用类似的自同步编码思想。理解了曼彻斯特你就理解了“自同步设计”的鼻祖。3.3 从4B/5B到8B/10B高速接口背后的编码逻辑曼彻斯特编码带宽翻倍的代价在高速网络里是不可接受的。100M以太网如果沿用曼彻斯特编码需要200MHz带宽这对双绞线来说太奢侈了。于是100Base-TX改用了一种组合方案4B/5B编码MLT-3物理编码。4B/5B编码的思路很聪明把每4位数据映射为5位码组。这样5位码组共有32种组合其中16种对应原始的16种4位数据组合剩下的16种里挑一些特殊组合用作控制码比如流起始符、流结束符、空闲符并且保证所有合法码组中“连续0”的数量不会超过3个。这么做显然会带来20%的编码开销4比特变成5比特但换来了同步性和控制能力代价远小于曼彻斯特的100%。紧接着MLT-3三电平编码再把编码后的信号进一步压缩它用-1、0、1三个电平来传递信息并且让信号在主频的1/4速率上工作。通过这两层编码叠加100Mbps的数据在双绞线上的信号频率被压到了31.25MHz完美匹配五类线的设计指标。到了更高速的场景比如千兆以太网、PCIe、USB 3.0、SATA行业普遍采用8B/10B编码把每8位数据映射成10位码组。它的设计目标有三个保证足够多的电平跳变便于时钟恢复控制直流分量DC Balance避免基线漂移提供错误检测能力非法码组可以被识别出来。8B/10B编码把10位码组划分为“正码”和“负码”两套发送时根据当前已发送比特流中0和1的累计偏差称为运行不一致度RDS选择用哪一套从而把直流分量控制在很小的范围内。你去看PCIe、千兆网的物理层协议文档里面到处是这类“编码DC平衡”的配套设计。再往后更高速的万兆以太网、PCIe 3.0以上改用64B/66B编码64位数据加2位同步头开销只有3.125%。同步头的01或10模式本身就提供了时钟同步而数据部分用加扰器处理避免长串重复模式。这里体现的工程权衡很典型速率越高编码开销越要压得低但同步和DC平衡的需求一个都不能少。串行高速信号接口PCIe、USB、SATA、万兆光口的设计里还有一个普遍要素是差分信号。差分信号用两根线的电压差表示逻辑值而不是单根线对地的绝对电压。它的好处是抗共模干扰能力强而且两根线靠得很近对外辐射互相抵消。你拆开任何一根现代网线或USB 3.0线缆看到一对对绞在一起的两根芯线里面跑的就是差分信号。4. 信道容量理论极限到底卡在哪里4.1 奈奎斯特准则无噪声世界的上限前面讲的信号和编码都是解决“怎么传”的问题。接下来是物理层的最后一个大问题“最多能传多快”。这里有两把尺子。第一把是奈奎斯特准则。奈奎斯特指出在一个带宽为BHz的无噪声理想信道上码元的最大传输速率是 2B 波特。如果再考虑每个码元用V种状态携带信息那么信道的最大数据速率为C 2B × log2(V)这个公式告诉我们两件事其一带宽决定了码元速率的极限你不可能在带宽有限的信道上无限地提高每秒码元数因为码元速率太高就会产生码间串扰——相邻码元的波形混叠在一起接收端分不清边界其二增加每个码元的电平数V可以提高速率但后面我们会看到香农公式对这条路也设了限制。举个例子一个带宽为3000Hz的无噪声信道用四电平编码V4奈奎斯特速率为C 2 × 3000 × log2(4) 2 × 3000 × 2 12000 bps这里有个容易踩的坑log2(4)是2不是4。很多初学者把V直接乘进去算出24000就错了。别忘了码元状态数和比特率之间是取对数的关系。4.2 香农公式噪声世界的真实极限无噪声信道在现实中不存在。信号只要传输就会叠加热噪声、电磁干扰、串扰等香农公式给出的才是带噪信道的真正理论极限C B × log2(1 S/N)其中S/N是信号功率与噪声功率之比也叫信噪比。这个公式的含义很深刻它说的是在一个给定带宽、给定信噪比的信道上无论你用什么调制方式、什么编码方案都不可能超过这个速率上限。工程上信噪比常用分贝dB表示换算关系是(SNR)dB 10 × log10(S/N)比如S/N 1000时用分贝表示就是30dB。香农公式之所以是“终极天花板”是因为它统治了所有调制编码方案。你换更高阶的QAM提高编码效率都是在向这个极限逼近但永远无法超过它。这就像高速公路限速120你换更好的发动机也只能在120以下跑不能突破限速。来看一个经典计算一条电话线的带宽约3000Hz信噪比约30dB。先把30dB还原成线性倍率10^(30/10) 1000。然后代入公式C 3000 × log2(1 1000) 3000 × log2(1001) ≈ 3000 × 9.97 ≈ 29910 bps也就是说即使是理论上限也只有不到30 kbps。这就是为什么早期拨号上网最高只有56kbps——但56kbps其实已经超过了电话线语音频段的香农极限它是通过信号处理和更宽的等效信道实现的这里不展开细说。你现在明白为什么电话线上跑不出Mbps级别的速度了吧不是调制技术不行是物理定律不让。4.3 为什么现实速度永远追不上理论值奈奎斯特给了无噪声上限香农给了带噪上限但现实中没有任何系统的实际速率能跑满香农极限。原因包括但不限于信噪比达不到理想值公式里的S/N是假设的某个统计值实际链路的干扰是动态变化的信号衰减也会让信噪比恶化。编码开销前面讲的4B/5B、8B/10B、64B/66B都要消耗额外带宽有效数据速率永远低于线路速率。协议开销MAC层帧头、帧尾、前导码、帧间隔都占带宽。双工方向与回波抵消像千兆以太网这样四对线同时收发需要复杂的回波抵消和串扰抵消电路这些处理本身也会占用余量。你可以把香农极限理解成公路的物理限速把实际速率理解成考虑到收费站、红绿灯、车辆换道之后的平均车速。两者之间注定有差距但差距越小说明系统设计越好。我建议你把奈奎斯特和香农公式对比着记奈奎斯特管的是“没有噪声时码元速率和电平数决定上限”香农管的是“在有噪声时无论电平数多高都逃不过带宽和信噪比的乘积极限”。前者告诉你调制能带来什么后者告诉你调制无法突破什么。5. 常见问题与排查心得把物理层知识用在真实网络上5.1 物理层故障速查表现象、原因和检查方向学完理论我们看看这些知识怎么落到日常网络维护中。现象可能的物理层原因检查方向网线超过100米后频繁丢包信号衰减导致接收端信噪比不足误码率上升测线缆长度换用光纤或加中继设备端口协商成100M而不是1000M线缆质量差、链路信噪比不满足千兆要求换线检查RJ45接头压接是否可靠网速远低于运营商宣称速率信噪比波动、编码速率协商、射频干扰看端口的协商速率和误码计数器WiFi信号满格但网速很慢信号强度代表的是接收功率不代表信噪比好同频干扰会劣化SNR用无线扫描工具看信道占用换5GHz或干净信道高速信号误码率高高速信号对差分走线、阻抗匹配、串扰极其敏感检查高速接口的差分走线等长、阻抗连续性和回流路径这里重点提一下“信号满格但网速慢”的常见误区。很多人在排查WiFi问题时只看信号强度但物理层真正决定速率的是信噪比SNR。信号强度高如果噪声也高SNR同样很低此时WiFi会协商到较低阶的调制方式比如从256-QAM降到16-QAM速率自然上不去。这就是为什么离路由器近但旁边有微波炉、蓝牙设备时网速会暴跌。5.2 看链路协商和误码率物理层的“体检指标”现代网络设备普遍提供了物理层的健康信息排查故障时不要只盯ping的结果。推荐三个实用的观测点端口协商速率与双工模式交换机上看show interface或等价的命令能看到端口当前速率、双工、自动协商结果。如果链路经常在100M和1000M之间跳变多半是线缆质量或接头问题。误码率CRC/Error计数以太网物理层会把接收到的数据交给上层校验如果出现大量CRC错误或FCS错误说明物理层信号质量差。抓包工具里看到的“坏帧”往往根因在这里。信号强度与SNR数值无线设备的管理界面通常能看到每个客户端的信噪比。SNR低于20dB基本告别高速率低于10dB则连接本身就岌岌可危。我自己踩过的一个经典坑是一根网线表面看着完好但水晶头压接时有一根线没压到底导致百兆能通、千兆完全协商不上。因为千兆以太网1000Base-T使用四对线双向传输任何一对线的信号质量不达标整条链路就会降级。这从物理层角度非常好解释千兆对信噪比、串扰和阻抗匹配的要求比百兆高一个量级轻微接触不良在百兆时还能忍到千兆就直接崩了。所以遇到“千兆协商不上”的问题别急着怀疑交换机先换一根厂线试试。5.3 从物理层角度看“为什么双绞线要绞成对”再分享一个和布线相关的知识点双绞线为什么叫“双绞”因为两根平行线之间会产生电容耦合外部电磁干扰也会在两根线上产生共模噪声。把两根线绞合能让两根线受到的干扰“平均化”再配合差分接收接收端测两根线的电压差就能大幅抵消共模干扰。这个原理也解释了为什么高质量网线对绞距有严格工艺要求不同线对的绞距要略有差异否则四对线之间的串扰会叠加共振。如果山寨线的绞距不均匀串扰指标就会很差表现出来就是短距离能通、稍微拉长线就丢包或者高速协商失败。顺带说一句高速信号接口的设计里差分信号和阻抗连续性是教科书级的关键词。你在画PCB时如果遇到“高速信号无法高亮相同信号网络”的困扰多半是同一差分对的网络命名或约束设置出了问题。想看高速信号的测试值示波器测眼图和TDR测阻抗是基本功。这些都是物理层原理在硬件工程里的延伸应用。写在最后一段学习上的个人体会我最初学物理层是抱着“赶紧跳到TCP/IP”的心态去的觉得这些电信号、编码、公式跟日常做网络运维、做应用开发关系不大。直到后来排查一个“千兆协商不上”的现场故障换了三根网线才意识到不懂物理层连理解“为什么千兆比百兆更挑线”都做不到。经过这些年在网络、硬件、嵌入式各个方向的反复回炉我的体会是物理层是计网里最不性感但最底层的知识。编码和信道容量看似脱离实战但千兆交换机选型、无线AP布点、高速线缆设计处处都是它们的影子。学习的时候别急着跳过公式推导把“奈奎斯特管码元速率、香农管信息速率、编码管同步与DC平衡”这三件事钉在脑子里后面不管是看协议文档还是排障都会顺畅得多。下一篇进入数据链路层我们会看到物理层辛辛苦苦传上来的一组组比特是怎么被封装成帧、加错校验、再用MAC地址寻址的。到时候你会发现自己能真正把每一层串成一条完整的链路去理解。
返回列表