分层要解决什么

一次网络通信同时涉及很多问题:比特怎样变成信号,数据怎样在一段链路上传,分组怎样跨网络转发,目的主机怎样把数据交给正确进程,应用进程怎样解释收到的内容。

分层就是把这些问题按职责拆开:

  • 每一层只解决一类问题。
  • 下层向上层提供服务。
  • 上层通过接口使用下层服务,不需要知道下层内部实现。
  • 同一层的通信双方遵守同一层协议。

分层不是把网络设备物理切成几块,而是把通信功能按逻辑组织起来。

三种体系结构

900

常见的网络体系结构有三种:OSI 七层模型、TCP/IP 四层模型、五层原理模型。

模型 用法 特点
OSI 七层模型 概念分析、标准化讨论 层次细,把会话、表示、应用分开
TCP/IP 四层模型 因特网实际采用的体系结构 把底部链路和物理相关内容合为网络接口层
五层原理模型 学习计算机网络原理 在 TCP/IP 基础上拆出数据链路层和物理层

OSI 七层模型

OSI 参考模型自下而上为:

层次 功能
物理层 在传输媒体上传输比特流,规定机械、电气、功能和过程特性
数据链路层 把网络层数据封装成帧,在相邻节点之间传输,并进行差错检测、流量控制等
网络层 进行逻辑寻址、路由选择和分组转发,使数据能够跨多个网络到达目的主机
运输层 为主机中的进程提供端到端通信,可提供可靠传输、差错控制、流量控制等
会话层 管理不同主机进程之间的会话,包括会话建立、维持、同步和释放
表示层 处理数据表示问题,如编码转换、数据格式转换、加密解密、压缩解压缩
应用层 为用户应用进程提供网络服务,定义具体应用协议
OSI 的表示层常被忽略

遇到“数据格式转换、编码、加密、压缩”这类描述时,不要机械回答应用层。若题目明确在 OSI 七层模型内考查层功能,答案可能是表示层。

TCP/IP 四层模型

TCP/IP 体系结构自下而上通常分为:

层次 功能 典型协议或技术
网络接口层 负责主机接入具体网络,完成链路层和物理层相关功能 以太网、Wi-Fi 等
网际层 以 IP 为核心,负责 IP 寻址、路由选择和跨网络分组转发 IP、ICMP、ARP 常在相关语境中一起讨论
运输层 为应用进程提供端到端传输服务 TCP、UDP
应用层 为具体网络应用提供通信规则 HTTP、DNS、SMTP、FTP

TCP/IP 的网络接口层没有规定某一种固定接口技术,因此可以适配以太网、Wi-Fi 等不同网络。网际层的核心协议是 IP。

五层原理模型

900

五层原理模型自下而上为:物理层、数据链路层、网络层、运输层、应用层。

层次 核心问题 常见数据单元
物理层 比特如何变成信号并在传输媒体上传播 比特流
数据链路层 数据如何在一段链路或一个局域网内传输
网络层 数据如何跨多个网络到达目的主机 分组,使用 IP 时称 IP 数据报
运输层 数据应该交给主机中的哪个应用进程 TCP 报文段、UDP 数据报
应用层 应用进程之间交换什么、按什么应用协议解释 应用报文
地址与层次

MAC 地址主要服务于一段链路或局域网内的交付;IP 地址服务于跨网络寻址和路由;端口号用于标识主机中的应用进程。

## 五层各自做什么

物理层

物理层只关心比特如何传输。它不理解帧、IP 数据报、TCP 报文段这些结构,只把上层交来的比特流转换成电信号、光信号或无线信号。

物理层关注:

  • 用什么传输媒体。
  • 用什么信号表示 01
  • 接口、电气特性、光学特性、传输速率等。

数据链路层

数据链路层负责一段链路或一个局域网内的数据传输。

它通常处理:

  • 成帧:把网络层交来的 IP 数据报封装成帧。
  • MAC 寻址:在局域网或链路范围内找到下一跳。
  • 差错检测:通过帧尾等信息发现传输差错。
  • 介质访问控制:在共享介质中协调多个主机发送。

网络层

网络层负责跨网络传输。

互联网由多个网络通过路由器互连。网络层要回答:

  • 目的主机在哪个网络。
  • 下一跳应该走哪条链路。
  • 路由器如何按目的 IP 地址查表转发。

使用 IP 协议时,网络层的数据单元通常称为 IP 数据报。

运输层

网络层能把数据送到目的主机,但主机上可能同时运行多个网络应用。运输层要把数据交给正确的应用进程。

运输层关注:

  • 端口号:区分主机中的应用进程。
  • 端到端通信:源进程到目的进程。
  • 传输差错处理:TCP 可以提供可靠传输,UDP 提供较简单的无连接传输服务。

应用层

应用层建立在进程间通信之上。它规定应用进程之间如何交换报文、如何解释报文。

典型应用层协议:

  • HTTP:网页访问。
  • SMTP:电子邮件发送。
  • FTP:文件传送。
  • DNS:域名解析。

封装、转发与解封

一次网页访问中,数据会沿发送主机协议栈向下封装,经过路由器转发,再沿接收主机协议栈向上解封。

发送主机从上到下封装:

  1. 应用层构造 HTTP 请求报文。
  2. 运输层添加 TCP 首部,形成 TCP 报文段。
  3. 网络层添加 IP 首部,形成 IP 数据报。
  4. 数据链路层添加帧首部和帧尾,形成帧。
  5. 物理层把帧看作比特流,并转换成信号发送。

接收主机从下到上解封:

  1. 物理层把信号恢复为比特流。
  2. 数据链路层识别帧,去掉帧首部和帧尾,取出 IP 数据报。
  3. 网络层去掉 IP 首部,取出运输层数据。
  4. 运输层去掉 TCP 首部,取出应用报文。
  5. 应用层把 HTTP 报文交给对应应用进程处理。
封装的核心

每一层把上层交来的数据整体当作自己的数据部分,再加上本层控制信息。接收端按相反顺序逐层去掉控制信息。

## 主机和路由器层次

850

主机要运行网络应用,所以通常具有完整协议栈。发送主机需要从应用层向下封装;接收主机需要从物理层向上解封到应用层。

路由器的基本任务是网络互连和转发。它收到一段链路上的帧后,通常只处理到网络层:

  1. 物理层接收信号,恢复比特流。
  2. 数据链路层识别入链路帧,去掉该链路的帧首部和帧尾。
  3. 网络层查看 IP 首部,查转发表,决定下一跳。
  4. 数据链路层为下一段链路重新封装帧。
  5. 物理层发送到下一段链路。

因此,路由器转发 IP 数据报时,链路层首部会一跳一换,而 IP 层以上的内容通常不被普通转发过程处理。

数据单元名称

层次 对等层之间传送的数据单元
应用层 应用报文
运输层 TCP 报文段、UDP 数据报
网络层 分组;使用 IP 时称 IP 数据报
数据链路层
物理层 比特流

这些名称容易混在一起。判断时先看它属于哪一层:链路层叫帧,网络层叫分组或 IP 数据报,运输层要看 TCP 还是 UDP。