物理层与数据链路层:从一根线到一帧数据
大家好,欢迎来到第三章。前两章我们聊了TCP/IP的宏观架构,今天要往下挖一层,看看数据到底是怎么在物理介质上跑的。说白了,就是信号怎么变成比特,比特又怎么组装成帧。
我个人习惯把物理层和数据链路层放在一起讲,因为这两层在现实世界里是密不可分的。你想想看,光有物理层,数据就是一串乱码;光有数据链路层,没有线缆,数据连门都出不去。
物理层传输介质:信号的家
物理层干的事很纯粹——把比特流变成电信号、光信号或者无线电波,扔到介质上传输。介质选不对,后面全白搭。我见过不少新手,布线时图便宜用了劣质网线,结果千兆网络死活跑不满,最后排查半天,换根线就好了。
双绞线
这是咱们最常见的传输介质。说白了,就是两两绞在一起的铜线。为什么要绞?因为两根平行线会产生电磁干扰,绞在一起能互相抵消。我当年考CCNA时,老师打了个比方:就像两个人手挽手跳舞,比各跳各的稳当多了。
双绞线分两类:
- 屏蔽双绞线(STP):外面包了层金属屏蔽层,抗干扰强,但贵、硬、难施工。
- 非屏蔽双绞线(UTP):没屏蔽层,便宜、灵活,家用和办公最常见。
咱们平时说的“网线”,绝大多数是UTP。按性能分,常见的有Cat5e、Cat6、Cat6a、Cat7。我建议,新布线至少上Cat6,能跑千兆,也能兼容万兆(短距离)。
光纤
光纤用光传信号,速度更快、距离更远、抗干扰更强。它分两种:
- 单模光纤:芯径细(9μm),激光光源,传输距离几十公里,用于骨干网。
- 多模光纤:芯径粗(50μm或62.5μm),LED光源,传输距离几百米到几公里,用于数据中心内部。
单模贵,多模便宜。我做过一个数据中心项目,机柜之间全用多模OM4光纤,成本可控,性能也够。但你要是拉跨省干线,老老实实上单模。
同轴电缆
同轴电缆现在家用很少见了,但在有线电视和早期以太网(10Base2、10Base5)里是主力。它由内导体、绝缘层、金属屏蔽网和外皮组成,抗干扰比双绞线好。不过,现在除了广电和某些监控系统,基本被双绞线和光纤取代了。
| 介质 | 最大速率 | 最大距离 | 成本 | 抗干扰 |
|---|---|---|---|---|
| 双绞线(Cat6) | 1 Gbps(短距10 Gbps) | 100米 | 低 | 中 |
| 多模光纤 | 10 Gbps+ | 550米(OM4) | 中 | 高 |
| 单模光纤 | 100 Gbps+ | 40公里+ | 高 | 高 |
| 同轴电缆 | 10 Mbps(传统) | 500米(10Base5) | 低 | 中高 |
数据链路层功能:把比特变成帧
物理层只管发比特,但比特本身没有意义。数据链路层负责把这些比特组装成“帧”,加上地址、校验信息,让数据能准确送到隔壁设备。
数据链路层核心功能有三个:帧封装、MAC地址寻址、差错控制。我一个个说。
帧封装
网络层把IP包丢下来,数据链路层给它套个“信封”——这就是帧。帧的结构大致是:
| 前导码 | 目标MAC | 源MAC | 类型/长度 | 数据(IP包) | FCS校验 |
| 8字节 | 6字节 | 6字节 | 2字节 | 46-1500字节 | 4字节 |
前导码用来同步时钟,FCS是循环冗余校验(CRC)。注意,数据部分最少46字节,不够要填充。为什么?因为以太网规定帧长不能小于64字节(不含前导码),这是为了冲突检测。
MAC地址
MAC地址是网卡的“身份证”,48位,通常写成六组十六进制数,比如 00:1A:2B:3C:4D:5E。前24位是厂商代码(OUI),后24位是厂商分配的序列号。理论上全球唯一。
但注意,MAC地址只在同一个广播域内有效。数据跨路由器时,源和目标MAC会变,但IP地址不变。这个很多人搞混——MAC是本地寻址,IP是全局寻址。
我记得有一次,客户说网络不通,我一看ARP表,发现两个设备MAC地址一样——有人手动改了MAC。嗯,同一广播域里MAC冲突,交换机直接懵了。
差错控制
数据在物理介质上传输,难免受干扰。数据链路层用FCS(帧校验序列)来检测错误。发送方算好CRC值填在帧尾,接收方重新算一遍,对不上就丢帧。
但注意,数据链路层只检错,不纠错。发现错误怎么办?直接扔掉,让上层(TCP)重传。为什么不做纠错?因为纠错开销太大,不适合高速网络。丢帧重传更简单高效。
以太网协议详解
以太网是目前最主流的局域网技术。它定义了物理层和数据链路层的规范。咱们平时用的Wi-Fi、有线网,底层都是以太网(Wi-Fi是无线以太网)。
以太网的核心机制是CSMA/CD(载波监听多点接入/碰撞检测)。说白了就是:
- 先听,没人发我就发。
- 如果两个人同时发,冲突了,就停。
- 等一个随机时间,再重试。
这个机制在早期同轴电缆时代很重要。但现在全双工交换网络普及了,交换机每个端口独享带宽,基本不会冲突。所以现代以太网实际上已经不用CSMA/CD了,但协议里还保留着。
以太网的帧格式,我刚才已经列了。这里再补充一个关键点——以太网有两种封装:Ethernet II(DIX)和IEEE 802.3。Ethernet II用类型字段标识上层协议(比如0x0800是IP),802.3用长度字段。现在绝大多数网络用的是Ethernet II。
| 类型值(十六进制) | 对应协议 |
|---|---|
| 0x0800 | IPv4 |
| 0x0806 | ARP |
| 0x86DD | IPv6 |
| 0x8100 | VLAN标签(802.1Q) |
你抓包时看到这些值,就知道上层是什么协议了。
本章知识体系
下面这张图,把物理层和数据链路层的关系、核心知识点串起来了。我建议你多看几遍,把层次关系理清楚。