★基本概念
为了足够通俗,俺先要介绍一些基本概念。
◇信道(channel)
这是通讯领域非常基本的概念,肯定要先聊聊它。
通俗地说,信道就是“传送信息的通道”。
◇信道的类型
首先,信道可以从广义上分为“物理信道 & 逻辑信道”。
顾名思义,“物理信道”就是直接使用某种【物理介质】来传送信息;至于“逻辑信道”——是基于“物理信道”之上抽象出来的玩意儿(待会儿讲到“协议栈”的时候再聊)。
◇信道的带宽
“带宽”指的是:某个信道在单位时间内最大能传输多少比特的信息。
请注意:
电气领域 & 计算机领域都有“带宽”这个概念,但两者的定义不太一样。电气领域所说的“带宽”指的是“模拟带宽”,单位是“赫兹/Hz”;计算机领域所说的“带宽”指“数字带宽”,单位是“比特率”或“字节率”。
后续章节提到“带宽”,都是指计算机领域的术语。
◇带宽的单位——容易把外行绕晕
“比特率”或“字节率”很容易搞混淆。用英文表示的话——大写字母 B
表示【字节】;小写字母 b
表示【比特】。
由于带宽的数字通常很大,要引入“K、M、G”之类的字母表示数量级,于是又引出一个很扯蛋的差异——“10进制”与“2进制”的差异。
【10进制】的 K
表示 1000;M
表示 1000×1000(1百万)
【2进制】的 K
表示 1024(2的10次方);M
表示 1024×1024(2的20次方)
为了避免扯皮,后来国际上约定了一个规矩:对【2进制】的数量级要加一个小写字母 i
。比如说:Ki
表示 1024;Mi
表示 1024×1024 …… 以此类推。
举例:
1Kbps 表示“1000比特每秒”
1KiBps 表示“1024字节每秒”
◇信道的工作模式:单工 VS 半双工 VS 全双工
再来说说信道的工作模式。大致可以分为如下三种。为了让大伙儿比较好理解,俺对每一种都举相应的例子。
单工(simplex)
比如“电台广播”就是典型的【单工】。“电台”可以发信号给“收音机”,但“收音机”【不能】发信号给“电台”。
半双工(half-duplex)
比如“单条铁路轨道”,就是典型的【半双工】。火车在单条铁轨上,可以有两种运行方向;但对于同一个瞬间,只能选其中一个方向(否则就撞车了)。
全双工(full-duplex)
比如“光纤”就是典型的【全双工】。在同一根光导纤维中,可以有多个光束【同时相向】传播,互相不会干扰对方。
◇端点
为了叙述方便,俺把参与通讯的对象(主体)称作“通讯端点”,简称“端点”。
这里的“端点”是广义的,可以是硬件(比如某个网卡),也可以是软件(比如某个应用程序)。
◇单播、组播/多播、广播、选播
对于“网络通讯”,至少得有 N 个端点参与,并且【N ≥ 2】才有意义。
当 N 个端点构成一个网络,这时候就会涉及到“单播、组播、广播”这几个概念。
通俗地说:
单播(unicast)——发送给网络中的指定的【单个】端点
组播/多播(multicast)——发送给网络中的指定的【多个】端点
广播(broadcast)——发送给网络中的【所有】端点
选播(anycast)——发送给网络中随机选择的【单个】端点
◇通讯协议(protocol)
所谓的“通讯协议”就是:参与通讯的各方所采用的某种【约定】。只有大家都遵守这个约定,才有可能相互传递信息。
打个比方:如果两个人要用自然语言交流,前提是:双方使用相同(或相互兼容)的自然语言。
“通讯协议”就类似某种自然语言,参与通讯的多个端点,都必须能理解这个语言。
发表回复