2、物理层与链路层:网卡、MAC地址、以太网帧结构、交换机工作原理、ARP协议

说实话,很多刚入行的朋友总觉得物理层和链路层太底层,没什么好学的。我当年也这么想——直到有一次线上故障,整整排查了三天,最后发现是网卡的MAC地址冲突。嗯,从那以后我再也不敢小看这两层了。

今天咱们就把这些基础但关键的东西捋一遍。你想想看,数据要从一台机器跑到另一台机器,总得有个物理载体吧?总得有个寻址方式吧?这就是物理层和链路层干的事。

2.1 网卡:数据进出的第一道门

网卡,全称网络接口卡。说白了,它就是主机和网络之间的桥梁。我习惯把它比作「翻译官」——主机内部是并行数据,网络上是串行比特流,网卡负责来回翻译。

网卡的核心职责有三点:

  • 数据封装与解封装:发送时把IP数据包封装成以太网帧,接收时反过来拆帧
  • MAC地址识别:只接收目标MAC是自己的帧,其他的直接丢弃
  • 信号转换:数字信号 ↔ 电信号/光信号
实战经验:我在一次数据中心搬迁时遇到过网卡兼容性问题。某品牌的服务器配了某型号的万兆网卡,在特定交换机下频繁丢包。最后发现是网卡的流控参数和交换机不匹配。调了网卡的「Rx/Tx Buffer」大小才解决。所以,别以为网卡插上就能用,参数调优很重要。

2.2 MAC地址:设备的身份证

MAC地址,也叫物理地址,是网卡出厂时烧录的唯一标识。48位,前24位是厂商代码(OUI),后24位是厂商分配的序列号。

这里有个常见的误区:很多人以为MAC地址全球唯一。其实不是。我见过同一个厂商的不同批次网卡,MAC地址重复的情况。虽然概率极低,但确实存在。

避坑指南:我曾经在虚拟化环境中踩过坑。虚拟机迁移后,MAC地址没变,但物理网卡变了。结果交换机的MAC表还是旧的,导致流量走错路径。所以,虚拟化环境一定要用「MAC地址漂移检测」功能。

2.3 以太网帧结构:数据包的包装盒

以太网帧,就是数据在链路层的「包装盒」。咱们看看这个盒子长什么样:

字段 长度(字节) 说明
前导码 7 同步时钟,接收方用它对齐
帧起始定界符 1 标识帧的开始
目标MAC 6 接收方地址
源MAC 6 发送方地址
类型/长度 2 上层协议类型(如0x0800表示IP)
数据 46-1500 IP数据包,最小46字节
帧校验序列 4 CRC校验,检测传输错误

你可能会问:为什么数据最小是46字节?因为以太网帧有最小长度限制(64字节),减去头部和尾部,数据部分最少得46字节。如果不够,就填充0。

关键点:以太网帧的最大传输单元是1500字节。超过这个大小,IP层就要分片。我见过有人把MTU改成9000(巨型帧),确实能提升吞吐量,但前提是整个链路都支持。否则,丢包率会飙升。

2.4 交换机工作原理:聪明的

交换机工作在链路层,它不像集线器那样无脑广播。它会学习、会记忆、会精准转发。

交换机的核心机制是「MAC地址表」:

  • 学习:收到帧时,记录源MAC和入端口
  • 转发:查目标MAC,找到对应端口就单播,找不到就广播
  • 老化:MAC表项有生存时间(默认300秒),超时删除

我画了一张图,帮你理解交换机的转发逻辑:

交换机转发逻辑流程图 收到以太网帧 学习源MAC → 端口映射 查MAC表 目标MAC存在? 是 单播转发 否 广播泛洪 转发完成

交换机的转发模式有三种:

  • 直通转发:只读目标MAC就转发,延迟低,但可能转发坏帧
  • 存储转发:收完整个帧,校验无误再转发,延迟高但可靠
  • 无碎片转发:收到64字节后转发,避免转发冲突碎片
我的建议:核心层交换机用「存储转发」,接入层用「直通转发」。这样既保证可靠性,又降低延迟。当然,现在大部分交换机都支持自适应,不用手动配。

2.5 ARP协议:IP到MAC的翻译官

ARP,地址解析协议。它的作用很简单:已知IP地址,问MAC地址。

ARP的工作流程:

  1. 主机A要发数据给主机B,但只知道B的IP,不知道MAC
  2. A发送ARP请求(广播):谁的IP是192.168.1.2?请告诉我你的MAC
  3. B收到后,发现IP是自己,回复ARP应答(单播):我是192.168.1.2,我的MAC是AA:BB:CC:DD:EE:FF
  4. A收到后,把IP-MAC映射写入ARP缓存

ARP缓存默认存活时间:Windows是2分钟,Linux是30秒。为什么要老化?因为网络拓扑会变,IP可能换机器。

我曾经踩过的坑:有一次内网突然大面积断网,排查发现是某台机器中了ARP病毒。它不停地发送伪造的ARP应答,告诉所有人「网关的MAC是我」。结果所有流量都发到了这台机器上,它又转发不出去。解决方案:在交换机上配置「ARP防欺骗」和「DHCP Snooping」。

ARP协议还有一个变种叫「免费ARP」:主机在启动时主动广播自己的IP-MAC映射。目的是告诉别人「我来了,更新你们的缓存」。我习惯在配置静态IP后,手动发一次免费ARP,让交换机尽快学习到。

核心总结:物理层和链路层是网络通信的基石。网卡负责物理接入,MAC地址负责本地寻址,以太网帧规定了数据格式,交换机实现智能转发,ARP协议打通了IP和MAC的隔阂。这五个知识点环环相扣,缺一不可。

好了,这一章的内容就到这儿。记住,底层的东西虽然枯燥,但故障排查时往往能救命。下次遇到网络不通,先看看ARP缓存对不对,再查查MAC表,很多问题就迎刃而解了。

可可精品资料库