# 1.2 计算机网络体系结构与参考模型

## 1.2.1 计算机网络分层结构

### 1、相关概念

* **计算机网络体系结构**
  * 简称体系结构，从<mark style="color:orange;">**功能**</mark>上描述计算机网络结构
  * 是<mark style="color:orange;">**分层结构**</mark>，是抽象的
  * 每层遵守某些网络协议以完成基本功能
  * <mark style="color:purple;">**是计算机网络各层及其协议的总和**</mark>
* **实体**：每一层中的活动元素，第n层中的活动元素称为n层实体
* **对等实体**：位于同一层的实体
* **协议**：为进行网络中的对等实体数据交换而建立的规则、标准或约定称为网络协议。<mark style="color:orange;">**只有对等实体之间才存在协议**</mark>
* **协议的三要素**：
  * 语法：规定传输数据的格式（数据格式、起止方式等）
  * 语义：规定所要完成的功能（各分段的功能）
  * 同步：规定各种操作的顺序
* **接口（访问服务点SAP）**
  * 上层使用下层服务的入口
  * 只有相邻层之间存在接口，服务的实现细节对上层完全屏蔽
* **服务**
  * 下层为相邻上层提供的功能调用
  * 当某一层使用前一层提供的服务时，还包含下层所提供的所有服务

