Network Layered Architecture
分层要解决什么
一次网络通信同时涉及很多问题:比特怎样变成信号,数据怎样在一段链路上传,分组怎样跨网络转发,目的主机怎样把数据交给正确进程,应用进程怎样解释收到的内容。
分层就是把这些问题按职责拆开:
- 每一层只解决一类问题。
- 下层向上层提供服务。
- 上层通过接口使用下层服务,不需要知道下层内部实现。
- 同一层的通信双方遵守同一层协议。
分层不是把网络设备物理切成几块,而是把通信功能按逻辑组织起来。
三种体系结构
常见的网络体系结构有三种:OSI 七层模型、TCP/IP 四层模型、五层原理模型。
| 模型 | 用法 | 特点 |
|---|---|---|
| OSI 七层模型 | 概念分析、标准化讨论 | 层次细,把会话、表示、应用分开 |
| TCP/IP 四层模型 | 因特网实际采用的体系结构 | 把底部链路和物理相关内容合为网络接口层 |
| 五层原理模型 | 学习计算机网络原理 | 在 TCP/IP 基础上拆出数据链路层和物理层 |
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。
五层原理模型
五层原理模型自下而上为:物理层、数据链路层、网络层、运输层、应用层。
| 层次 | 核心问题 | 常见数据单元 |
|---|---|---|
| 物理层 | 比特如何变成信号并在传输媒体上传播 | 比特流 |
| 数据链路层 | 数据如何在一段链路或一个局域网内传输 | 帧 |
| 网络层 | 数据如何跨多个网络到达目的主机 | 分组,使用 IP 时称 IP 数据报 |
| 运输层 | 数据应该交给主机中的哪个应用进程 | TCP 报文段、UDP 数据报 |
| 应用层 | 应用进程之间交换什么、按什么应用协议解释 | 应用报文 |
MAC 地址主要服务于一段链路或局域网内的交付;IP 地址服务于跨网络寻址和路由;端口号用于标识主机中的应用进程。
物理层
物理层只关心比特如何传输。它不理解帧、IP 数据报、TCP 报文段这些结构,只把上层交来的比特流转换成电信号、光信号或无线信号。
物理层关注:
- 用什么传输媒体。
- 用什么信号表示
0和1。 - 接口、电气特性、光学特性、传输速率等。
数据链路层
数据链路层负责一段链路或一个局域网内的数据传输。
它通常处理:
- 成帧:把网络层交来的 IP 数据报封装成帧。
- MAC 寻址:在局域网或链路范围内找到下一跳。
- 差错检测:通过帧尾等信息发现传输差错。
- 介质访问控制:在共享介质中协调多个主机发送。
网络层
网络层负责跨网络传输。
互联网由多个网络通过路由器互连。网络层要回答:
- 目的主机在哪个网络。
- 下一跳应该走哪条链路。
- 路由器如何按目的 IP 地址查表转发。
使用 IP 协议时,网络层的数据单元通常称为 IP 数据报。
运输层
网络层能把数据送到目的主机,但主机上可能同时运行多个网络应用。运输层要把数据交给正确的应用进程。
运输层关注:
- 端口号:区分主机中的应用进程。
- 端到端通信:源进程到目的进程。
- 传输差错处理:TCP 可以提供可靠传输,UDP 提供较简单的无连接传输服务。
应用层
应用层建立在进程间通信之上。它规定应用进程之间如何交换报文、如何解释报文。
典型应用层协议:
- HTTP:网页访问。
- SMTP:电子邮件发送。
- FTP:文件传送。
- DNS:域名解析。
封装、转发与解封
一次网页访问中,数据会沿发送主机协议栈向下封装,经过路由器转发,再沿接收主机协议栈向上解封。
发送主机从上到下封装:
- 应用层构造 HTTP 请求报文。
- 运输层添加 TCP 首部,形成 TCP 报文段。
- 网络层添加 IP 首部,形成 IP 数据报。
- 数据链路层添加帧首部和帧尾,形成帧。
- 物理层把帧看作比特流,并转换成信号发送。
接收主机从下到上解封:
- 物理层把信号恢复为比特流。
- 数据链路层识别帧,去掉帧首部和帧尾,取出 IP 数据报。
- 网络层去掉 IP 首部,取出运输层数据。
- 运输层去掉 TCP 首部,取出应用报文。
- 应用层把 HTTP 报文交给对应应用进程处理。
每一层把上层交来的数据整体当作自己的数据部分,再加上本层控制信息。接收端按相反顺序逐层去掉控制信息。
主机要运行网络应用,所以通常具有完整协议栈。发送主机需要从应用层向下封装;接收主机需要从物理层向上解封到应用层。
路由器的基本任务是网络互连和转发。它收到一段链路上的帧后,通常只处理到网络层:
- 物理层接收信号,恢复比特流。
- 数据链路层识别入链路帧,去掉该链路的帧首部和帧尾。
- 网络层查看 IP 首部,查转发表,决定下一跳。
- 数据链路层为下一段链路重新封装帧。
- 物理层发送到下一段链路。
因此,路由器转发 IP 数据报时,链路层首部会一跳一换,而 IP 层以上的内容通常不被普通转发过程处理。
数据单元名称
| 层次 | 对等层之间传送的数据单元 |
|---|---|
| 应用层 | 应用报文 |
| 运输层 | TCP 报文段、UDP 数据报 |
| 网络层 | 分组;使用 IP 时称 IP 数据报 |
| 数据链路层 | 帧 |
| 物理层 | 比特流 |
这些名称容易混在一起。判断时先看它属于哪一层:链路层叫帧,网络层叫分组或 IP 数据报,运输层要看 TCP 还是 UDP。