Network Protocols Services
实体和对等实体
实体是任何可以发送或接收信息的硬件或软件进程。
例子:
- 网卡可以发送和接收信息,因此可以看作硬件实体。
- 浏览器进程、Web 服务器进程可以发送和接收应用报文,因此可以看作软件实体。
对等实体是通信双方相同层次中的实体。例如,发送主机应用层中的浏览器进程和接收主机应用层中的 Web 服务器进程互为对等实体;两端数据链路层中的网卡相关功能也可以互为对等实体。
协议
协议是控制两个对等实体进行逻辑通信的规则集合。
两个实体之间并不是有物理链接。对等层看起来像在直接通信,实际数据仍会沿发送方协议栈向下、经过网络传输、再沿接收方协议栈向上。
协议三要素:语法、语义、同步
| 要素 | 含义 | 例子 |
|---|---|---|
| 语法 | 数据与控制信息的格式 | 首部字段如何排列、字段占多少位 |
| 语义 | 通信双方要完成的操作 | 收到 HTTP GET 后应返回请求资源或错误状态 |
| 同步 | 通信双方的时序关系 | 先发送请求,再接收响应;连接建立后再传输数据 |
协议看横向
协议描述的是同一层、不同系统中的对等实体如何逻辑通信。它解决的是横向规则问题。
服务是下层通过层间接口向上层提供的功能。
接口是同一系统内相邻两层之间交互的位置。上层通过服务访问点 SAP 使用下层服务。
第 $n$ 层通过第 $n-1$ 层提供的服务完成自己的通信功能,同时又向第 $n+1$ 层提供服务。也就是说,服务关系是逐层向上的:低层提供能力,高层使用能力。
这三个概念的方向不同:
| 概念 | 方向 | 关键问题 |
|---|---|---|
| 协议 | 横向,同层对等实体之间 | 对等实体按什么规则通信 |
| 服务 | 纵向,下层提供给上层 | 下层能为上层做什么 |
| 接口 | 本机内部,相邻层之间 | 上层在哪里、如何访问下层服务 |
服务访问点和服务原语
服务访问点 SAP 是上层访问下层服务的位置。可以把它理解为层间服务的入口。
服务原语是描述层间服务请求和响应的抽象操作。它强调的是同一系统内上下层如何交互,而不是两个主机之间的物理传输细节。
PDU 和 SDU
对等层之间传送的数据单元称为协议数据单元 PDU。
同一系统内相邻层之间交换的数据单元称为服务数据单元 SDU。
在封装过程中,上层交给本层的数据就是本层的 SDU。本层添加首部或尾部后,形成用于本层对等实体逻辑通信的 PDU。
例如:
- HTTP 请求交给 TCP 后,对 TCP 来说是 SDU。
- TCP 加上 TCP 首部后,形成 TCP 报文段,这是运输层 PDU。
- TCP 报文段交给 IP 后,又成为网络层的 SDU。
- IP 加上 IP 首部后,形成 IP 数据报,这是网络层 PDU。
多个 SDU 可以合成为一个 PDU,一个 SDU 也可以拆分为多个 PDU。具体如何处理取决于该层协议设计。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Elian's blog page!