这是《计算机网络 零基础实战指南》的独立章节版。本章从概念、实操和生产排查三个视角展开,代码块保留了原书可直接运行的版本。 应用层问题很容易被归咎为“网络抖动”,但真正的底层原因可能是网卡丢包、交换机端口错误、VLAN 配置不一致、广播风暴或链路带宽打满。本章介绍物理网络、以太网、交换机、VLAN、Bond 和无线局域网的基本原理,并给出 Linux 上的观测方法。
3.1 以太网帧
以太网是局域网最常见的数据链路层技术。
简化帧结构:
| Destination MAC | Source MAC | Type | Payload | FCS |
| 6 bytes | 6 bytes | 2 | 46-1500 | 4 |
常见 Type:
| 类型 | 含义 |
|---|---|
| IPv4 | 0x0800 |
| IPv6 | 0x86DD |
| ARP | 0x0806 |
| VLAN | 0x8100 |
传统以太网 MTU 为 1500 字节。云环境、容器 overlay 和隧道会叠加额外头,常见路径 MTU 问题都发生在这一层。
查看接口与 MTU:
ip link
ip -details link show eth0
ethtool eth0
3.2 MAC 地址与交换机
MAC 地址是网卡在链路上的标识,通常写作:
00:16:3e:12:34:56
交换机维护 MAC 地址表:
MAC Address VLAN Port
AA:AA... 10 Gi1/0/1
BB:BB... 10 Gi1/0/2
工作流程:
- 收到帧;
- 学习源 MAC 与端口的映射;
- 查目的 MAC;
- 找到则转发到对应端口;
- 找不到则在同一 VLAN 内泛洪;
- 目的 MAC 为广播或组播时按规则泛洪。
交换机隔离冲突域,但不隔离广播域。路由器或 VLAN 才能隔离广播域。
3.3 VLAN
VLAN 将一个物理局域网划分为多个逻辑广播域。
物理交换机
|-- VLAN 10:Web
|-- VLAN 20:App
+-- VLAN 30:DB
VLAN Tag 会增加 4 字节开销:
原始 MTU 1500
VLAN Tag 后帧长增加 4 字节
常见问题:
- 两端 VLAN ID 不一致;
- 交换机端口 access/trunk 模式配置错误;
- 云平台安全组与 VLAN 混淆;
- 允许通过的 VLAN 列表缺失;
- 数据库和应用不在同 VLAN,忘记配置路由或防火墙。
3.4 链路聚合与 Bond
Linux Bond 可以将多块网卡绑定为一个逻辑接口,用于冗余或带宽扩展。
常见模式:
| 模式 | 说明 |
|---|---|
| active-backup | 主备,常用且简单 |
| 802.3ad | LACP,需要交换机配合 |
| balance-rr | 轮询,兼容性要求高 |
| balance-xor | 基于哈希分流 |
| balance-tlb / alb | 发送或收发负载均衡 |
查看:
ip link
cat /proc/net/bonding/bond0
注意:单个 TCP 连接的哈希结果通常落在一条物理链路上,Bond 不必然让单连接带宽翻倍。
3.5 全双工、速率与网卡队列
现代以太网通常全双工,收发可同时进行。
查看:
ethtool eth0
重点字段:
Speed
Duplex
Link detected
网卡和操作系统之间通过队列与软中断交互:
网卡 DMA
-> RX Queue
-> 硬中断
-> NAPI / 软中断
-> 协议栈
-> 应用收包
查看统计:
ip -s link show eth0
ethtool -S eth0
cat /proc/interrupts
cat /proc/net/softnet_stat
关注:
rx_dropped:接收丢包;tx_dropped:发送丢包;rx_crc_errors:链路质量或网卡问题;collisions:冲突或双工异常;overruns:缓冲不足;- softnet 丢包:CPU 处理不及时。
3.6 局域网性能问题
3.6.1 带宽打满
现象:
- 大文件传输后其他请求变慢;
- 备份窗口内服务延迟升高;
- 交换机端口利用率高;
- 重传增加;
- 应用超时集中在同机房间链路。
处理:
- 限速备份任务;
- 错峰传输;
- 拆分流量到不同链路;
- 升级带宽;
- 使用压缩或增量传输;
- 检查是否异常流量或攻击。
3.6.2 广播域过大
现象:
- ARP 请求多;
- 小包转发速率高;
- 局域网内所有机器受影响;
- 抓包看到大量广播。
处理:
- 划分 VLAN;
- 减少同网段机器数量;
- 检查环路;
- 启用生成树相关保护;
- 排查异常广播源。
3.6.3 链路质量差
现象:
- CRC 错误增长;
- 丢包与重传相关;
- 更换链路后恢复;
- 交换机端口错误计数增长。
处理:
- 更换线缆或光模块;
- 更换交换机端口;
- 检查网卡;
- 核对速率与双工;
- 清洁或更换光纤。
3.7 无线局域网
Wi-Fi 使用无线介质,天然存在冲突、干扰和信号衰减。
影响质量的因素:
- 信号强度;
- 信道干扰;
- 用户密度;
- AP 负载;
- 漫游策略;
- 频段:2.4GHz / 5GHz / 6GHz;
- 终端网卡能力。
现象:
信号弱 -> 低速率重传多 -> 占用空气时间 -> 影响其他终端
生产服务通常不建议依赖办公 Wi-Fi。办公网络访问生产系统时,要能区分 Wi-Fi 抖动和服务端问题。
3.8 数据中心网络拓扑
传统三层结构:
Core
-> Aggregation
-> Access
-> Server
数据中心常用 Spine-Leaf:
Spine 1 Spine 2
| \ / |
Leaf 1 Leaf 2
| |
Server A Server B
特点:
- Leaf 接入服务器;
- Spine 提供跨 Leaf 转发;
- 任意两 Leaf 通常一跳或少量跳;
- 易于水平扩展;
- 常配合 BGP、VXLAN 和 ECMP。
本章小结
物理网络与局域网解决信号、帧、MAC、交换、VLAN 和链路可靠性问题。以太网帧承载 IP 包,交换机按 MAC 转发,VLAN 隔离广播域,Bond 提供冗余或带宽扩展。常见底层问题包括 MTU 不一致、链路丢包、带宽打满、广播域过大和网卡队列丢包。ip、ethtool、交换机端口计数和抓包是定位这些问题的基本工具。
思考题
- 交换机如何学习和转发 MAC 地址?
- VLAN、冲突域和广播域分别隔离什么?
- 为什么 Bond 不一定提升单个 TCP 连接的吞吐?
rx_dropped和rx_crc_errors增长分别说明什么?- 写一份服务器接入生产网络前的链路检查清单。