Protocol Stack Architecture(协议栈架构 / 5层模型)
Components(分层组件与核心职责)
-
5. Application Layer(应用层):
- 职责:直接为用户应用程序提供网络通信服务,定义应用进程间的交互规则与数据格式。
- 数据单位:报文(Message)
- 关键标识:域名 / URL / 进程接收端点
-
4. Transport Layer(传输层):
- 职责:提供**端到端(进程到进程 / Process-to-Process)**的逻辑通信,负责端口多路复用;可靠传输、流量控制与差错恢复由 TCP 等具体传输层协议提供。
- 数据单位:报文段(Segment / Datagram)
- 关键标识:端口号(Port Number)
-
3. Network Layer(网络层):
- 职责:提供**主机到主机(Host-to-Host)**的跨网络寻址与路由转发。
- 数据单位:IP 数据报(IP Datagram / Packet)
- 关键标识:IP 地址(IP Address)
-
2. Data Link Layer(数据链路层):
- 职责:负责**相邻节点之间(Hop-by-Hop / Node-to-Node)**的数据帧组装、局域网介质访问与差错检测。
- 数据单位:帧(Frame)
- 关键标识:MAC 地址(Hardware / Physical Address)
-
1. Physical Layer(物理层):
- 职责:负责物理介质上原始比特流的电/光/无线信号传输与调制。
- 数据单位:比特(Bit)
- 关键标识:物理电信号 / 频率 / 光脉冲
Relationship(分层模型与结构)
flowchart TD App["5.Application Layer (应用层: 业务报文)"] Trans["4.Transport Layer (传输层: 端口复用 / 端到端通信)"] Net["3.Network Layer (网络层: IP 寻址 / 跨网路由)"] Link["2.Data Link Layer (数据链路层: 局域网相邻节点传输)"] Phys["1.Physical Layer (物理层: 物理介质比特流)"] App --> Trans --> Net --> Link --> Phys
Data Flow(封装与解封装数据流)
发送端逐层添加控制头部(Encapsulation),接收端逐层拆剥头部(Decapsulation):
flowchart TD Data["[ 应用数据 ] (Message)"] Data --> Seg["[ TCP/UDP 头 | 应用数据 ] (Segment)"] Seg --> Pkt["[ IP 头 | TCP/UDP 头 | 应用数据 ] (Datagram)"] Pkt --> Frm["[ Eth 头 | IP 头 | TCP/UDP 头 | 应用数据 | Eth 尾 ] (Frame)"] Frm --> Bit["[ 物理介质 0/1 比特流 ] (Bits)"]
Device Processing Scope & Multi-Hop Data Flow(设备处理深度与跨跳流转)
不同的网络设备在协议栈中所处的操作层级不同:
1. 设备处理层级
- Host(端系统):处理完整 5 层。产生或消费应用数据,负责从应用数据到物理比特流的完整封装与解封装。
- Router(路由器):普通转发路径通常处理到 网络层(3层)。它接收链路层帧,取出 IP 数据报,读取目的 IP 地址并查路由表,再为下一跳重新封装新的链路层帧。
- Switch(二层交换机):普通二层交换路径处理到 数据链路层(2层)。它在同一局域网内部根据 MAC 地址表转发帧,不承担跨网络 IP 路由职责。
2. 端到端路径上的设备处理层级
备注:
- 二层转发 Frame:Switch 工作到数据链路层,只读取以太网帧中的 MAC 地址,并根据 MAC 地址表把 Frame 转发到对应端口;它不读取 IP 地址,也不执行跨网络路由。
- 三层路由:Router 工作到网络层,会取出 Frame 中承载的 IP 数据报,读取目的 IP 地址并选择下一跳,再重新封装新的链路层 Frame。
flowchart TD HostA["Host A<br>处理 5 层<br>Application / Transport / Network / Link / Physical"] Switch1["Switch S1<br>处理到 2 层<br>Link / Physical"] Router1["Router R1<br>处理到 3 层<br>Network / Link / Physical"] Router2["Router R2<br>处理到 3 层<br>Network / Link / Physical"] Switch2["Switch S2<br>处理到 2 层<br>Link / Physical"] HostB["Host B<br>处理 5 层<br>Application / Transport / Network / Link / Physical"] HostA -->|本地局域网 Frame| Switch1 Switch1 -->|二层转发 Frame| Router1 Router1 -->|三层路由<br>重新封装下一跳 Frame| Router2 Router2 -->|三层路由<br>重新封装下一跳 Frame| Switch2 Switch2 -->|二层转发 Frame| HostB HostA -.-> EndToEnd["端到端语义<br>源/目的 IP、TCP/UDP 端口、应用数据"] EndToEnd -.-> HostB Router1 -.-> HopNote1["逐跳处理<br>查目的 IP / 更新 TTL<br>改写链路层 MAC"] Router2 -.-> HopNote2["逐跳处理<br>查目的 IP / 更新 TTL<br>改写链路层 MAC"] classDef host fill:#e8f3ff,stroke:#2f6fae,stroke-width:1px classDef switch fill:#eef8ec,stroke:#4f8a3b,stroke-width:1px classDef router fill:#fff4df,stroke:#b36b00,stroke-width:1px classDef note fill:#f7f7f7,stroke:#999,stroke-dasharray: 4 3 class HostA,HostB host class Switch1,Switch2 switch class Router1,Router2 router class EndToEnd,HopNote1,HopNote2 note
3. 跨跳传输中地址的变化规则
在数据从 Host A 经过路由器发往 Host B 的过程中:
- 网络层(源 / 目的 IP 地址):在普通 IP 转发中保持端到端不变。源 IP (
Host A IP) 与目的 IP (Host B IP) 用于标识全局通信双方;但 IP 头中的 TTL / Hop Limit、校验和等逐跳字段会被路由器更新。NAT、隧道等机制属于额外情况。 - 数据链路层(MAC 地址):逐跳重写。每一段链路只关心“本跳发送者 MAC”与“下一跳接收者 MAC”。路由器根据路由表选出下一跳,再通过 ARP / 邻居发现获得下一跳 MAC,并重新封装链路层帧。
- 传输层与应用层数据:普通路由器转发时不处理 TCP/UDP 端口与应用数据;这些内容在端系统之间保持端到端语义。
Design Goal(设计目标)
- 关注点分离(Separation of Concerns):将复杂网络通信拆解为相互独立的层次,每层仅处理特定维度的通信问题。
- 隐藏实现细节(Abstraction & Information Hiding):上层通过标准接口使用下层服务,无需了解下层的具体物理或算法实现。
- 异构网络互联:以网络层(IP)为核心,向上支撑多样化的传输协议与应用,向下兼容多样化的物理传输介质。