物理层与数据链路层:从比特流到可靠帧
这一章,我们聊聊网络最底层的两兄弟——物理层和数据链路层。很多人觉得这两层太“硬”,没什么好学的。但我做了十几年网络,发现大部分线上故障,追根溯源都栽在这两层上。
说白了,物理层管的是“怎么把比特发出去”,数据链路层管的是“怎么让这些比特在相邻设备间可靠地传递”。咱们一层层剥开看。
物理层介质与信号:比特的“运输工具”
物理层不关心你发的是什么数据,它只负责把0和1变成能在介质上传输的信号。常见的介质就三种:铜缆、光纤、空气(无线)。
双绞线(铜缆)——我最熟悉的介质。记得早年做机房布线,一根五类线能跑100Mbps就觉得很快了。现在Cat6A已经能跑到10Gbps。它靠电压变化表示比特:+5V代表1,-5V代表0。但有个坑——信号会衰减,100米是极限。
光纤——用光脉冲表示比特。有光=1,无光=0。单模光纤传输距离几十公里,多模光纤几百米。我在数据中心见过因为光纤弯曲半径太小导致信号丢包的事故,嗯,物理层的问题往往最隐蔽。
无线——通过电磁波调制。2.4GHz和5GHz频段最常见。无线有个特点:信号会反射、折射、衰减,所以物理层设计要考虑纠错机制。
关键概念:物理层不保证传输的正确性,它只保证“我发了”。至于发对了没有,那是上面一层的事。
以太网帧结构:数据链路层的“信封”
数据链路层把物理层的比特流组织成“帧”(Frame)。就像你寄快递,不能光把东西扔给快递员,得有个信封写上地址。以太网帧就是这个信封。
标准的以太网帧长这样(我习惯记成“前目标源类型数校”):
| 字段 | 长度(字节) | 说明 |
|---|---|---|
| 前导码 | 7 | 同步时钟,101010...交替 |
| 帧起始定界符 | 1 | 10101011,标识帧开始 |
| 目标MAC地址 | 6 | 接收方网卡地址 |
| 源MAC地址 | 6 | 发送方网卡地址 |
| 类型/长度 | 2 | 上层协议类型(如0x0800=IP) |
| 数据载荷 | 46~1500 | 上层数据包(IP包) |
| 帧校验序列 | 4 | CRC32校验,检测传输错误 |
避坑指南:我曾经遇到一个案例,某台服务器间歇性丢包,排查了三天。最后发现是网卡驱动把前导码字段处理错了,导致帧同步失败。物理层的问题,往往要从帧结构开始查。
这里有个细节——数据载荷最小46字节。如果上层数据不够,要填充。为什么?因为以太网要求帧长至少64字节(从目标MAC到FCS),这是为了冲突检测机制(CSMA/CD)能正常工作。虽然现在全双工链路很少用CSMA/CD了,但这个约束保留了下来。
MAC地址与ARP协议:谁是谁?
MAC地址是网卡的“身份证”,48位,前24位是厂商代码(OUI),后24位是序列号。理论上全球唯一。但别太当真——我见过虚拟机克隆后MAC地址冲突的惨案。
MAC地址有三种类型:
- 单播:第一个字节最低位为0,指向特定设备
- 广播:FF-FF-FF-FF-FF-FF,发给所有人
- 组播:第一个字节最低位为1,发给一组设备
ARP协议——地址解析协议。它的作用很简单:已知目标IP,问“这个IP对应的MAC地址是什么?”
ARP的工作流程:
- 主机A广播ARP请求:“谁的IP是192.168.1.2?告诉我你的MAC。”
- 主机B收到请求,发现IP是自己,回复单播ARP响应:“我是192.168.1.2,我的MAC是AA:BB:CC:DD:EE:FF”
- 主机A收到响应,把映射关系写入ARP缓存
注意:ARP协议没有认证机制。任何人都可以伪造ARP响应。这就是ARP欺骗攻击的原理——我曾经在渗透测试中利用这个漏洞,成功截获了同网段的所有流量。
ARP缓存有老化时间(通常2~4分钟)。为什么?因为设备可能更换网卡,IP可能重新分配。缓存太久会导致通信故障。
交换机工作原理:智能的“转发器”
交换机是数据链路层的核心设备。它不像集线器(Hub)那样无脑广播,而是根据MAC地址表智能转发。
交换机的三个核心功能:
- MAC地址学习:收到帧时,记录源MAC和入端口
- 帧转发/过滤:查MAC表,知道目标MAC在哪个端口就只发那个端口
- 环路避免:通过生成树协议(STP)防止广播风暴
我画了一张图,帮你理解交换机的工作流程:
交换机的转发模式有三种:
| 模式 | 延迟 | 可靠性 | 适用场景 |
|---|---|---|---|
| 直通转发 | 低(~10μs) | 低(不校验) | 内部高速网络 |
| 存储转发 | 高(接收完整帧) | 高(CRC校验) | 企业网、广域网 |
| 无碎片转发 | 中 | 中(检查前64字节) | 较少使用 |
实战经验:我建议生产环境用存储转发模式。虽然延迟稍高,但能过滤掉错误帧。曾经有个客户频繁出现网络闪断,最后发现是某台交换机的直通转发模式把CRC错误的帧也转发过去了,导致上层协议不断重传。
总结一下
物理层把比特变成信号发出去,数据链路层把这些比特组织成帧,用MAC地址标识设备,用ARP协议解析地址,用交换机实现智能转发。这三块知识是网络排障的基础——很多“莫名其妙”的网络问题,查到最后都在这一层。
嗯,下一层我们就要进入网络层了,那里有更精彩的路由世界。但先把这两层吃透,后面的路才好走。