2、物理层与链路层:网卡、MAC地址、以太网帧结构、交换机工作原理、ARP协议
说实话,很多刚入行的朋友总觉得物理层和链路层太底层,没什么好学的。我当年也这么想——直到有一次线上故障,整整排查了三天,最后发现是网卡的MAC地址冲突。嗯,从那以后我再也不敢小看这两层了。
今天咱们就把这些基础但关键的东西捋一遍。你想想看,数据要从一台机器跑到另一台机器,总得有个物理载体吧?总得有个寻址方式吧?这就是物理层和链路层干的事。
2.1 网卡:数据进出的第一道门
网卡,全称网络接口卡。说白了,它就是主机和网络之间的桥梁。我习惯把它比作「翻译官」——主机内部是并行数据,网络上是串行比特流,网卡负责来回翻译。
网卡的核心职责有三点:
- 数据封装与解封装:发送时把IP数据包封装成以太网帧,接收时反过来拆帧
- MAC地址识别:只接收目标MAC是自己的帧,其他的直接丢弃
- 信号转换:数字信号 ↔ 电信号/光信号
2.2 MAC地址:设备的身份证
MAC地址,也叫物理地址,是网卡出厂时烧录的唯一标识。48位,前24位是厂商代码(OUI),后24位是厂商分配的序列号。
这里有个常见的误区:很多人以为MAC地址全球唯一。其实不是。我见过同一个厂商的不同批次网卡,MAC地址重复的情况。虽然概率极低,但确实存在。
2.3 以太网帧结构:数据包的包装盒
以太网帧,就是数据在链路层的「包装盒」。咱们看看这个盒子长什么样:
| 字段 | 长度(字节) | 说明 |
|---|---|---|
| 前导码 | 7 | 同步时钟,接收方用它对齐 |
| 帧起始定界符 | 1 | 标识帧的开始 |
| 目标MAC | 6 | 接收方地址 |
| 源MAC | 6 | 发送方地址 |
| 类型/长度 | 2 | 上层协议类型(如0x0800表示IP) |
| 数据 | 46-1500 | IP数据包,最小46字节 |
| 帧校验序列 | 4 | CRC校验,检测传输错误 |
你可能会问:为什么数据最小是46字节?因为以太网帧有最小长度限制(64字节),减去头部和尾部,数据部分最少得46字节。如果不够,就填充0。
2.4 交换机工作原理:聪明的
交换机工作在链路层,它不像集线器那样无脑广播。它会学习、会记忆、会精准转发。
交换机的核心机制是「MAC地址表」:
- 学习:收到帧时,记录源MAC和入端口
- 转发:查目标MAC,找到对应端口就单播,找不到就广播
- 老化:MAC表项有生存时间(默认300秒),超时删除
我画了一张图,帮你理解交换机的转发逻辑:
交换机的转发模式有三种:
- 直通转发:只读目标MAC就转发,延迟低,但可能转发坏帧
- 存储转发:收完整个帧,校验无误再转发,延迟高但可靠
- 无碎片转发:收到64字节后转发,避免转发冲突碎片
2.5 ARP协议:IP到MAC的翻译官
ARP,地址解析协议。它的作用很简单:已知IP地址,问MAC地址。
ARP的工作流程:
- 主机A要发数据给主机B,但只知道B的IP,不知道MAC
- A发送ARP请求(广播):谁的IP是192.168.1.2?请告诉我你的MAC
- B收到后,发现IP是自己,回复ARP应答(单播):我是192.168.1.2,我的MAC是AA:BB:CC:DD:EE:FF
- A收到后,把IP-MAC映射写入ARP缓存
ARP缓存默认存活时间:Windows是2分钟,Linux是30秒。为什么要老化?因为网络拓扑会变,IP可能换机器。
ARP协议还有一个变种叫「免费ARP」:主机在启动时主动广播自己的IP-MAC映射。目的是告诉别人「我来了,更新你们的缓存」。我习惯在配置静态IP后,手动发一次免费ARP,让交换机尽快学习到。
好了,这一章的内容就到这儿。记住,底层的东西虽然枯燥,但故障排查时往往能救命。下次遇到网络不通,先看看ARP缓存对不对,再查查MAC表,很多问题就迎刃而解了。