1. 从七层模型说起:物理层为什么值得单独抠开来看
我早期带新人时经常遇到一个现象:大家背OSI七层模型背得滚瓜烂熟,“物理层、数据链路层、网络层……”倒着背都不会错。但一进机房,拿着测线仪测链路,或者抓包看到一堆CRC错误,就完全不知道问题出在哪一层了。原因很简单——我们对物理层的理解大多停留在概念层面,没有真正搞清楚它到底“管什么、怎么管、管到哪”。
OSI参考模型是国际标准化组织提出的网络互联参考模型,它把网络通信拆成七个层次。而物理层,正是这个模型里的第一层,也是最容易被轻视的一层。很多人觉得物理层就是“网线、水晶头、信号”,没什么技术含量。但实际项目里,物理层出的问题往往最隐蔽、最难查:网线看起来没问题,但传输距离一长就丢包;光纤接口明明亮着灯,可链路就是不up;设备都支持千兆,协商出来却只有百兆。这些现象的根子,全在物理层。
所以这篇我想好好聊聊物理层的真实面貌:它到底干什么、编码机制是怎么回事、介质和接口怎么选、和上面一层怎么交接,以及排障时怎么判断问题是不是出在物理层。内容尽量贴近实际工程场景,适合刚入门网络的人建立体系,也适合干了两三年但一直没把底层机理吃透的同行查漏补缺。
另外,搜“参考模型”时经常有人把OSI和国际博物馆协会那个概念参考模型(CIDOC CRM)搞混,后者是文化遗产领域的知识组织模型,跟网络八竿子打不着。我们在网络语境下说的参考模型,默认就是OSI七层模型。先把这层窗户纸捅破,后面聊起来才不会跑偏。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 物理层的核心职责:看似“笨拙”,实则边界极其清晰
2.1 物理层的三大任务:透明传比特、定义接口、提供物理通路
物理层的定位,一句话就能概括:在物理传输介质上实现比特流的透明传输。这里的“透明”不是指看得见,而是指上层不用关心比特流是怎么变成电信号或光信号的,也不关心线缆是铜的还是玻璃的,只要把0和1交下去,物理层就能把它们送到对端。
拆开来看,物理层具体干三件事:
- 提供物理通路:通过网线、光纤、无线信道等传输介质,为数据在设备之间建立一条物理连接。这条通路要能建立、保持、最后释放。
- 传输比特流:把上层交下来的数据逐比特地转换成适合介质传输的信号,发送出去;对端收到信号后再还原成比特流。这个过程涉及编码、调制、同步等一系列动作。
- 定义接口标准:明确设备与传输介质之间的机械特性和电气特性,比如接口长什么样、引脚数量多少、电压电平多高、信号时序怎么对齐。
在OSI参考模型里,物理层是唯一直接与传输介质打交道的层次。数据链路层及以上各层都不直接接触物理介质,它们都是通过物理层来完成实际信号收发的。
2.2 物理层的四个特性:机械、电气、功能、过程
如果翻IEEE或ITU-T的物理层协议文档,会发现它们都在规定四个维度的特性。这四个特性就是物理层设计的完整框架:
- 机械特性:接口的形状、尺寸、引脚数量、排列方式。比如RJ45的8针结构、LC光纤连接器的卡口设计,都属于机械特性范畴。
- 电气特性:信号的电压范围、阻抗匹配、传输速率、编码方式。比如100Base-TX使用MLT-3编码,信号电平在+1V、0V、-1V之间跳变。
- 功能特性:每个引脚的名称和功能定义。RJ45里1、2引脚是发送,3、6引脚是接收,这就是功能特性。
- 过程特性:引脚信号如何按时间顺序建立、维持、释放连接。比如网线插上后,链路协商的时序过程。
这四个特性合在一起,才构成一个完整的物理层标准。这也是为什么我们常说物理层是“硬件和软件的交界处”——机械和电气归硬件管,功能和过程的逻辑部分则往往由芯片内部的物理层协议逻辑来实现。
2.3 物理层不管什么:一个容易被忽略的边界
物理层只负责比特的“搬运”,不负责比特是否出错、是否丢包、是否有序。帧的定界、MAC地址识别、差错检测,全部是数据链路层的活。
举个例子:以太网帧有前导码(Preamble)和帧起始定界符(SFD),它们属于物理层和数据链路层交界处的“灰色地带”。在OSI模型里,前导码的生成和同步属于物理层职责,但帧的封装和解封装属于数据链路层。实际抓包时你看不到前导码,因为抓包工具工作在网络层和传输层,网卡的MAC控制器已经把它们处理掉了。
把边界搞清楚的直接好处是排障时不至于乱甩锅。链路层CRC错误、FCS校验失败,问题源头往往是物理层信号质量差,但表现形式在数据链路层。如果不理解这个边界,你会一直在链路层打转,换驱动、关流控,折腾半天没效果。
3. 编码机制:物理层的“灵魂”所在
3.1 为什么不能把0和1直接扔到线缆上
很多人第一次接触物理层编码时都会问:既然传输的是比特流,为什么不直接用高电平表示1、低电平表示0,非要搞什么曼彻斯特编码、4B/5B、8B/10B?
最直接的原因是:裸二进制信号没法自同步,也没法拉平直流分量。
先看同步问题。接收端要从连续的电平变化中恢复出数据,就必须知道每个比特的时间边界在哪里。如果发送端发一串连续的1(高电平),接收端靠什么判断这一秒钟里到底收到了多少个1?它需要和发送端共用一个时钟。但实际通信系统里,收发双方很难做到时钟绝对一致,总会有漂移。漂移积累到一定程度,比特边界就错位了,接收端解出来的数据就是乱的。
再看直流分量。如果数据里出现长串的0或1,线路上的电平会长期保持在一个固定值,这会让信号的平均直流分量严重偏移。对于使用变压器耦合的以太网PHY来说,直流分量过大会导致接收端无法正确判定阈值,还容易造成变压器饱和。
所以物理层必须对原始比特流做一次“加工”,把0和1变成更适合在介质上传输的信号形式。这个加工过程就是编码(或调制)。
3.2 从曼彻斯特编码到PAM4:编码方案的演进逻辑
我梳理了一下几种典型编码方案,它们正好反映了物理层编码技术从低速到高速的演进思路。
| 编码方案 | 典型应用 | 核心思路 |
|---|---|---|
| 曼彻斯特编码 | 10M以太网 | 每个比特中间必有一次跳变,跳变同时携带数据和时钟 |
| 差分曼彻斯特编码 | 令牌环 | 跳变仍携带时钟,但用跳变方向表示0和1 |
| 4B/5B + NRZI | 100Base-FX/TX | 每4位数据映射为5位码组,保证足够多的电平跳变,配合NRZI做最终发送 |
| MLT-3 | 100Base-TX | 三电平编码,用电平状态机的跳变表达数据,降低信号频率 |
| 8B/10B | 千兆以太网、PCIe | 每8位数据映射为10位码组,保证直流平衡和跳变密度 |
| PAM5 | 1000Base-T | 五电平脉幅调制,一对线同时传两位数据 |
| PAM4 | 200G/400G以太网 | 四电平脉幅调制,单符号携带2比特 |
拿曼彻斯特编码举例,它把一个比特周期切成两半,前半周期和后半周期电平必然相反:比如1是从高到低,0是从低到高。这样每个比特中间都有一次跳变,接收端可以从跳变沿恢复时钟,不需要独立时钟信号。代价是信号速率是数据速率的两倍,带宽利用率很低,所以到了100M以太网就改用4B/5B配合MLT-3了。
8B/10B编码的思路也值得一提。它用10比特码组表示8比特数据,多出来的2比特用于保证码组中0和1的数量大致相当,同时限制连续的0或1不超过5个。这样既解决了直流平衡问题,又保证了足够的跳变密度,接收端能稳定恢复时钟。千兆以太网、PCIe、光纤通道都在用它。
到了400G时代,单通道速率已经拉到100Gbps以上,二进制NRZ调制做不上去了,于是改用PAM4,用四个电平(00、01、10、11)让单符号携带2比特信息。代价是信噪比变差了,对线路质量要求更高,需要更强的纠错编码(如RS-FEC)来兜底。
3.3 AIS物理层的编码实例:一个行业专用系统的参考
聊到编码机制,顺便提一个行业专用的例子——AIS(船舶自动识别系统)。AIS是船舶导航与通信领域的强制性设备,它的物理层工作在国际VHF频段(161.975MHz和162.025MHz),信道带宽25kHz,数据速率9
