Skip to main content

网络协议分层

7 层模型

  • 应用层(HTTP, FTP...)
  • 展示层
  • 会话层
  • 传输层(TCP, UDP)
  • 网络层
  • 数据链路层
  • 物理层

低三层

物理层 Physical Layer

定义物理设备如何传输数据,底层一个个位(bit)的数据如何变成物理信号

  • 将数据链路层发生的数据传递行为转化成为物理设备识别的信号
  • 封装大量底层物理设备的能力

在通信的实体间建立数据链路链接(提供数据在设备和设备间的传输能力)

  • 流控制:发送者接收者之间同步数据收发速度和数据量
  • 错误控制:检测数据有没有出错,并重发出错数据

网络层 Network Layer

为数据在逻辑单元(如 IP 地址)之间创建逻辑链路(提供传输能力)

  • 路由:决定数据的下一站在哪里
  • 寻址:为数据封包增加头信息(地址等)

传输层 Transport Layer

  • 向用户提供可靠的端到端or主机到主机(End-to-End or host-to-host)服务
  • 建立连接保证数据封包发送、接收到的顺序一致
  • 提供可靠性(发送者知道数据有没有被完整送达)
  • 提供流控制(发送者和接收者同步速率)
  • 提供多路复用(多工,Multiplexing, 多种信号复用一个信道)
  • 向高层屏蔽了下层数据通信的细节

会话层 Session Layer

  • 提供管理会话的方法(Open/Close/ReOpen/检查状态等)
  • 提供对底层连接断断续续的隐藏
  • 甚至对多种底层流的隐藏(提供数据同步点)

展示层 Presentation Layer

  • 也称作语法层(Syntax Layer)
  • 将应用层中的数据转化为传输格式,保留语义(如:序列化、加密解密、字符串编码解码等)
  • 确保数据发送出去后可以被接受者理解

应用层 Application Layer

定义了网络主机提供的方法和接口(业务协议、高级协议等),往往直接对应用户行为 如 HTTP、FTP、SMTP 等

  • 为应用软件提供了很多服务
  • 构建于 TCP 协议之上
  • 屏蔽网络传输相关细节

举个栗子

Olu 和 fxpby 发微信

  • Olu 提交的输入被微信存储成某种内部协议格式 - 应用层
  • 数据被转换成为传输用的格式(如加密、压缩等)- 展示层
  • 微信客户端建立到服务器的链接 - 会话层
  • 微信客户端向服务器传输数据 - 传输层
  • 一个个数据封包从主机传输到服务器 - 网络层
  • 数据帧在一个个设备之间传输 - 数据链路层
  • 数据最终以光电信号的形式在物理设备间传输 - 物理层

数据视角的分层架构

  • 把应用分成 N 层
  • 替换其中一层不影响其他层的工作,不需要重构整个应用
  • 设计要点
    • 必要性、独立性、可替换
    • 层的颗粒度
    • 数据可追踪性

数据视角分层架构图