Protocol Stack Architecture(协议栈架构 / 5层模型)

Components(分层组件与核心职责)

  1. 5. Application Layer(应用层):

    • 职责:直接为用户应用程序提供网络通信服务,定义应用进程间的交互规则与数据格式。
    • 数据单位:报文(Message)
    • 关键标识:域名 / URL / 进程接收端点
  2. 4. Transport Layer(传输层):

    • 职责:提供**端到端(进程到进程 / Process-to-Process)**的逻辑通信,负责端口多路复用;可靠传输、流量控制与差错恢复由 TCP 等具体传输层协议提供。
    • 数据单位:报文段(Segment / Datagram)
    • 关键标识:端口号(Port Number)
  3. 3. Network Layer(网络层):

    • 职责:提供**主机到主机(Host-to-Host)**的跨网络寻址与路由转发。
    • 数据单位:IP 数据报(IP Datagram / Packet)
    • 关键标识:IP 地址(IP Address)
  4. 2. Data Link Layer(数据链路层):

    • 职责:负责**相邻节点之间(Hop-by-Hop / Node-to-Node)**的数据帧组装、局域网介质访问与差错检测。
    • 数据单位:帧(Frame)
    • 关键标识:MAC 地址(Hardware / Physical Address)
  5. 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(设计目标)

  1. 关注点分离(Separation of Concerns):将复杂网络通信拆解为相互独立的层次,每层仅处理特定维度的通信问题。
  2. 隐藏实现细节(Abstraction & Information Hiding):上层通过标准接口使用下层服务,无需了解下层的具体物理或算法实现。
  3. 异构网络互联:以网络层(IP)为核心,向上支撑多样化的传输协议与应用,向下兼容多样化的物理传输介质。