在 TCP/IP 四层模型中,网络接口层负责让主机能够接入具体的网络,并在相邻节点之间传输数据。
这一层关注的是最接近网络硬件的一部分:传输介质、网卡、以太网、MAC 地址、以太网帧以及交换机的基本工作方式。理解这一层之后,才能进一步理解 IP 地址、子网和路由。
网络接口层是什么
TCP/IP 四层模型可以简单表示为:
┌────────────────────┐│ 应用层 │├────────────────────┤│ 传输层 │├────────────────────┤│ 网际层 │├────────────────────┤│ 网络接口层 │└────────────────────┘网络接口层位于最底部,负责:
主机 ↓接入具体网络 ↓通过网络介质传输数据它关注的是:
数据如何真正进入网卡 ↓如何封装成链路层帧 ↓如何通过网线、光纤或无线介质发送 ↓如何被相邻设备接收因此,这一层与硬件的关系最为密切。
可以粗略理解成:
网际层 ↓“我要把数据发往哪个 IP” ↓网络接口层 ↓“这一跳通过什么介质、哪个接口、什么帧发出去”需要注意:
网络接口层不是某一个具体协议,而是 TCP/IP 模型中对主机本地网络接入相关机制的抽象。
在不同教材和资料中,这一层也可能被称为:
Network Access LayerLink Layer网络接入层链路层本文主要使用:
网络接口层
这一名称。
网络通信为什么需要这一层
假设主机 A 要向主机 B 发送数据:
主机 A │ ▼网络 │ ▼主机 B上层协议最终会产生:
IP Packet但 IP Packet 本身不能直接通过网线传播。
还需要:
IP Packet ↓封装 ↓链路层帧 ↓网卡 ↓物理介质因此可以形成:
应用数据 ↓传输层数据 ↓IP 数据包 ↓Ethernet Frame ↓网卡 ↓网线 / 光纤 / 无线网络接口层真正关心的,就是最下面这部分。
网络传输介质
网络数据最终必须通过某种介质进行传输。
常见的有:
双绞线光纤无线电波可以简单分为:
有线网络├── 双绞线└── 光纤
无线网络└── 无线电波不同介质决定了:
传输距离带宽抗干扰能力部署方式成本等特性。
双绞线
双绞线(Twisted Pair)是以太网中非常常见的传输介质。
它由多对相互绞合的铜线组成。
可以简单理解为:
两根铜线 ╲╱ ╱╲ ╲╱不断绞合之所以采用绞合结构,主要是为了降低电磁干扰以及改善传输特性。
典型网线中通常包含:
4 对双绞线=8 根导线例如常见的:
Cat5eCat6Cat6ACat7等类别。
这些类别对应不同的传输性能和布线要求。
双绞线的分类
常见网线类别包括:
| 类别 | 常见用途 |
|---|---|
| Cat5e | 常见千兆以太网 |
| Cat6 | 家庭、办公网络 |
| Cat6A | 更高性能的布线环境 |
| Cat7 | 更高等级的屏蔽布线场景 |
| Cat8 | 数据中心等更高带宽场景 |
不过:
网线类别并不能简单等价成某一个固定速率。
实际能够达到的速率还与:
线缆长度接口收发器布线环境连接器等因素有关。
因此不要简单记成:
Cat6 = 某个固定速度Cat7 = 某个固定速度更合理的理解是:
线缆类别规定了相应的电气性能和传输能力,实际网络速率取决于整个链路。
RJ45 与网络接口
我们日常说的:
RJ45 网口通常指的是常见的 8P8C 模块化连接方式及其接口形态。
例如:
电脑 │ ▼┌─────────┐│ RJ45口 │└────┬────┘ │ │ 网线 ▼┌─────────┐│ 交换机 │└─────────┘需要注意:
“RJ45”在日常使用中经常被用来泛指以太网水晶头和网口,但严格的连接器术语与以太网电气标准并不是一回事。
在学习和实际运维中,理解其作为:
铜缆以太网物理连接即可。
光纤
与双绞线不同,光纤使用光信号传输数据。
可以简单表示:
电信号 ↓光模块 ↓光信号 ↓光纤 ↓光模块 ↓电信号常见的光纤可以分为:
单模光纤多模光纤单模光纤
单模光纤通常具有:
传输距离长衰减较低适合长距离通信因此常见于:
运营商网络数据中心互联园区骨干城域网络等场景。
多模光纤
多模光纤通常用于较短距离的高速通信。
常见于:
机房数据中心园区内部等环境。
双绞线与光纤对比
| 对比 | 双绞线 | 光纤 |
|---|---|---|
| 介质 | 铜 | 光 |
| 抗电磁干扰 | 相对较弱 | 很强 |
| 常见距离 | 短距离 | 可从短距离到长距离 |
| 施工成本 | 通常较低 | 通常较高 |
| 常见场景 | 家庭、办公室 | 骨干、数据中心、长距离 |
| 供电能力 | 某些以太网方案支持 | 本身不能提供普通铜缆式供电 |
无线介质
无线局域网不使用网线作为传输介质,而是利用无线电波进行通信。
可以理解为:
主机 │ ▼无线网卡 │ ▼无线电波 │ ▼无线接入点例如 Wi-Fi。
因此网络接口层并不意味着:
必须插网线而是:
主机通过某种具体的链路技术接入网络。
这个“具体链路”可以是:
EthernetWi-Fi等。
不过本文重点放在最常见的有线以太网。
网卡与网络接口
什么是网卡
主机需要通过:
NIC(Network Interface Controller)
连接网络。
日常通常直接称为:
网卡例如:
主机 │ ├── Ethernet 网卡 ├── Wi-Fi 网卡 └── 虚拟网卡Linux 中,这些网络接口最终会表现为:
eth0ens33enp0s3wlan0等网络设备。
具体接口名称会根据发行版、系统配置以及设备命名规则不同而变化。
网络接口不一定是物理网卡
现代 Linux 中:
Network Interface不一定对应一块真实硬件。
例如:
物理网卡虚拟网卡BridgeVLAN Interface都可以表现为网络接口。
因此:
网卡是硬件概念,而网络接口是操作系统中的抽象。
可以理解成:
物理硬件 ↓网络设备 ↓操作系统网络接口后续学习 Linux 网络管理时,会进一步介绍:
ip link等工具如何查看和管理这些接口。
MAC 地址
什么是 MAC 地址
以太网网络接口通常具有一个:
MAC 地址
MAC(Media Access Control)地址是链路层使用的重要地址。
常见的 48-bit Ethernet MAC 地址可以写成:
00:11:22:33:44:55也可以写成:
00-11-22-33-44-55本质上都是:
48 bit=6 ByteMAC 地址有什么作用
在局域网中,设备需要知道:
这一帧应该交给哪个网络接口因此以太网帧中包含:
Source MACDestination MAC例如:
主机 AMAC = AA:AA:AA:AA:AA:AA
主机 BMAC = BB:BB:BB:BB:BB:BBA 发送给 B:
Source MAC↓AA:AA:AA:AA:AA:AA
Destination MAC↓BB:BB:BB:BB:BB:BB这样链路层设备就可以根据 MAC 地址处理该帧。
MAC 地址并不是永久不变的硬件身份证
虽然很多物理网卡出厂时具有一个硬件地址,但操作系统通常可以修改接口使用的 MAC 地址。
此外:
虚拟机容器虚拟网络接口无线设备都可能使用人为生成或动态配置的 MAC 地址。
因此:
MAC 地址更应该理解成网络接口在链路层使用的地址,而不是“设备永远不变的身份证”。
Ethernet
什么是 Ethernet
Ethernet(以太网)是现代局域网最常见的链路技术之一。
IEEE 802.3 系列标准定义了以太网相关的 MAC 与物理层技术。
可以简化为:
上层数据 ↓Ethernet Frame ↓网卡 ↓双绞线 / 光纤在现代网络中,以太网已经不仅仅是一种“网线通信方式”。
它包含:
MACFrameEthernet PHY物理介质等多个方面。
Ethernet Frame
为什么需要帧
上层得到的:
IP Packet不能直接作为以太网介质上的传输单位。
因此需要进行封装:
IP Packet ↓Ethernet Frame也就是:
以太网通过 Frame(帧)承载上层数据。
Ethernet II 帧
常见 Ethernet II 帧可以简化表示为:
┌──────────────┬──────────────┬────────────┬──────────────┐│ 目标 MAC │ 源 MAC │ EtherType │ Payload ││ 6 Byte │ 6 Byte │ 2 Byte │ │└──────────────┴──────────────┴────────────┴──────────────┘实际以太网帧还存在:
FCS等字段。
可以更完整地表示为:
┌────────┬────────┬────────┬──────────────┬──────┐│Dst MAC │Src MAC │Type │Payload │ FCS │└────────┴────────┴────────┴──────────────┴──────┘Destination MAC
表示:
这一帧在当前链路上发送给哪个目标接口。
例如:
Dst MAC = BB:BB:BB:BB:BB:BBSource MAC
表示:
这一帧由哪个接口发送。
例如:
Src MAC = AA:AA:AA:AA:AA:AA因此:
Source MAC↓谁发送
Destination MAC↓发给谁EtherType
EtherType 用于标识:
Payload 中封装的上层协议类型。
例如:
IPv4IPv6等。
可以理解为:
Ethernet Frame │ ├── MAC Header │ ├── EtherType │ │ │ ├── IPv4 │ └── IPv6 │ └── Payload因此同一种以太网技术能够承载不同的网络层协议。
Payload
Payload 就是:
以太网帧真正承载的上层数据。
例如:
Ethernet Frame │ ▼IPv4 Packet或者:
Ethernet Frame │ ▼IPv6 Packet所以:
Ethernet↓负责在链路上承载上层数据FCS
FCS(Frame Check Sequence)用于帧级错误检测。
发送端:
数据 ↓计算校验值 ↓FCS接收端:
收到帧 ↓重新检查 ↓判断是否出现传输错误因此:
FCS 是链路层错误检测机制,不等于端到端可靠传输。
MAC 地址的通信类型
MAC 地址除了普通的单播地址,还涉及:
单播组播广播单播
表示:
一个发送者 ↓一个目标例如:
A ─────────► BDestination MAC 是某一个具体接口的地址。
广播
以太网广播地址通常为:
ff:ff:ff:ff:ff:ff表示:
向当前广播域中的所有相关接口发送。
可以理解成:
┌── B │A ──► Switch ── C │ └── D广播帧会被交换设备在对应广播域内传播。
广播是后续理解:
广播域VLAN等概念的重要基础。
组播
组播表示:
一个发送者 ↓一组接收者与广播相比:
广播↓所有设备
组播↓加入特定组的设备在后续学习 IPv4 / IPv6 组播时会进一步展开。
交换机
交换机做什么
交换机是局域网中非常常见的设备。
传统 Ethernet LAN 中,交换机主要依据:
Destination MAC决定帧从哪个端口发出。
可以简单理解为:
┌───────────┐ │ Switch │ └─────┬─────┘ ┌──────┼──────┐ │ │ │ ▼ ▼ ▼ PC A PC B PC C交换机关注的核心对象之一就是:
MAC 地址。
MAC 地址表
交换机内部通常维护一张:
MAC Address Table
例如:
MAC Address PortAA:AA:AA:AA:AA:AA 1BB:BB:BB:BB:BB:BB 2CC:CC:CC:CC:CC:CC 3也就是建立:
MAC ↓Port的对应关系。
因此收到一个帧后,可以:
Destination MAC ↓查询 MAC Table ↓找到对应端口 ↓转发MAC 地址学习
交换机并不是一开始就知道所有设备在哪里。
例如:
PC AMAC = AA从:
Port 1进入交换机。
交换机看到:
Source MAC = AAIngress Port = 1于是可以学习:
AA → Port 1这就是:
MAC Address Learning
随着网络通信不断发生,MAC 地址表会逐渐建立。
已知单播
假设交换机已经知道:
BB → Port 2此时收到:
Destination MAC = BB交换机可以:
查表 ↓Port 2 ↓只向 Port 2 转发因此不会把帧发送到所有端口。
未知单播
如果交换机暂时不知道:
Destination MAC位于哪个端口,那么可能会进行:
Flooding(泛洪)
可以简单理解成:
未知目标 │ ▼泛洪 │ ├── Port 1 ├── Port 2 └── Port 3随后,如果目标主机产生响应,交换机就可以根据响应帧的 Source MAC 学习它的位置。
广播域
理解交换机之后,还需要理解:
广播域(Broadcast Domain)
广播帧:
ff:ff:ff:ff:ff:ff并不会无限传播到整个互联网。
它通常只会在:
当前二层广播域中传播。
例如:
Switch ┌────┼────┐ │ │ │ ▼ ▼ ▼ A B C如果 A 发送广播:
A││ Broadcast▼Switch│├── B└── CB、C 可以收到。
但广播不会通过普通三层路由器直接转发到另一个广播域。
因此:
交换网络中的广播范围是有限的。
后续学习 VLAN 时,这个概念会非常重要。
Ethernet、MAC 与交换机之间的关系
到这里可以把几个概念串起来:
Ethernet │ ┌───────┴───────┐ │ │ ▼ ▼ Frame MAC │ │ └───────┬───────┘ ▼ Switch │ ▼ MAC Address Table │ ▼ Port也可以从通信过程理解:
主机 A │ │ Ethernet Frame │ │ Src MAC = A │ Dst MAC = B ▼交换机 │ │ 查 MAC Table ▼目标端口 │ ▼主机 B因此:
MAC↓标识链路层接口
Frame↓承载数据
Switch↓根据 MAC 处理帧
Port↓连接具体链路一次完整的以太网通信
假设:
主机 AMAC = AA:AA:AA:AA:AA:AA
主机 BMAC = BB:BB:BB:BB:BB:BBA 要把一个 IP Packet 发送给 B。
从网络接口层来看,可以简化成:
IP Packet │ ▼ 封装 Ethernet Frame │ ┌─────────┴─────────┐ │ │ ▼ ▼ Src MAC = A Dst MAC = B │ ▼ 网卡 │ ▼ 双绞线 │ ▼ 交换机 │ │ 查 MAC 地址表 ▼ 目标端口 │ ▼ 双绞线 │ ▼ 网卡 B │ ▼ 接收 Frame │ ▼ 取出 IP Packet这样就可以看到:
上层↓IP Packet
网络接口层↓Ethernet Frame
物理传输↓网卡 + 网线一跳通信
网络接口层还有一个非常重要的概念:
它主要负责相邻节点之间的通信。
例如:
A ── Switch ── BA 发给 B:
A↓Switch↓B这是本地网络中的通信。
但如果:
A ── Router ── Router ── B那么 A 到 B 并不是一个单独的链路层通信。
可以理解为:
A → Router 1是一跳;
Router 1 → Router 2又是一跳;
Router 2 → B还是一跳。
因此网络接口层主要关注:
当前这一跳如何把数据交给相邻设备。
至于:
最终应该走哪条路径则属于网际层的职责。
网络接口层与网际层的边界
这一点对于后续学习非常重要。
可以先明确划分:
网络接口层│├── 网卡├── 双绞线├── 光纤├── Wi-Fi├── Ethernet├── MAC├── Frame└── Switch而:
网际层│├── IPv4├── IPv6├── IP 地址├── 子网├── CIDR├── 路由└── ICMP本文不展开:
ARP也不讨论:
IP 地址子网路由默认网关ICMP因为这些内容放到后面的:
网际层
会更加统一。
从数据封装看网络接口层
把整个 TCP/IP 协议栈放在一起,可以看到:
应用层 │ ▼Application Data │ ▼传输层 │ ▼TCP Segment / UDP Datagram │ ▼网际层 │ ▼IP Packet │ ▼网络接口层 │ ▼Ethernet Frame │ ▼Physical Medium因此:
网络接口层解决的是“数据如何进入具体网络并通过当前链路传输”的问题。
它不负责决定整个互联网的路径。
网络接口层的整体模型
现在可以把这一层浓缩成:
网络接口层 │ ┌──────────────┼──────────────┐ │ │ │ ▼ ▼ ▼ 传输介质 网络接口 链路协议 │ │ │ ┌────┼────┐ ┌──┴──┐ ┌──┴─────┐ │ │ │ │ │ │ │ 双绞线 光纤 Wi-Fi 网卡 MAC Ethernet Frame │ ▼ Switch │ ▼ MAC Address Table再进一步缩成:
数据 ↓Ethernet Frame ↓网卡 ↓物理介质 ↓交换机 ↓相邻网络设备所以,这一层最核心的几个概念可以概括为:
介质负责传输比特,网卡负责连接主机与网络,MAC 地址标识链路层接口,Ethernet Frame 承载上层数据,交换机根据 MAC 地址在局域网中转发帧。
理解这些之后,再往上学习:
网际层 ↓IP ↓子网 ↓CIDR ↓路由就会知道:
IP↓解决跨网络寻址
MAC↓解决当前链路上的交付
Ethernet Frame↓真正承载这一跳的数据这也正是 TCP/IP 分层模型存在的意义:不同层负责不同范围的问题,并通过层与层之间的接口协同完成一次完整的网络通信。