![](https://1628974532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKXaHhVFQadnoaaLPklBX%2Fuploads%2Fgit-blob-d0072e845c3952c2eb86a9bc95d272f95161ef19%2FSDU%E3%80%81PCI.png?alt=media)

**SDU服务数据单元**：为完成用户所要求的功能而应传送的数据

**PCI协议控制信息**：控制协议操作的信息

**PDU协议数据单元**：对等层次之间传送的数据单位

{% hint style="warning" %}
每一层的数据（SDU）加上控制信息（PCI）构成下一层所使用的SDU。
{% endhint %}

![](https://1628974532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKXaHhVFQadnoaaLPklBX%2Fuploads%2Fgit-blob-c7b8172c35cfa9d34160701b75dc4a01ff9e4a82%2F%E4%BA%94%E5%B1%82%E5%B0%81%E8%A3%85.png?alt=media)

### 2、分层的基本原则

* 各层之间相互<mark style="color:orange;">**独立**</mark>，每层只实现一种相对独立的功能
* 每层之间<mark style="color:orange;">**界面自然清晰**</mark>，易于理解，相互交流尽可能少
* 结构上可分割开，每层都采用<mark style="color:orange;">**最合适的技术**</mark>来实现
* 保持下层对上层的独立性，<mark style="color:orange;">**上层单向使用下层提供的服务**</mark>
* 整个分层结构应该能促进标准化工作。

## 1.2.2 OSI参考模型

<mark style="color:purple;">**开放性系统互联参考模型**</mark>，通称OSI参考模型。

![传输流程](https://1628974532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKXaHhVFQadnoaaLPklBX%2Fuploads%2Fgit-blob-2cd121e836913464dd698bed0a6805e66e1a82dc%2FOSI%E5%8F%82%E8%80%83%E6%A8%A1%E5%9E%8B.png?alt=media)

{% hint style="warning" %}
应用层、表示层、会话层属于**资源子网**

网络层、数据链路层、物理层属于**通信子网**

传输层连接资源子网与通信子网
{% endhint %}

### 1、应用程

所有<mark style="color:orange;">**能和用户交互**</mark><mark style="color:red;">**产生网络流量**</mark>的<mark style="color:purple;">**程序**</mark>。

#### 应用层服务

* 文件传输（FTP）
* 电子邮件（SMTP）
* 万维网（HTTP）

### 2、表示层

用于处理在两个通信系统中交换信息的表示方式（语法和语义）。

#### 表示层功能

* 数据<mark style="color:orange;">**格式变换**</mark>
  * 比特流→JPG图片
* 数据<mark style="color:orange;">**加密解密**</mark>
* 数据<mark style="color:orange;">**压缩和恢复**</mark>
  * 对视频流进行压缩等

#### 表示层协议

* ASCII
* JEPG

### 3、会话层

向表示层实体/用户进程提供<mark style="color:orange;">**建立连接**</mark>并在连接上<mark style="color:orange;">**有序**</mark>地<mark style="color:purple;">**传输数据**</mark>。

#### 会话层功能

* 建立、管理、终止会话
* 使用<mark style="color:orange;">**校验点**</mark>可使会话在通信失效时从校验点/同步点继续<mark style="color:purple;">**恢复通信**</mark>，实现数据同步

#### 会话层协议

* ASP
* ADSP

### 4、传输层

负责主机中<mark style="color:orange;">**两个进程**</mark>的<mark style="color:purple;">**通信**</mark>，即<mark style="color:orange;">**端到端**</mark>的通信。

传输单位是<mark style="color:purple;">**报文段**</mark>或<mark style="color:purple;">**用户数据报**</mark>。

#### 传输层的功能

* **可靠传输、不可靠传输**
* **差错控制**：修正报文中的顺序错误、缺失等
* **流量控制**：依据收包速度控制发送方的发包速度
* **复用分用**
  * **复用**：多个应用层进程可以同时使用下层的服务
  * **分用**：传输层把收到的数据分别发送给上层相应的进程

#### 传输层协议

* TCP
* UDP

### 5、网络层

主要任务是把<mark style="color:purple;">**分组**</mark>从源端传到目的端，为分组交换网上的不同主机提供通信服务。

网络层传输单位是<mark style="color:purple;">**数据报**</mark>。

#### 网络层功能

* **路由选择**
* **流量控制**：限制发送方的速度
* **差错控制**：奇偶校验等
* **拥塞控制**：统筹整个网络中所有结点，防止发生拥塞

#### 网络层协议

* IP
* IPX
* ICMP
* IGMP
* ARP
* RARP
* OSPF

### 6、数据链路层

主要任务是把网络层传下来的数据报<mark style="color:orange;">**组装成帧**</mark>。

数据链路层/链路层的传输单位是<mark style="color:purple;">**帧**</mark>。

#### 数据链路层功能

* **成帧**：定义帧的开始和结束
* **差错控制**：帧错+位错
* **流量控制**：限制发送方数据
* **访问（接入）控制**：控制对信道的访问

#### 数据链路层协议

* SDLC
* HDLC
* PPP
* STP

### 7、物理层

主要任务是在物理媒体上实现比特流的<mark style="color:orange;">**透明传输**</mark>。

物理层传输单位是<mark style="color:purple;">**比特**</mark>。

{% hint style="success" %}
透明传输：不管所传数据是什么样的比特组合，都应当能够在链路上传送
{% endhint %}

#### 物理层功能

* **定义接口特性**
* **定义传输模式**：单工、双工、半双工
* **定义传输速率**
* **比特同步**
* **比特编码**

#### **物理层协议**

* Rj45
* 802.3

## 1.2.3 TCP/IP参考模型

![与OSI模型的对照](https://1628974532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKXaHhVFQadnoaaLPklBX%2Fuploads%2Fgit-blob-c02937e5652682803aa230d956a2c1d20b0243a8%2FTCPIP.png?alt=media)

### 1、TCP/IP与OSI模型的异同

* **相同**
  * 都分层
  * 基于独立的协议栈的概念
  * 可以实现异构网络互联
* **不同**
  * OSI定义三点：服务、协议、接口
  * OSI先出现，**参考模型先于协议发明**，不偏向特定协议
  * TCP/IP设计之初就考虑到异构网互联问题，将IP作为重要层次
  * 连接方式不同：

|  分层 |  OSI参考模型 | TCP/IP模型 |
| :-: | :------: | :------: |
| 网络层 | 无连接+面向连接 |    无连接   |
| 传输层 |   面向连接   | 无连接+面向连接 |

{% hint style="success" %}
**面向连接**分为三个阶段

1. 第一是建立连接，在此阶段，发出一个建立连接的请求。
2. 只有在连接成功建立之后，才能开始数据传输，这是第二阶段。
3. 接着，当数据传输完毕，必须释放连接。

**面向无连接**没有这么多阶段, 它直接进行数据传输。
{% endhint %}

### 2、五层参考模型

将OSI参考模型与TCP/IP协议综合，得到5层参考模型。

![5层参考模型的结构](https://1628974532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKXaHhVFQadnoaaLPklBX%2Fuploads%2Fgit-blob-e7f7fed640103deb9e6b06ea5c08211aa1346ea3%2F5%E5%B1%82%E5%8F%82%E8%80%83%E6%A8%A1%E5%9E%8B.png?alt=media)

5层参考模型的数据封装流程如下图所示

![](https://1628974532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKXaHhVFQadnoaaLPklBX%2Fuploads%2Fgit-blob-7da22e2047d99a4522fe6e8d2522dff94b08c404%2F5%E5%B1%82%E5%8F%82%E8%80%83%E6%A8%A1%E5%9E%8B%E6%95%B0%E6%8D%AE%E5%B0%81%E8%A3%85.png?alt=media)
