实体与协议#
实体、协议、服务、服务访问点 · 第一讲 视频讲解 https://www.bilibili.com/video/BV1tixK6AENj/
一句话#
实体是每一层里真正干活的那个模块,协议是同一层的两个实体之间横着约定的规矩,规矩的内容就是语法、语义、同步这三样。
一、先看协议栈#
两台机器通起来,不是两坨铁在说话,是一层一层的模块对着说话。
主机 A 主机 B
┌────────────┐ ┌────────────┐
│ 应用层 │ │ 应用层 │
├────────────┤ ├────────────┤
│ 运输层 │ │ 运输层 │
├────────────┤ ├────────────┤
│ 网络层 │ │ 网络层 │
├────────────┤ ├────────────┤
│ 数据链路层 │ │ 数据链路层 │
├────────────┤ ├────────────┤
│ 物理层 │ │ 物理层 │
└─────┬──────┘ └──────┬─────┘
└────────── 中间的网 ──────────┘
每一层都是一个具体做事的模块,不是一个抽象说法。真正在干活的是这些模块。
二、实体#
实体(entity):表示任何可发送或接收信息的硬件或软件进程。
- 硬件也算:网卡、光模块,都是实体
- 软件也算:协议栈里的一段代码,也是实体
- 多数时候,实体就是一个特定的软件模块
对等实体#
在不同机器上、处于同一层的两个实体,互称对等实体(peer entities)。
A 机网络层实体 ┈┈┈┈对等实体┈┈┈┈ B 机网络层实体
注意:对等实体说的是「同一层」,不是「同一台机器」。A 的网络层和 B 的运输层不是对等实体。
三、数据实际怎么走#
对等实体之间的通信是逻辑上的,实际的数据传送要穿过下面各层。
| 看得见的 | 看不见的 |
|---|---|
| 逻辑上:A 的 n 层 ↔ B 的 n 层直接对话 | 实际:一层层往下、过网、再一层层往上 |
应用层 ●━━━━━━━━━━━━━━━━━━━━━━━━━━● 应用层 ← 逻辑上直接对话(虚线)
│ │
运输层 ● ● 运输层 ← 实际走的路(实线)
│ │
网络层 ● ● 网络层
│ │
数据链路层● ● 数据链路层
│ │
物理层 ●━━━━━━━━━━━━━━━━━━━━━━━━━━● 物理层
数据往下走的时候一层层加首部,往上走的时候一层层拆首部。这是"实际的路"。 但站在应用层的角度看,它就是在跟对面应用层说话——中间那些层根本不知道,也不需要知道。
四、协议#
协议:为进行网络中的数据交换而建立的规则、标准或约定。
或者更准确地说:
协议是控制两个对等实体(或多个实体)进行通信的规则的集合。
为什么说协议是"横向"的#
┌──────── 协议(水平)────────┐
A 的 n 层实体 ━━━━━━━━━━━━━━━━━━━━━ A 的 n 层实体
协议只约束对等实体之间怎么说话。它不管上下层的事。
所以后面讲服务的时候会有个对照:
| 协议 | 服务 | |
|---|---|---|
| 方向 | 水平(横向) | 垂直(纵向) |
| 管谁 | 对等实体之间 | 上层与下层之间 |
五、协议三要素#
| 要素 | 管什么 | 教材原文 |
|---|---|---|
| 语法 | 数据的结构、格式 | 数据与控制信息的结构或格式 |
| 语义 | 要做什么 | 需要发出何种控制信息,完成何种动作以及做出何种响应 |
| 同步 | 先后顺序 | 事件实现顺序的详细说明 |
用寄快递对照#
| 要素 | 快递里对应什么 |
|---|---|
| 语法 | 单子上的收件人、地址、电话,各填在哪个格子里 |
| 语义 | 这个包裹里装的是什么,到了该怎么处理(自取 / 送货上门 / 拒收退回) |
| 同步 | 先签收、再拆封;不能反过来 |
三样齐了,才是一套能真正跑起来的规矩。
严格说,「同步」在英文里是 timing,讲的是事件实现的顺序,不只是"时间"。教材译作"同步",别理解成"时钟对齐"。
六、本集结论#
实体 = 每一层里能收发信息的那个模块
│
同一层的两个 → 对等实体
│
对等实体之间怎么说话 → 协议(横着定的)
│
语法 · 语义 · 同步
一句话:
实体是干活的,协议是对等实体横向定的规矩,三要素是语法、语义、同步。
下一集换个方向看:竖着看,层与层之间靠什么交接——服务、服务原语、服务访问点 SAP。
依据表#
| 片中表述 | 依据 | 备注 |
|---|---|---|
| 实体是可发送或接收信息的硬件或软件进程 | §1.5.4 | 原文定义 |
| 许多情况下实体就是一个特定的软件模块 | §1.5.4 | 原文 |
| 对等实体指不同机器上同一层的实体 | §1.5.4 | 原文表述 |
| 协议是为进行网络中的数据交换而建立的规则、标准或约定 | §1.5.2 | 原文定义 |
| 协议是控制两个对等实体(或多个实体)进行通信的规则的集合 | §1.5.2 / §1.5.4 | 原文 |
| 协议三要素:语法、语义、同步 | §1.5.2 | 原文 |
| 语法 = 数据与控制信息的结构或格式 | §1.5.2 | 原文 |
| 语义 = 需要发出何种控制信息,完成何种动作以及做出何种响应 | §1.5.2 | 原文 |
| 同步 = 事件实现顺序的详细说明 | §1.5.2 | 原文 |
| 对等实体间通信是逻辑上的,实际数据要穿过下面各层 | §1.5.2 | 原文表述 |
| 协议是「水平的」 | §1.5.4 | 原文(与「服务是垂直的」对举) |
| 画面用五层协议栈为例 | 教学示意 | 教材用「第 n 层 / 第 n+1 层」的通用表述,具体层数不影响结论 |
| 「实体」示例取网络层 | 教学示意 | 实体概念不限层,任何一层都有实体 |
| 寄快递的比喻 | 教学类比 | 非教材内容,仅用于建立直觉 |
| 「同步」不是时钟对齐 | 语义澄清 | 英文为 timing,指事件实现顺序 |
说明:本集没有展开服务、服务原语、服务访问点 SAP,也没有展开面向连接/无连接服务——这些留给第二讲。