学计网最容易被跳过、也最容易被低估的,就是物理层。很多人觉得它不过是一个网线接口、一个波形图、几个编码规则,背一背就过了。但等真正开始做项目、排查线上通信故障、或者面试被问到“为什么曼彻斯特编码在高速以太网里消失”“香农公式里信噪比为什么用dB表示”这类问题时,才反应过来,物理层那些看似基础的知识,恰恰是整个网络体系里最难糊弄过去的一环。
这篇东西把我的物理层学习笔记和实际排障经验揉在一起写,从通信模型、传输介质、编码调制、速率极限、信道复用到宽带接入和物理层设备,最后再聊聊工程里很常见的CAN物理层测试,以及面试八股文容易踩的坑。不管你是刚准备期末考试的在校生、在准备秋招的应届生,还是已经工作但想补一下底子的工程师,这篇内容都能直接当参考手册用,遇到不熟的点可以翻到对应小节,按图索骥。
1. 物理层到底在解决什么问题——先建立整体框架
1.1 数据通信模型拆解:一个消息从信源到信宿要走的路
学物理层之前,先搞清楚它在整个网络体系里扮演什么角色。计网的分层体系里,物理层是最底下一层,它的任务用一句话说就是:把上层交给它的比特流,变成适合在传输介质上传输的信号,然后在接收端再把这些信号还原成比特流。注意,它不管这些比特组成的帧是什么含义,那是数据链路层的事。
这里就要引入一个通信领域非常经典的基本模型。任何一次数据通信,本质上都离不开五个要素:信源、变换器、信道、变换器、信宿,外加一个永远存在的噪声源。
信源就是产生数据的设备,比如你的电脑;信宿就是接收数据的设备,比如服务器。但信源产生的原始数据通常是数字信号,也就是0和1构成的电脉冲,而信道里传输的介质(比如电话线、光纤)往往不能直接承载这种原始信号,中间就需要一个变换器来完成“数据到信号”的转换。光纤通信里这个变换器是光模块,把电信号转成光信号;电话线上网里这个变换器是调制解调器,把数字信号调制成适合电话线传输的模拟信号。到了接收端,再做一次反向变换。
噪声源是永远避不开的。信号在信道里传播,会受到各种电磁干扰、热噪声、串扰的影响,导致波形变形、幅度衰减,最终可能出现误码。物理层的很多设计,比如编码方式的选择、调制技术的改进、中继器的使用,本质上都是在和噪声作斗争。理解了这五个要素,再去学后面的编码、调制、复用,思路会清晰很多。
1.2 物理层关心哪些具体问题
物理层的职责不是简单把信号发出去就完了,它需要解决的是一整套工程问题,归纳起来主要是这么几类:
接口特性。物理层要定义设备之间怎么连接,包括机械特性(接口的形状、引脚数量)、电气特性(电压范围、信号电平)、功能特性(每个引脚做什么用)和规程特性(怎么按顺序建立连接)。比如我们最常见的RJ45网线接口,八根引脚里哪几根负责发送、哪几根负责接收、电压阈值是多少,都由物理层规范定义。
传输介质。信号走什么介质,是双绞线、同轴电缆、光纤还是无线信道,不同介质的特性差别很大,直接影响传输速率和距离。
编码与调制。数字信号怎么变成适合信道传输的形态,是直接用高低电平表示0和1(基带传输),还是调制到高频载波上(频带传输),这是物理层的核心决策。
同步方式。接收端怎么知道一个比特从哪里开始、到哪里结束。同步做不好,发送端发一串1010,接收端可能错位读成0101,整个数据就全乱了。曼彻斯特编码的一个好处就是自带同步信息,后面会细说。
多路复用。一条物理链路怎么同时传输多路信号,频分、时分、波分、码分都是物理层要解决的。
传输模式。单工、半双工、全双工的选择,也属于物理层的范畴。
所以你看,虽然物理层不产生什么“协议报头”,但它在底层撑起了整个网络的物理世界。没有物理层,上面的MAC地址、IP地址、TCP端口全都没有容器可以承载。
2. 通信方式与传输介质:这些底层选择决定上层能跑多远
2.1 单工、半双工与全双工:一条链路能同时说几句话
通信方式按照信息传输方向,可以分成三种模式,这个知识点虽然简单,但在实际工程里常常是配置错误的重灾区。
单工通信就是数据只能往一个方向传,接收端只能收不能发。典型的例子是广播电台,电台发射信号,收音机只能接收。在计算机网络里,单工场景相对少见,但一些传感器数据采集链路会用到。
半双工通信是双方都能发也能收,但不能同时进行,同一时刻只能有一方在发。最典型的例子是对讲机,按下PTT键说话时收不到对方声音,松开才能听。早期的以太网采用CSMA/CD机制,本质上就是半双工模式,同一根线上大家抢着发,冲突了就退避重传。现在用交换机的全双工链路已经很少见到CSMA/CD了,但理解半双工有助于理解为什么早期以太网有冲突域这个概念。
全双工通信是双方可以同时发送和接收,比如电话,两边可以同时说话。现代以太网在两对双绞线分别承担发送和接收任务,天然支持全双工,这也是交换机能实现高速转发的物理基础。
这几种模式可以用一个简单类比:单工像单向车道,半双工像一条很窄的独木桥,只能轮流过;全双工像双向两车道,两个方向互不干扰。选错了模式,轻则性能下降,重则直接通信失败。比如有些现场设备明明支持全双工,但因为配置问题被设成了半双工,就会出现速率掉一半、时延抖动变大的怪现象。
2.2 传输介质选型:双绞线、同轴电缆、光纤怎么选
传输介质是物理层最“看得见摸得着”的部分,也是组网时首先要做出的决策。三种主流有线介质各有利弊,我按实际工程里的选型逻辑讲。
双绞线是目前局域网里最普及的介质,便宜、易施工、接口标准统一。它把两根绝缘铜导线按一定密度绞合在一起,这样做不是为了好看,而是为了抵消电磁干扰。两根平行导线会像天线一样接收外部噪声,绞合起来之后,每根导线受到的干扰信号相位相反,在接收端一相减干扰就被抵消了。双绞线分屏蔽(STP)和非屏蔽(UTP)两种,屏蔽层能进一步抗干扰,但施工时接地要求高,接不好反而会引入共模干扰,家用和普通办公环境用UTP就够了。
同轴电缆由内导体、绝缘层、外屏蔽层和外护套构成,外层的金属编织网能有效屏蔽干扰,所以它的带宽和抗干扰能力都比双绞线强。以前很流行的“有线电视线”就是同轴电缆。在早期以太网里,粗缆和细缆都曾是骨干传输介质,但现在除了有线电视接入网(HFC)和一些工业场景,同轴电缆在局域网里基本已经退居二线了。
光纤则是目前远距离、高速率传输的王者。它的核心是石英玻璃纤芯,利用全反射原理传导光信号,所以光纤本身不导电,天然免疫电磁干扰,还能提供非常高的带宽和极长的传输距离。光纤分单模和多模两种:单模光纤纤芯很细(通常9/125μm),只允许一种模式的光直线传播,色散小,适合长距离和高速率;多模光纤纤芯粗(常见50/125μm、62.5/125μm),允许多种模式的光反射传播,成本低,但传输距离受限。选单模还是多模,一句话就是:几十米到几百米,多模配光模块便宜;几公里以上,老老实实单模。
实际工程里我个人的选型原则是:设备间跳线、机柜内互联、办公楼层接入,优先用六类双绞线;楼宇之间、跨园区、数据中心骨干,用单模光纤加光模块;短期临时布线且环境干净,可以考虑无线。这里顺便提醒一句,很多新手会把光纤和光模块的接口类型搞混,什么LC、SC、ST、FC,连带着单模多模跳线颜色也分不清,这个后面在常见问题里再细说。
2.3 双绞线线序:直通线、交叉线是怎么一回事
双绞线的八根线芯是有严格线序标准的,但很多做应用层开发的程序员一辈子都没亲手做过一根网线。如果搞硬件、搞组网,做水晶头就是基本生存技能。
EIA/TIA定义了两个标准线序。T568A的线序是:绿白、绿、橙白、蓝、蓝白、橙、棕白、棕;T568B把橙和绿两组互换,线序是:橙白、橙、绿白、蓝、蓝白、绿、棕白、棕。现在绝大多数工程都用T568B。
但真正容易让人绕晕的是直通线和交叉线的选择逻辑。同种设备互联用交叉线,异种设备互联用直通线。电脑和电脑直连是“同种设备”,需要交叉线,让一端的发送引脚对另一端的接收引脚;电脑和交换机互联是“异种设备”,用直通线就行。后来千兆以太网的自动翻转功能(Auto MDI-X)已经很普及,交换机和网卡能自动协商收发引脚,所以很多时候随手一根线就能通。但我在现场遇到过老旧设备不支持自动协商的情况,这时候还是老老实实按线序做交叉线才能解决问题。
万兆网络对线缆的工艺要求更高,我建议直接购买成品的六类或超六类跳线,不要在施工现场手做水晶头,因为手工压制很难保证内部绞距和串扰指标,还不如成品线稳定。
3. 编码与调制:把“01”变成看得见的信号
3.1 数字信号编码:曼彻斯特编码为什么能自带时钟
编码这节是物理层学习里第一个真正需要“转脑子”的地方。所谓编码,指的是用不同的电压或电平变化来表示数字比特0和1。最基本的几种编码方式,我建议用一个表放在脑海里反复对比:
| 编码方式 | 表示方法 | 自带时钟 | 实际应用 |
|---|---|---|---|
| 不归零编码(NRZ) | 高电平表示1,低电平表示0 | 无,连续长串0或1时无法区分 | 早期低速串口,高速链路很少直接用 |
| 归零编码(RZ) | 每个码元中间电平回归0,1用正向脉冲表示,0用负向脉冲 | 有,但信号占用带宽大 | 很少单独使用 |
| 曼彻斯特编码 | 每个码元中间有一次跳变,从高到低表示1,从低到高表示0(或以约定为准) | 有,跳变即时钟 | 10BASE-T以太网 |
| 差分曼彻斯特编码 | 每个码元中间必有跳变,码元开始处有跳变表示0,无跳变表示1 | 有 | 令牌环网 |
不归零编码(NRZ)的问题在于,如果发送一串连续的长1或长0,接收端无法判断这到底是一个比特还是很多个比特,因为电平一直保持不变,没有变化来“打拍子”。为了让收发双方同步,就需要额外的时钟线,或者采用自带时钟的编码方案。
曼彻斯特编码就是解决方案之一:它在每个码元的中间时刻必定有一次电平跳变,这个跳变既用来表示数据(比如从高到低为1),又充当了时钟信号,接收端可以从中提取同步时钟。这样就不用单独传输时钟了。代价是带宽占用翻倍:一个比特要用两个电平状态来表示,波特率是比特率的两倍。所以在10M以太网时代,虽然物理线路上的码元速率是20M波特,但实际有效数据率只有10Mbps。到了100M、千兆以太网,曼彻斯特编码的带宽开销实在太大,就被8B/10B这类线路编码取代了。
这里还得强化一个概念,就是码元、波特率、比特率三者的关系。码元是承载信息的最小信号单元,波特率是每秒传输的码元数量,比特率是每秒传输的比特数。如果每个码元只表示1比特信息,波特率等于比特率;如果每个码元能表示2比特(比如四种电平),那么在不增加码元速率的情况下比特率就能翻倍。公式就是:比特率 = 波特率 × log2(码元状态数)。物理层做各种调制、编码优化,核心思路之一就是在码元速率不变的前提下,让每个码元携带更多比特。
3.2 数字信号调成模拟信号:ASK、FSK、PSK、QAM
数字信号可以直接在信道里传输,这叫基带传输,适合距离比较短、带宽充裕的场景,比如局域网里的双绞线。但远距离传输,比如通过电话线、无线信道传输,基带信号衰减太快,直接发很难走远,这时候就要把数字信号“搬到”高频载波上去,这叫频带传输,也就是调制。
调制的基本思路是让高频正弦波的某个参数随数字信号变化。幅度键控(ASK)用载波幅度的有无或大小表示0和1,实现简单,但抗干扰能力差,一点点噪声就可能让幅度判断出错;频移键控(FSK)用不同频率表示0和1,抗干扰能力比ASK强,在低速调制解调器和一些工业无线协议里还在用;相移键控(PSK)用载波相位的变化表示数据,抗干扰能力更好,比如最简单的BPSK是用0度和180度两种相位来区分0和1,QPSK则用四种相位表示两个比特。
更有意思的是正交振幅调制(QAM),它把幅度调制和相位调制结合起来。比如16-QAM,有4种幅度和4种相位组合出16个状态,每个码元就能携带4比特信息;256-QAM每个码元能带8比特。宽带通信里很常见的说法“这条线路上跑的是64QAM还是256QAM”,说的就是这种调制阶数。阶数越高,频谱利用率越高,但对信噪比的要求也越高,信号质量稍差就会误码。所以无线通信里有自适应调制编码(AMC),信号好的时候用256QAM冲高速率,信号差的时候退到QPSK保连接,这个思想贯穿整个通信系统设计。
3.3 为什么高速以太网不再用曼彻斯特编码:8B/10B线路编码
前面说到曼彻斯特编码带宽开销大,那千兆以太网用什么编码呢?答案是8B/10B编码。它的原理也直接写进名字里:把每8比特数据扩展成10比特的线路码再发送。
为什么要这么做?第一个理由是保证直流平衡。8B/10B编码在映射时,会尽量保证一个码组里0和1的数量接近,避免信号电平长时间偏向高或低,这对接收端的判决门限和电容耦合都很重要。第二个理由是保证足够的跳变密度,让接收端能从数据流中提取时钟。第三个理由是提供错误检测能力,当接收端收到的码组不在合法映射表里,就知道传输过程出错了。
它和曼彻斯特编码的本质区别在于,曼彻斯特是用2个电平状态表示1个比特信息,而8B/10B是用10个线路符号承载8个信息比特,额外开销只有25%;如果只考虑有效数据速率,8B/10B比曼彻斯特码的效率高得多,所以从千兆光口到PCIe、USB 3.0、SATA这些高速串行总线,8B/10B及它的变体几乎成了事实标准。
这里给个实战层面的提醒:当你抓包看到链路层错误特别多、CRC校验失败频发时,别急着怀疑协议栈和程序逻辑,先用示波器看看眼图,检查信号质量和线路编码是否正常。很多七层以上的诡异 Bug,最后的根因都在物理层编码和解码环节。
4. 速率上限怎么算:奈氏准则与香农公式
4.1 奈氏准则:无噪声信道,码元速率也不是无限大
物理层学习绕不开两道经典的速率极限公式,一个是奈氏准则,一个是香农公式。八股文和笔试面试里这两个公式是常年重点,但很多人只会背公式不懂物理意义。
首先是奈氏准则,也叫奈奎斯特定理。它在1920年代就提出了,核心结论是:在一个带宽为W(单位Hz)的理想无噪声低通信道里,码元的传输速率存在上限,最高为2W码元/秒。也就是说,信道带宽决定了码元速率的上限,你不可能把码元速率无限提高,因为信道带宽有限,信号变化太快就会超出信道响应能力,导致相邻码元互相干扰,这就是码间串扰。
奈氏准则给出的极限传输速率是C = 2W × log2(V),其中V是码元能取的电平状态数(幅度、相位、频率的变化组合)。举个例子:如果一个信道的带宽是3kHz,采用4种振幅的码元,那么最高码元速率是2×3000=6000波特,每个码元携带log2(4)=2比特,最大数据传输率就是6000×2=12000bps,也就是12kbps。这个结论揭示了带宽、码元状态数、比特率三者之间的制约关系,也是后面理解各种高阶调制技术的落脚点。
4.2 香农公式:有噪声信道的真实容量天花板
奈氏准则描述的是理想无噪声信道,现实世界显然不是这样。香农公式就进一步把噪声考虑进来,给出了信道容量的真正上限:
C = W × log2(1 + S/N)
其中W是信道带宽(Hz),S是信号平均功率,N是噪声平均功率,S/N就是信噪比。需要特别注意的是,信噪比通常用分贝(dB)表示,而计算时必须换算回线性值。换算公式是:S/N(dB) = 10 × log10(线性值),所以30dB的信噪比对应线性S/N = 1000,不是30。
我们算一道典型题:带宽3kHz,信噪比30dB,信道容量的理论极限是C = 3000 × log2(1 + 1000) ≈ 3000 × 9.97 ≈ 29910bps,约30kbps。这个结果是“信道能力”的天花板,不管用什么编码调制技术都不可能超过它,因为香农从信息论层面证明了这一点。
奈氏准则和香农公式并不矛盾,它们限定的条件不同。奈氏准则是无噪声情况下对码元速率的限制,它说明即使信号无比干净,带宽也会限制码元“翻转”的速度;香农公式则是在噪声环境下对信息速率的限制,它说明有了噪声,每个码元能承载的比特数也不是无限大的。做题的时候,如果题目给了带宽和信噪比,用香农公式;给了带宽和码元状态数,用奈氏准则;如果两个条件都给了,分别算,结果取较小值作为实际可达到的速率。
4.3 笔试面试常见坑点:dB换算和公式选择
这里专门把两道公式的常见误区写出来,面试和笔试里几乎必考。
第一个坑是信噪比单位。题目说信噪比是30dB,很多人直接代进公式变成log2(31),结果算出来和正确答案差一个数量级。记住先换算:30dB → 线性1000。如果是10dB → 10;20dB → 100。这个换算练熟了,计算速度能快很多。
第二个坑是奈氏准则里的“码元状态数”。题目可能用“四相位调制”“十六种电平”“QAM256”这类说法描述V的取值。四相位调制就是V=4,每种状态携带2比特;十六电平就是V=16,每种状态携带4比特。看到“QAM256”就是V=256,每种状态携带8比特。不要看到数字就慌,本质上是考你每个码元带几个bit。
第三个坑是带宽的表示方式。有的题给的是“低通信道的频率范围是0~3kHz”,这时的带宽W就是3kHz;有的题给的是“带通信道的频率范围是10MHz~12MHz”,带宽W是2MHz,奈氏准则里要用带宽差值,不是中心频率。
5. 多路共享信道:频分、时分、波分、码分复用技术
5.1 频分复用与时分复用:资源怎么分,决定了效率
一条物理链路往往要同时传送多路信号,如果每路信号单独拉一条线,成本不可接受。复用技术就是解决这个问题的。
频分复用(FDM)的思路是划频率。把信道带宽分割成多个互不重叠的子频段,每路信号占用其中一个子频段,同时发送。最典型的例子是有线电视,一根同轴电缆上同时传上百套电视节目,每套节目对应一个不同的频率频道,接收端靠选频器挑出要看的那个频道。FDM的优点是各路信号同时进行、实时性好;缺点是需要预留保护频带,频带利用率不是100%,而且模拟电路实现成本偏高。
时分复用(TDM)的思路是划时间。把时间分成一个个固定的时隙,各路信号轮流占用一个时隙。比如有4路信号,就每帧分4个时隙,第1路占第1个时隙,第2路占第2个时隙,这样循环。TDM在数字通信里用得非常普遍,因为数字信号天然适合按时间片调度。它的问题在于,即使某一路没有数据要发,它的时隙也空着,白白浪费带宽。
5.2 统计时分复用:把空闲时隙让给真正有数据的人
针对TDM的浪费问题,出现了统计时分复用(STDM),也叫异步时分复用。它的做法是不再固定分配时隙,而是根据各路的实际数据量动态分配。哪一路数据多,就给它分配更多时隙;没有数据就跳过,把时隙让给别人。这就是“统计”二字的意义,本质是带宽的动态共享。
打个比方:固定TDM就像一条公交线路按固定时刻表发车,不管有没有乘客都准时发;统计时分复用就像拼车软件,根据乘客的实时需求动态调度车辆,空驶率大幅降低。实际网络里的分组交换在链路资源复用上,思想就来自统计时分复用,数据包“占空比”低的场景效率提升非常明显。
5.3 波分复用与码分复用:光的“频道”和码片的“任期”
波分复用(WDM)是光纤通信里的频分复用。它把不同波长的光信号复用在一根光纤里传输,每一路光使用一个不同的波长(颜色),接收端再按波长分离开。现在数据中心和骨干网里,一根光纤传几十上百个波长,每个波长跑100G甚至400G,总容量能到几十Tbps,靠的就是密集波分复用(DWDM)。
码分复用(CDM/CDMA)则是另一种思路,它不划分频率,也不划分时间,而是让所有用户在同一频率、同一时间通信,靠不同的正交码片来区分。每个用户分配一个唯一的码片序列(m bit序列),发送0时发送该序列的相反数,发送1时发送原码。接收端用发送方的码片序列做内积运算,就能从混合信号里恢复出该用户的数据,而其他用户的信号因为码片正交,内积结果为零。
CDMA这个东西,面试里常考一个计算题:一个站点S的码片序列是(+1 -1 +1 -1 +1 -1 +1 -1),接收端收到的叠加信号组合是若干码片的线性叠加,让求S发送的比特。方法是把收到的向量和S的码片逐位相乘再求和,再除以码片长度m,结果大于0就是1,小于0就是0。这个计算题不算难,但它背后的思想——用正交码实现多路复用——是无线通信的核心。
6. 宽带接入技术:从ADSL到FTTH
6.1 ADSL:一条电话线怎么做到打电话上网互不干扰
宽带接入是把用户设备连接到运营商的接入网,物理层的接入技术也有很多变化。曾经统治家庭上网多年的ADSL(非对称数字用户线路),就是一个很典型的物理层应用案例。
ADSL利用的是现有的电话双绞线,在频率上用FDM把同一根电话线划分出三个频段:最低频段(0~4kHz)留作传统电话语音;中间频段用于上行数据;高频段用于下行数据。因为大多数用户的下载量远大于上传量,所以上行和下行带宽不对称,这也是“非对称”的来源。普通用户在电话线上上网时,拨号音和上网信号互不干扰,靠的就是频分复用把语音和数据的通道彻底分开。
另外一个知识点是,ADSL要能工作,必须在一端(用户家)和另一端(局端)各装一个分离器和ADSL调制解调器。分离器负责把语音信号和高频数据信号分离开;调制解调器负责把数字信号调制到高频频段,或者解调回来。这段可以看作是物理层“变换器”在实际系统中的具象化。
6.2 FTTx和PON:光纤到户背后的物理层逻辑
随着视频4K/8K、云游戏的普及,ADSL那点带宽早就扛不住了,光纤接入成了绝对主流。FTTx,包括FTTH(光纤到户)、FTTB(光纤到楼)等,核心是PON(无源光网络)技术。
PON架构里,从运营商中心局(OLT)出来的光信号,经过一根主干光纤,到达用户附近的分光器,再由分光器把光信号分到各家的光猫(ONU/ONT)。这里最难理解的是,一根光纤怎么既能承载下行数据,又能承载上行数据?实际上PON用到了两个复用思想:下行是用广播方式,OLT依次给每家发数据帧,每个ONU只接收属于自己的帧;上行因为分光器是无源的,各ONU不能同时发,必须分时发送,这用的就是时分复用的思想,由OLT统一分配上行时隙,避免冲突。
FTTH用户感知到的最大提升不只是带宽,还有时延和稳定性。铜线在电话线里抗干扰弱,光纤从根本上杜绝了电磁干扰问题,而且媒体是光而不是电,不存在串扰。这也是为什么我看到很多做线上诊断的工程师,一遇到用户网络抖动严重,第一反应是建议检查光衰,“光功率”数值是否在合理范围。物理层的光链路劣化,上层任何调优都救不回来。
7. 物理层设备:中继器和集线器的边界
7.1 中继器:信号再生,不是简单放大
信号在传输介质上走远了会衰减、会变形,噪声会被叠加进来。为了延长传输距离,就需要中继器(Repeater)在中间把信号恢复成标准形态再继续发。注意,中继器做的事是“再生”,不是“放大”。
这里有个很多人忽略的细节:单纯放大是连噪声一起放大,放大N次后噪声会不断累积,最终把有用信号淹没。而中继器做的是先从已失真的信号里识别出原始比特(0还是1),然后用一个干净的、标准幅度的信号重新发出去。也就是说,“1”还是那个“1”,“0”还是那个“0”,但波形被重新画了一遍,噪声被甩掉了。高保真音响里的“级联放大器”噪声会呈指数增加,而数字中继器可以让信号在理想情况下无噪地跨过很长距离,这就是数字通信比模拟通信更稳的一个根本原因。
7.2 集线器:内核就是多端口的中继器
集线器(Hub)可以理解成多端口的中继器,它工作在物理层。集线器接收到一个端口发来的信号,不判断数据要发到哪,就把这个信号整形后从其他所有端口广播出去。所有连在集线器上的设备,处在同一个冲突域里——同一时刻只能有一个设备发送数据,否则就会冲突。
所以集线器连接的网络,实际可用带宽是所有设备共享的,而且设备越多,冲突概率越大,效率越低。和它形成对比的是交换机(工作在数据链路层),交换机会解析MAC地址,能隔离冲突域,每个端口独享带宽。现在集线器已经基本被交换机淘汰,但理解集线器“物理层设备不识别数据含义、只能转发电信号”的特征,有助于理解分层设计的边界。面试里如果问“集线器和交换机有什么区别”,别只答“端口数不一样”,要答到“集线器是物理层设备,工作冲突域;交换机是数据链路层设备,能隔离冲突域、识别MAC地址”这个层面。
8. 从八股文到工程实务:CAN物理层测试是怎么一回事
8.1 CAN物理层的基本形态和服务于协议栈的底层保障
聊完一堆课本知识,来聊一个工控和嵌入式领域非常务实的场景——CAN物理层测试。很多做嵌入式、汽车电子、工业控制的读者应该对CAN总线不陌生。CAN总线虽然底层也是物理层,但在报文格式、CSMA/CA访问机制上都和以太网不同。这里我不展开CAN协议栈,只讨论它的物理层测试。
CAN总线的物理层用的是差分电压传输,两条线分别叫CAN_H和CAN_L。显性电平(逻辑0)是CAN_H电压比CAN_L高,压差一般在2V左右;隐性电平(逻辑1)是两条线都接近2.5V,压差接近0。差分传输的好处是抗共模干扰能力强,两条线的噪声同时变化时,接收端只关心差值,所以汽车这种电磁环境恶劣的场景选择CAN是有道理的。
总线两端各需要接一个120欧姆终端电阻,这是为了匹配传输线阻抗,避免信号在总线末端发生反射,导致波形振铃、通信误码。这里有个常见坑:如果总线上只接了一个终端电阻,甚至忘了接,示波器看波形能看到上升沿和下降沿有很明显的过冲。如果接了两个电阻,还有严重毛刺,那要查是不是总线拓扑有问题(比如分了多路支线太长)。
8.2 现场物理层测试的几个常见项目和仪器操作
实际做CAN物理层测试,一般会用到示波器和CAN分析仪。常用的测试项目大概有这些:
波特率测量。用示波器抓取CAN_H对地或CAN_L对地的波形,量一个显性位的宽度,再乘以位时间对应的比特数,就能反推出波特率。这个方法很适合现场“猜”对方总线波特率,比如老设备上电后不知道通信速率,抓波形量位宽最直接。
差分信号电压测量。正常显性电平差分电压应在1.5V~3.0V之间,隐性电平应接近0V。如果显性电平太低或隐性电平不为0,接收端就可能误判。我就遇到过由于CAN收发器损坏,导致隐性电压被拉到1.2V的,整条总线上的节点全在报错。
线束短路测试。分别短接CAN_H和CAN_L对电源正、对地,看总线是否进入保护状态、通信是否中断。这会间接暴露硬件设计上有没有做好总线保护。
信号完整性测试。看波形上升沿、下降沿、过冲、振铃。支线过长、节点过多、终端电阻不对都会在波形上留下痕迹。
这些测试看起来没有高深理论,但非常能检验对物理层本质的理解。很多软件侧的“总线通信偶发超时”难题,查到最后都是物理层波形有问题,比如节点距离过远导致信号衰减超阈值、或者屏蔽层接地不当引入噪声。碰到这类问题,我会建议先抓CAN_H与CAN_L的波形,把物理层的电压、时序、拓扑都拿数据说话,再动手改上层代码。
8.3 为什么物理层测试经验值得积累
做过一段时间CAN或者工业总线相关项目之后,我越来越觉得物理层知识不是“底层搬砖工”才需要的,它对排障效率的提升是立竿见影的。应用层的工程师看到的是报文、超时、重传,但很多“玄学问题”的真正根因都在物理层。比如CRC错误帧在统计上突然变多,可能只是总线端子氧化导致接触电阻变大;报文偶尔丢失,可能只是某个节点的CAN收发器共模电压异常。
这些问题的排查,首先要懂物理层,知道差分信号、终端电阻、接线拓扑、接地这些概念。其次要会用示波器、万用表这类物理层仪器,不要把排障手段局限在抓包和分析仪里。最后,要懂得把物理层表现和上层症状关联起来:波形眼图变差、电压余量不足,对应上层就是丢包率升高,这样的“跨层联调”能力,是很多高级工程师的看家本领。
9. 高频面试考点与避坑指南:八股文速查表
9.1 物理层高频考点一览
这边把面试里最常被问到的物理层考点按“知识点-常见陷阱-结论”整理成一张速查表,方便你能在面试前快速过一遍:
| 考点 | 常见陷阱 | 一句话结论 |
|---|---|---|
| 奈氏准则 | 忽略带宽与码元状态数不匹配 | 无噪声信道,码元速率上限2W,比特率上限2Wlog2(V) |
| 香农公式 | 信噪比dB直接用 | 先换算线性值,C=Wlog2(1+S/N) |
| 曼彻斯特编码 | 认为比特率等于波特率 | 波特率是比特率的2倍,自带同步,带宽开销大 |
| 8B/10B编码 | 和曼彻斯特编码混淆 | 用10个线路符号承载8bit,效率高,直流平衡好 |
| 单工/半双工/全双工 | 把半双工和全双工场景记混 | 对讲机半双工,电话全双工 |
| 集线器和交换机 | 以为都是链路层设备 | 集线器物理层,交换机数据链路层,冲突域划分不同 |
| 中继器 | 以为中继器是放大信号 | 中继器是再生信号,能消除噪声积累 |
| 双绞线 | 不知道为什么要绞合 | 绞合抵消电磁干扰,屏蔽层需要正确接地 |
| 光纤单模/多模 | 记反两种光纤的特性 | 单模纤芯细、传得远;多模纤芯粗、成本低 |
| 频分/时分/波分/码分 | 混淆四种复用的划分维度 | FDM分频率、TDM分时间、WDM分波长、CDM分码片 |
| T568A/T568B | 忘记线序和直通/交叉逻辑 | 同种设备用交叉线,异种设备用直通线 |
这张表背熟了,基本就能应付大部分物理层概念题。但真正拉开差距的,往往是“为什么”的深度。
9.2 面试里怎么回答“为什么”类问题
面试官如果问“为什么以太网早期用曼彻斯特编码,高速时代反而不用了”,不要只答“因为带宽开销大”。比较好的回答路径是:先肯定曼彻斯特编码的同步优势,再指出它用2个符号表示1bit、波特率是比特率两倍的代价,最后落到速率提升时,同样的开销会让线速率翻倍,成本太高,因而被8B/10B等更高效率的线路编码替代。这样的回答有对比、有演进逻辑,比死背书强得多。
同样,问“为什么光纤比双绞线更适合长距离传输”,要答到三层:一是损耗低,单模光纤每公里损耗在0.2dB级别,双绞线在百米级别就衰减严重;二是抗电磁干扰能力强,光纤是绝缘介质,不受雷电、电机串扰影响;三是带宽潜力大,单模光纤的理论带宽远超铜缆。这种“从物理机理到工程影响”的层层推进,是面试官很愿意听到的答题结构。
9.3 学习物理层的几个实用方法
最后分享一下我当年学物理层的一些体会。
第一,把公式和物理意义绑在一起记。奈氏准则限制的是码元速率,香农公式限制的是信息速率,这两者的区别理解透了,光这一块就能比很多人强。别只背C=2Wlog2V,要问自己为什么是2W,为什么是对数关系。
第二,用实际的网线和示波器做一次实验。没有啥比在示波器上看到曼彻斯特波形的跳变更直观了。找个10M以太网设备或者古老的板卡,抓一下线上的波形,比看十篇文章都记得牢。如果真的没有老设备,用函数发生器自己发数据让它编码也行。
第三,带着排障思维去看物理层。读到双绞线的绞距、终端电阻、压摆率这类参数时,想一想它们服务于什么工程目标。这样学到的知识不是孤立点,而是串起来的一根线,以后排查问题时能自然想到“这个现象可能指向哪个物理层原因”。
我个人在实际工作里最深的感受是,物理层的知识在最开始学的时候显得琐碎、陈旧、没成就感,但等到处理过几回“上层查不出原因、底层一测就露馅”的疑难杂症之后,就会感激当年认真学过的编码、复用和传输介质。这些底层的朴素原理,永远是整个网络世界里最坚固的那块地基。