Computer NetworkNotes

第 02 章:分层模型

zjc 于 2026-01-02 发布

这是《计算机网络 零基础实战指南》的独立章节版。本章从概念、实操和生产排查三个视角展开,代码块保留了原书可直接运行的版本。 分层模型是计算机网络的地图。它把一个复杂问题拆成职责清晰的层次:物理层负责信号,链路层负责同一局域网内的帧传输,网络层负责跨网络寻址,传输层负责进程到进程的通信,应用层负责业务语义。

本章重点不是背 OSI 七层名字,而是理解每层解决什么问题、数据如何穿过协议栈、排障时应该在哪一层找证据。

2.1 OSI 与 TCP/IP 模型

OSI 层 TCP/IP 常见层 核心问题 典型协议
应用层 应用层 业务语义、请求响应 HTTP、DNS、SMTP、RPC
表示层 应用层 编码、压缩、加密 JSON、Protobuf、TLS
会话层 应用层 会话与状态 Cookie、Token、WebSocket
传输层 传输层 端口、可靠或低延迟传输 TCP、UDP、QUIC
网络层 网络层 寻址与路由 IPv4、IPv6、ICMP
数据链路层 链路层 相邻设备帧传输 Ethernet、ARP、VLAN
物理层 物理层 信号与介质 光纤、双绞线、无线

工程中常用五层视角:

Application   业务协议、编码、安全语义
Transport     端口、连接、可靠性和流控
Network       IP 寻址、路由、分片
Link          MAC、帧、VLAN、ARP
Physical      信号、接口、线路

分层不是物理隔离。现代系统里,TLS 在协议上位于传输层之上,但常被归入应用层安全协议;QUIC 基于 UDP,却在用户态实现了可靠传输、流多路复用和加密。

2.2 封装与解封装

发送方逐层加头,接收方逐层去头:

应用数据
  + TCP Header
  = TCP Segment
  + IP Header
  = IP Packet
  + Ethernet Header / Trailer
  = Frame

接收过程相反:

Frame
  -> IP Packet
  -> TCP Segment
  -> Application Data

各层地址:

地址
应用层 URL、域名、用户 ID
传输层 端口号
网络层 IP 地址
链路层 MAC 地址
物理层 接口、端口、信号

一个常见误区是认为 MAC 和 IP 谁替代谁。MAC 标识同一链路上的接口,IP 支持跨网络路由;跨网段通信中,目的 IP 通常不变,而下一跳 MAC 会逐跳变化。

2.3 每层的故障特征

典型现象 排查工具
物理层 接口 down、丢包、速率异常 ethtool、交换机端口
链路层 ARP 失败、VLAN 错、MAC 冲突 arp、ip neigh、tcpdump
网络层 无路由、TTL 超时、丢包 ping、traceroute、mtr
传输层 端口不通、握手失败、重传高 ss、nmap、tcpdump
应用层 404、证书错误、超时、语义错误 curl、日志、trace

示例:

ip link
ip addr
ip route
ip neigh
ss -ntp
curl -v https://www.example.com

排障时先确认范围:单个服务、单台机器、一个子网,还是全网。再从底层往上验证,能显著减少无效猜测。

2.4 协议演进与分层弹性

传统 HTTP/1.1 over TCP over IP 的结构清晰,但性能瓶颈也明显:

HTTP/1.1:队头阻塞
TCP:单一字节流,丢包影响所有请求
TLS:握手带来额外 RTT

现代方案:

方案 变化
HTTP/2 二进制分帧、多路复用,仍基于 TCP
TLS 1.3 握手更短、前向安全更强
HTTP/3 基于 QUIC,集成可靠传输、流复用和 TLS 1.3
QUIC 运行在 UDP 上,在用户态实现传输能力

这说明分层模型是分析工具,而不是僵化架构。工程中仍会按职责分层,但实现边界可以根据性能、安全和演进需求调整。

2.5 用分层模型做架构设计

设计一个后端服务时,每层都有决策:

应用层:接口语义、幂等、错误码、压缩、认证
传输层:TCP/UDP、连接池、超时、心跳
网络层:VPC、子网、路由、可用区
链路层:VLAN、网卡、bond
物理层:机房、带宽、拓扑

示例:跨机房调用 RTT 高,应用层应减少请求次数;网卡丢包,应用层重试只能止血,根因仍要修网络;证书配置错误,换 HTTP 短连接无法解决问题。

本章小结

分层模型把网络拆成物理、链路、网络、传输和应用职责,数据通过封装和解封装穿过协议栈。MAC 用于链路内通信,IP 用于跨网络路由,端口用于进程通信,应用协议承载业务语义。现代 QUIC 和 HTTP/3 说明分层边界可以演进,但分析问题时应继续按职责分层定位。

思考题

  1. OSI 七层和 TCP/IP 五层分别适合什么场景?
  2. 发送一个 HTTP POST 时,数据经历了哪些封装过程?
  3. 为什么跨网段通信中目的 IP 常不变而下一跳 MAC 变化?
  4. “端口不通”和“无路由”分别对应哪一层?
  5. 用分层模型写一份服务访问失败的排查清单。