网络协议深度解析-05-链路层与局域网:以太网与交换网络
全文摘要
本文将带你深入理解链路层的工作原理,帮助你掌握以太网、交换机、VLAN等局域网技术。你将学到MAC地址的作用、以太网帧的格式、交换机如何学习MAC地址、VLAN如何隔离广播域、以及WiFi无线网络的运作机制。通过阅读本文,你将理解数据如何在本地网络中传输,以及如何设计和管理局域网。
全书总结
链路层是网络协议栈中负责相邻节点间数据传输的层次,它在网络层之下,为IP协议提供传输服务。本文系统梳理了链路层的服务与功能、MAC寻址与ARP协议、以太网的技术演进、交换机的工作原理与地址学习、VLAN的划分与 trunking、以及WiFi无线网络的CSMA/CA机制。适合网络管理员、系统集成工程师、以及对局域网技术感兴趣的技术人员阅读。
一、链路层的作用:点对点传输
网络层解决了跨网络的通信问题,但它假设网络层之下有一个”理想”的点对点链路。链路层的任务就是实现这个点对点通信——把数据帧从一端传输到另一端。
flowchart TB subgraph Node1[主机A] IP1[网络层<br/>IP数据报] LL1[链路层] Phy1[物理层] end subgraph Link[链路] Wire[介质<br/>光纤/铜线/电波] end subgraph Node2[路由器R] LL2[链路层] Phy2[物理层] IP2[网络层<br/>转发数据报] end IP1 --> LL1 LL1 -->|封装成帧| Phy1 Phy1 -->|信号传输| Wire Wire --> Phy2 Phy2 -->|接收信号| LL2 LL2 -->|解封装| IP2 style Node1 fill:#e3f2fd style Node2 fill:#fff9c4 style Wire fill:#f3e5f5
图表讲解:这张图展示了链路层在网络协议栈中的位置——它是网络层和物理层之间的桥梁。
链路层提供的服务包括:
- 成帧:把网络层的IP数据报封装成帧,加上帧头和帧尾
- 寻址:使用MAC地址在局域网内寻址(不同于IP的跨网络寻址)
- 介质访问控制:协调多个设备对共享介质的访问
- 错误检测:检测传输中的错误(通常不纠正,交给上层处理)
- 流量控制:在点对点链路上控制发送速率(如HDLC协议)
链路层的协议是网络特定的——不同类型的网络使用不同的链路层协议:以太网、WiFi、PPP、帧中继等等。这意味着IP数据报在不同链路上被封装成不同格式的帧。
二、MAC地址与ARP协议
在局域网中,设备使用MAC地址(Media Access Control Address,介质访问控制地址)互相标识。
MAC地址的结构
flowchart LR subgraph MAC[MAC地址 48位] direction TB OUI[OUI<br/>厂商标识<br/>前24位] NIC[网卡标识<br/>后24位] end subgraph Types[地址类型] U[单播地址<br/>首字节最低位=0] M[组播地址<br/>首字节最低位=1] B[广播地址<br/>FF:FF:FF:FF:FF:FF] end MAC --> U MAC --> M MAC --> B style OUI fill:#e3f2fd style NIC fill:#fff9c4 style U fill:#c8e6c9 style M fill:#ffd54f style B fill:#ef5350
图表讲解:这张图展示了MAC地址的结构和类型——MAC地址的设计体现了标准化的智慧。
MAC地址是48位(6字节)的地址,通常用十六进制表示(如00:1A:2B:3C:4D:5E)。前24位是OUI(Organizationally Unique Identifier,组织唯一标识符),由IEEE分配给网卡制造商;后24位由制造商分配,确保每个网卡有唯一地址。
MAC地址有三种类型:
- 单播地址:指向单个设备,首字节最低位是0
- 组播地址:指向一组设备,首字节最低位是1
- 广播地址:FF:FF:FF:FF:FF:FF,指向局域网内所有设备
ARP协议
当主机要发送数据给本地网络中的另一台主机时,它知道对方的IP地址,但不知道MAC地址。ARP(Address Resolution Protocol,地址解析协议)用于将IP地址解析为MAC地址。
sequenceDiagram participant A as 主机A<br/>需要发送数据给B participant L as 局域网 A->>L: ARP请求广播<br/>"谁是192.168.1.5?" L-->>B: 主机B收到<br/>IP匹配 B->>L: ARP响应单播<br/>"我是192.168.1.5<br/>MAC:00:11:22:33:44:55" B-->>A: A收到响应<br/>缓存IP-MAC映射 Note over A: 后续发送直接使用缓存
图表讲解:这张时序图展示了ARP的工作流程——这是局域网通信的基础步骤。
ARP工作流程:
- 主机A需要发送数据给B(知道B的IP,不知道MAC)
- A发送ARP请求广播,询问”谁是IP地址192.168.1.5?”
- 局域网内所有主机都收到广播,但只有B的IP匹配
- B发送ARP响应(单播),告诉A自己的MAC地址
- A缓存这个IP-MAC映射,后续发送直接使用缓存的MAC地址
ARP缓存有超时时间(通常几分钟),因为设备可能更换网卡(MAC地址改变)。如果IP地址在本地网络中找不到,ARP请求会超时,主机返回”主机不可达”错误。
三、以太网:局域网的主流技术
以太网是最成功的局域网技术,从1980年代的10Mbps发展到今天的100Gbps,仍然是企业网络和家庭网络的首选。
以太网的演进
flowchart LR subgraph Classic[经典以太网] CS[CSMA/CD<br/>总线拓扑<br/>10Mbps] end subgraph Switched[交换式以太网] SW[交换机<br/>星型拓扑<br/>全双工] end subgraph Modern[现代以太网] G1[千兆以太网<br/>1Gbps] G2[万兆以太网<br/>10Gbps] G3[40/100G<br/>数据中心] end Classic --> Switched Switched --> Modern style Classic fill:#ffcdd2 style Switched fill:#fff9c4 style Modern fill:#c8e6c9
图表讲解:这张图展示了以太网的技术演进——从共享总线到交换网络。
经典以太网(1980-1990年代)使用总线拓扑,所有设备共享同一条电缆。采用CSMA/CD(载波监听多点接入/碰撞检测):
- 载波监听:发送前监听信道,如果忙就等待
- 碰撞检测:发送时检测碰撞,如果碰撞就立即停止,等待随机时间后重传
CSMA/CD的问题是效率随负载增加而下降——设备越多,碰撞越多。当网络负载超过30-40%时,性能急剧下降。
交换式以太网用交换机替代共享总线。交换机的每个端口都是一个独立的冲突域,设备之间可以全双工通信(同时发送和接收),不再需要CSMA/CD。现代以太网都是交换式的,CSMA/CD已经成为历史。
现代以太网速度不断提升:
- 快速以太网:100Mbps
- 千兆以太网:1Gbps,已成为企业网标准
- 万兆以太网:10Gbps,用于数据中心和骨干网
- 40/100G以太网:用于超大规模数据中心
以太网帧格式
flowchart TB Preamble[前导码<br/>7字节<br/>同步用] --> SFD[SFD<br/>1字节<br/>帧开始标志] SFD --> Dest[目的MAC<br/>6字节] Dest --> Src[源MAC<br/>6字节] Src --> Type[类型字段<br/>2字节<br/>指示上层协议] Type --> Data[数据<br/>46-1500字节] Data --> CRC[CRC校验<br/>4字节<br/>错误检测] Dest -.->|可选| Tag[802.1Q标签<br/>4字节<br/>VLAN ID] Tag --> Type style Preamble fill:#e3f2fd style Dest fill:#fff9c4 style Src fill:#fff9c4 style Data fill:#c8e6c9 style Tag fill:#ba68c8
图表讲解:这张图展示了以太网帧的格式——每个字段都有其特定用途。
以太网帧的关键字段:
- 前导码+SFD:用于接收方时钟同步,不算是帧的一部分
- 目的/源MAC地址:各6字节,标识发送方和接收方
- 类型字段:指示上层协议(0x0800是IPv4,0x86DD是IPv6,0x0806是ARP)
- 数据:46-1500字节。如果小于46字节,需要填充到46字节
- CRC:循环冗余校验,检测传输错误
802.1Q标签是可选的,用于VLAN。包含4字节:2字节的TPID(0x8100标识这是 tagged帧)和2字节的TCI(包含3位的VLAN priority、1位的CFI、12位的VLAN ID)。Tag让交换机能够识别帧属于哪个VLAN。
四、交换机与自学习算法
交换机是现代局域网的核心设备,它能够智能地转发帧,提高网络性能。
交换机的工作原理
flowchart TB subgraph Switch[交换机] direction TB Ingress[接收帧<br/>从端口1] Learn[学习MAC地址<br/>源MAC-端口1] Lookup[查找转发表<br/>目的MAC在哪个端口?] Forward{转发决策} Flood[泛洪<br/>广播到所有端口<br/>除了源端口] Unicast[单播<br/>发送到目标端口] Filter[过滤<br/>丢弃<br/>目的MAC=源MAC] end Learn --> Lookup Lookup --> Forward Forward -->|未知单播| Flood Forward -->|已知单播| Unicast Forward -->|同端口| Filter style Switch fill:#e3f2fd style Learn fill:#fff9c4 style Flood fill:#ffcdd2 style Unicast fill:#c8e6c9
图表讲解:这张图展示了交换机的转发逻辑——自学习算法让它能自动构建MAC地址表。
交换机维护一个转发表(MAC地址表),记录MAC地址到端口的映射。转发表通过自学习算法自动构建:
- 交换机从端口1收到一个帧,源MAC是AA:BB:CC:DD:EE:FF
- 交换机学习:AA:BB:CC:DD:EE:FF在端口1方向
- 检查目的MAC,如果转发表中有,就转发到相应端口;如果没有,就泛洪
这种设计让交换机”即插即用”——不需要人工配置,连接后就能工作。交换机的自学习是动态的,如果设备移动到另一个端口,转发表会自动更新(旧条目超时后删除)。
交换机与集线器的区别
| 特性 | 集线器 | 交换机 |
|---|---|---|
| 工作层次 | 物理层 | 链路层 |
| 转发方式 | 广播到所有端口 | 智能转发到目标端口 |
| 带宽共享 | 所有端口共享 | 每端口独享 |
| 冲突域 | 一个大的冲突域 | 每端口一个冲突域 |
| 双工 | 半双工 | 全双工 |
| 价格 | 低 | 稍高 |
集线器是”傻瓜”设备,收到什么就广播什么,所有设备共享带宽,冲突域大。交换机是”智能”设备,学习MAC地址,智能转发,每个端口独占带宽,冲突域小。现代网络都用交换机,集线器已经被淘汰。
五、VLAN:虚拟局域网
VLAN(Virtual Local Area Network,虚拟局域网)允许在物理交换机上创建多个逻辑网络。
flowchart TB subgraph Physical[物理交换机] direction TB P1[端口1<br/>VLAN 10] P2[端口2<br/>VLAN 10] P3[端口3<br/>VLAN 20] P4[端口4<br/>VLAN 20] end subgraph Logical[逻辑视图] direction TB VLAN10[VLAN 10<br/>部门A] VLAN20[VLAN 20<br/>部门B] end P1 -.->|逻辑上| VLAN10 P2 -.->|属于| VLAN10 P3 -.->|逻辑上| VLAN20 P4 -.->|属于| VLAN20 P1 <-->|物理上不能<br/>直接通信| P3 P2 <-->|需要路由器| P4 style P1 fill:#e3f2fd style P2 fill:#e3f2fd style P3 fill:#fff9c4 style P4 fill:#fff9c4 style VLAN10 fill:#90caf9 style VLAN20 fill:#ffe082
图表讲解:这张图展示了VLAN的概念——同一个交换机上的设备被逻辑隔离。
VLAN的作用:
- 安全隔离:不同VLAN的设备默认不能直接通信
- 广播控制:广播帧只在VLAN内传播,减少不必要的流量
- 管理便利:设备移动不需要重新布线,只需要改变VLAN配置
VLAN的Access端口连接终端设备,属于一个VLAN,发送和接收不带标签的帧。交换机内部给帧打上VLAN标签,从Access端口发出时去掉标签。
VLAN的Trunk端口连接交换机之间或交换机与路由器,可以传输多个VLAN的帧,帧带VLAN标签。Trunk让VLAN可以跨越多个交换机。
不同VLAN之间的通信需要路由:
- 传统方法:路由器的一个物理接口连接一个VLAN
- 现代方法:单臂路由(Router-on-a-stick),路由器的一个物理接口通过Trunk连接交换机,用子接口对应不同VLAN
- 最佳实践:三层交换机,内置路由功能,线速转发
六、WiFi:无线局域网
WiFi(IEEE 802.11)是最成功的无线网络技术,让设备摆脱了网线的束缚。
CSMA/CA:无线介质的访问控制
flowchart TB Start[需要发送] --> Listen[监听信道] Listen --> Busy{信道忙?} Busy -->|是| Wait[等待IFS<br/>然后退避随机时间] Busy -->|否| RTS[可选:发送RTS<br/>请求发送] Wait --> Listen RTS --> CTS[接收方CTS<br/>清除发送] CTS --> Send[发送数据] Send --> ACK[接收方ACK] ACK --> Success{成功?} Success -->|否| Backoff[指数退避] Success -->|是| Done[完成] style Busy fill:#ffcdd2 style Send fill:#c8e6c9 style Backoff fill:#fff9c4
图表讲解:这张图展示了WiFi的CSMA/CA机制——无线环境不能像有线那样检测碰撞,所以采取了”避免碰撞”的策略。
WiFi不能像以太网那样检测碰撞(因为隐藏站问题——发送方可能听不到其他站的发送),所以采用CSMA/CA(碰撞避免)而非CSMA/CD:
- 载波监听:发送前监听信道,如果忙就等待
- 虚拟载波监听:通过RTS/CTS(请求发送/清除发送)预约信道,让其他站知道信道将被占用
- 退避:等待DIFS(分布式帧间间隔)后,选择一个随机退避时间
- 发送:退避计数器到0后开始发送
- 确认:接收方正确接收后返回ACK,发送方收到ACK表示发送成功
RTS/CTS是可选的,主要用于长帧(避免长帧碰撞浪费大量带宽)。对于短帧,可能直接发送,不用RTS/CTS。
WiFi的世代演进
| 标准 | 年份 | 频段 | 理论速率 | 特点 |
|---|---|---|---|---|
| 802.11b | 1999 | 2.4GHz | 11Mbps | 早期WiFi |
| 802.11a | 1999 | 5GHz | 54Mbps | 高频,干扰少 |
| 802.11g | 2003 | 2.4GHz | 54Mbps | 兼容b,速率提升 |
| 802.11n | 2009 | 2.4/5GHz | 600Mbps | MIMO,双频 |
| 802.11ac | 2013 | 5GHz | 6.93Gbps | 千兆WiFi |
| 802.11ax | 2019 | 2.4/5GHz | 9.6Gbps | WiFi 6,高效率 |
WiFi 6(802.11ax)引入了OFDMA(正交频分多址),允许多个设备同时发送,提高了密集环境下的效率。WiFi 6E将频段扩展到6GHz,减少了干扰。
结语
链路层是网络的基础设施,它把抽象的IP数据报变成能够在具体介质上传输的信号。从以太网到WiFi,链路层技术在不断演进,但核心使命不变——可靠、高效地传输数据帧。
理解链路层的工作原理,能帮助你:
- 设计局域网:划分VLAN、部署交换机、规划WiFi覆盖
- 排查网络故障:MAC地址冲突、环路检测、端口协商问题
- 优化网络性能:调整MTU、启用链路聚合、配置QoS
接下来的文章将深入物理层,看看比特如何变成信号。
常见问题解答
Q1:为什么需要MAC地址,只用IP不行吗?
答:IP地址和MAC地址服务不同层次的需求,不能互相替代。
IP地址是网络层地址,用于跨网络寻址,有层次结构(网络+主机),便于路由。
MAC地址是链路层地址,用于本地网络寻址,是平面的,便于在局域网内唯一标识设备。
每一跳的转发都需要MAC地址——路由器根据IP决定下一跳,然后用ARP找到下一跳的MAC地址。如果只用IP,需要在每个IP包中携带所有中间路由器的信息,这是不现实的。
分层是网络设计的核心原则,每层解决自己的问题,不要让下层知道上层的事情。
Q2:交换机和路由器有什么区别?
答:交换机和路由器是不同层次的设备。
交换机工作在链路层(传统上),根据MAC地址转发帧,用于连接局域网内的设备。
路由器工作在网络层,根据IP地址转发数据报,用于连接不同的网络。
现代交换机也有三层功能(三层交换机),可以路由IP包,但主要用于局域网内部。路由器主要用于网络之间,支持复杂的路由协议、NAT、防火墙等功能。
简单来说:交换机连接设备(如办公室的电脑),路由器连接网络(如办公室和互联网)。
Q3:什么是STP,为什么需要它?
答:STP(Spanning Tree Protocol,生成树协议)用于防止交换网络中的环路。
环路是危险的——广播帧会无限循环(广播风暴),MAC地址表会震荡,交换机会不堪重负。
STP通过阻塞某些端口,把有环路的物理拓扑变成无环路的逻辑树(生成树),确保任意两台设备之间只有一条路径。
STP的代价是阻塞链路的带宽被浪费。现代替代方案如RSTP(快速生成树)收敛更快,MSTP(多生成树)可以针对不同VLAN计算不同的生成树,提高链路利用率。
在小型网络中,也可以通过设计不配置冗余链路来避免环路,不需要STP。
Q4:WiFi信道是什么,如何选择?
答:WiFi信道是频谱的划分。
2.4GHz有14个信道(1-11是中国可用),每个信道20MHz宽,相邻信道有重叠。实际上只有1、6、11完全不重叠,所以这三个信道最常用。
5GHz有更多信道,重叠更少,干扰更少。
选择信道的原则:
(1)选择干扰最少的信道,可以用WiFi分析工具扫描周围的WiFi信号,选择使用最少的信道。
(2)2.4GHz优先用1、6、11,避免使用部分重叠的信道。
(3)5GHz优先,因为干扰少、速度快。
在公寓楼等密集环境,2.4GHz非常拥挤,5GHz是更好的选择。
Q5:什么是以太网链路聚合?
答:链路聚合(Link Aggregation,也叫LACP或Port Channel)是把多条物理链路组合成一条逻辑链路,提高带宽和可靠性。
例如,把两条1Gbps的链路聚合成一条2Gbps的逻辑链路。
好处:
(1)增加带宽:多条链路同时工作,总带宽是所有链路之和。
(2)冗余:一条链路故障,流量自动切换到其他链路,提高可靠性。
(3)负载均衡:流量可以根据规则(源/目的MAC/IP、哈希等)分布到不同链路。
注意链路聚合的流量分布是按流的,不是按包的——单个流的带宽不会超过单条链路的带宽。对于大流量服务器(如存储服务器),链路聚合是常用的优化手段。