第 1 章 · 网络概述与分层

分层把传输、寻址、路由、可靠性、安全等问题拆开:每层只解决自己的问题,向上提供服务、向下屏蔽细节。

1.1 OSI 七层 vs TCP/IP 四层

OSI 是 ISO 提出的理想参考模型(七层),TCP/IP 是现实中实际运行的协议栈(四层,教学常按五层讲)。

OSI(7 层)TCP/IP(4 层)常见协议/设备
7应用层应用层HTTP、DNS、SMTP、DHCP
6表示层(并入应用层)加密、编码、压缩
5会话层(并入应用层)会话建立/管理
4传输层传输层TCP、UDP
3网络层网络层IP、ICMP、路由器
2数据链路层网络接口层以太网、MAC、交换机
1物理层网络接口层网线、光纤、集线器

对比:OSI 先有模型后有协议,5/6/7 三层几乎从不单独实现;TCP/IP 把它们合并成一层。OSI 胜在概念清晰,TCP/IP 胜在简单落地。

1.2 分层思想:服务、接口、协议

  • 服务(service):本层向上层提供的能力(「我能做什么」),如传输层提供「可靠的字节流」。
  • 接口(interface):上下层之间交互的方式(「怎么调用我」),如 socket 就是应用层到传输层的接口(见第 9 章)。
  • 协议(protocol)对等层之间通信的规则(「同一层怎么对话」),如 TCP 规定报文格式与握手流程(见第 4 章)。

层与层之间是「垂直」调用(服务/接口),对等层之间是「水平」对话(协议)。数据在物理介质上流动,但逻辑上只有对等层在互相理解——这叫对等层通信

1.3 封装与解封装

发送端每层加本层头部(可能还有尾部)= 封装(encapsulation);接收端逐层剥掉 = 解封装(decapsulation)

应用层:      [ HTTP 数据 ]
传输层:   [ TCP 首部 | HTTP 数据 ]              ← 段 segment
网络层: [ IP 首部 | TCP 首部 | HTTP 数据 ]       ← 包 packet
链路层: [ 帧头 | IP 首部 | ... | 帧尾 ]          ← 帧 frame
物理层: 0101101001...(比特流)                  ← 比特 bit
  • 每层头部只被对等层解读:TCP 首部只有对端 TCP 读,IP 首部只有对端 IP 读。
  • 上层数据对下层是不透明的负载(payload)——路由器只看到 IP 首部,不关心里面是 TCP 还是 UDP。

1.4 为什么分层

  1. 解耦:改物理介质(双绞线换光纤)不影响 HTTP;改应用不影响链路层。
  2. 简化设计:每个协议只解决一层的问题。
  3. 互操作性:遵守同一层协议,不同厂商设备就能互通。
  4. 可演进:可单独替换某一层(如 IPv4 → IPv6,见第 5 章)。

代价是冗余与性能损耗——每层加头 + 层间拷贝;极端性能场景(内核旁路、RDMA)会「绕过分层」。