物理层基石:信号与介质,编码方式,物理拓扑与CSMA/CD
物理层,说白了就是网络世界里最底层的“搬运工”。它不关心你传的是网页还是邮件,它只负责把一串0和1变成物理信号,扔到线上去。我刚开始学网络时,总觉得这层太“硬”,没什么好研究的。后来在项目里被一根网线坑过两次,才明白——物理层要是没打好基础,上层协议再牛也白搭。
信号与传输介质
计算机里存的都是数字信号,0和1。但线缆里跑的是模拟信号——电压高低、光脉冲强弱。为什么?因为现实世界没有“纯数字”的物理量。你想想看,一根铜线上电压从0V跳到5V,中间总有个爬升过程,这就是模拟特性。
传输介质分两大类:
- 有线介质:双绞线(咱们常见的网线)、同轴电缆、光纤
- 无线介质:无线电波、微波、红外线
我个人习惯把双绞线叫“网线”,但严格来说,双绞线只是网线的一种。它内部两两绞在一起,目的是抵消电磁干扰。我在一个工厂项目里遇到过,现场电机一启动,网络就断。查了半天,发现施工队把网线跟动力电缆绑在一起走线槽。嗯,这就是典型的“共模干扰”问题。后来重新布线,问题解决。
避坑指南:我曾经在机房里见过有人把Cat5e线当Cat6用,跑千兆网络。短期内没问题,但一到高温天气,丢包率直线上升。线缆等级别省,省下来的钱迟早交给运维。
编码方式:NRZ与曼彻斯特编码
信号怎么表示0和1?这就涉及到编码。最直观的方式是:高电压表示1,低电压表示0。这叫不归零编码(NRZ)。
NRZ简单,但有个致命问题——连续多个1或0时,接收端没法判断到底传了几个。比如“1111”,线上一直是高电平,接收方怎么知道是4个1还是5个1?这就得靠时钟同步。但NRZ本身不携带时钟信息,收发双方必须各自维护一个时钟,时间一长就容易跑偏。
我在调试一个老式串口设备时遇到过这问题。设备发一串0x00,示波器上看就是一条直线,接收端死活收不对。后来换成曼彻斯特编码,问题消失。
曼彻斯特编码怎么解决?它把每个比特分成两段:
- 从高到低跳变表示1
- 从低到高跳变表示0
每个比特中间都有一次跳变,这个跳变既是数据,也是时钟。接收端只要检测跳变,就能同步时钟,还能知道数据是0还是1。
| 编码方式 | 优点 | 缺点 | 典型应用 |
|---|---|---|---|
| NRZ | 实现简单,带宽利用率高 | 无时钟同步,长串相同位易失步 | 早期串口、低速接口 |
| 曼彻斯特 | 自带时钟,抗干扰强 | 带宽翻倍(每个比特需要两次跳变) | 以太网(10BASE-T)、CAN总线 |
核心理解:曼彻斯特编码用“带宽换可靠性”。在10Mbps的以太网里,线缆上的信号跳变频率其实是20MHz。你想想看,同样的物理介质,跑曼彻斯特编码只能跑到10M,但换成更先进的编码方式(比如4B/5B、MLT-3),就能跑到100M甚至更高。这就是编码技术的演进逻辑。
物理拓扑结构
物理拓扑,就是设备之间怎么连。常见的就几种:
- 总线型:所有设备挂在一根主干线上。早期以太网(10BASE-2、10BASE-5)就用这个。便宜,但一根线断了,整个网络瘫痪。
- 星型:所有设备连到中心节点(交换机或集线器)。现在最常用。中心设备挂了,整个网络完蛋,但单根线坏了只影响一个设备。
- 环型:设备首尾相连成环。令牌环网、FDDI用过。数据单向流动,一个节点断了,环就断了(除非有冗余环)。
- 网状型:设备之间全互联。可靠性最高,但成本也最高。一般只在核心骨干网用。
我参与过一个园区网改造项目,原来用的是总线型同轴电缆,10Mbps。每次下雨,总有几个办公室掉线。排查起来特别痛苦——得沿着整条总线一段段测。后来全部换成星型拓扑,用Cat6网线加交换机,问题一次性解决。拓扑结构选对了,运维省一半力气。
冲突域与CSMA/CD机制
在早期的以太网(总线型或集线器连接的星型网络)里,所有设备共享同一个传输介质。这就带来一个问题——如果两台设备同时发数据,信号就会在线上“撞车”,数据全乱套。这就是冲突。
所有可能发生冲突的设备范围,叫冲突域。在集线器网络里,整个网络就是一个冲突域。交换机出现后,每个端口是一个独立的冲突域。
怎么解决冲突?以太网用了一套机制叫CSMA/CD(载波监听多点接入/冲突检测)。名字很长,但逻辑很简单:
- 先听再说:发数据前,先听线上有没有信号。有信号就等着,没信号就发。
- 边发边听:发数据的同时,监听线上有没有冲突。如果检测到冲突,立即停止发送。
- 冲突后等待:发一个“阻塞信号”通知所有人,然后随机等待一段时间再重试。
随机等待的时间怎么算?用的是二进制指数退避算法。第一次冲突,等0或1个时间片;第二次冲突,等0到3个时间片;第三次,等0到7个时间片……以此类推。重试次数超过16次,就放弃发送,报错。
注意:CSMA/CD只在半双工模式下工作。现在的全双工交换网络,收发各走各的线,根本不会冲突,所以CSMA/CD基本用不上了。但理解它,能帮你搞懂为什么早期以太网有“距离限制”——信号在线上传播需要时间,如果网络太大,冲突信号还没传回来,发送方已经发完了,那就检测不到冲突。这就是“冲突域直径”的概念。
我记得刚入行时,一个老工程师跟我说:“你只要搞懂了CSMA/CD,就搞懂了以太网的一半。”当时不信,后来做网络性能分析,发现很多问题归根结底就是冲突和重传。比如一个集线器网络里,设备一多,吞吐量直线下降——不是因为带宽不够,而是因为冲突太多,大部分时间都在退避等待。
所以,物理层看似简单,但信号怎么编码、设备怎么连接、冲突怎么处理,这些基础决定了上层协议能跑多快、多稳。下一层一层往上走,你会发现每个问题的根源,都能在物理层找到影子。