通讯概论

欢迎来到通讯 (Communications) 的学习笔记!在本节中,我们将探讨计算机如何确保数据安全、如何在传输过程中检查错误,以及计算机内部的不同组件是如何相互沟通的。无论是你正在传送一条文字信息,还是你的 CPU 正在与内存 (RAM) 沟通,“通讯”都是计算机科学的心脏。别担心,如果刚开始觉得内容很多,我们会将其拆解成简单易懂的小单元!


1. 基本加密方法

当我们传送数据时,不希望黑客或“窃听者”读取内容。加密 (Encryption) 是一个使用算法 (Algorithm) 将可读的数据(明文,Plaintext)转变为杂乱无章的代码(密文,Ciphertext)的过程,只有拥有正确密钥 (Key) 的人才能理解。

必备术语:

明文 (Plaintext):原始且可读的信息(例如:"Hello World")。
密文 (Ciphertext):加密后、无法直接阅读的信息(例如:"Sffbu Xpsme")。
密码 (Cipher):用于加密数据的秘密方法或算法。
密钥 (Key):由密码所使用的一串秘密信息(例如密码或数字),用于锁定或解锁数据。

凯撒密码 (Caesar Cipher)

这是最古老且最简单的密码之一。它的运作方式是将字母表中的每个字母向后移动固定的位数。

例子:若位移量为 3,'A' 会变成 'D','B' 会变成 'E',依此类推。

为什么它很脆弱?
1. 只有 25 种可能的密钥(位移量)。计算机可以在瞬间尝试所有组合!
2. 它容易受到频率分析 (Frequency Analysis) 的攻击。在英文中,字母 'E' 非常常见。如果某个特定的符号在密文中出现频率很高,那它很可能就是 'E'。
3. 一旦你破解出其中一个字母,你就知道了整段信息的位移量。

弗纳姆密码 (Vernam Cipher) —— “完美”的安全性

弗纳姆密码很特别,因为如果使用得当,它是数学上无法破解的。要达到“完美安全性”,必须满足以下条件:
• 密钥必须是完全随机的
• 密钥长度必须至少与明文一样长
• 密钥必须仅使用一次(通常称为“一次性密码本,One-Time Pad”)。
• 密钥必须在寄件人和收件人之间严格保密。

快速回顾:凯撒密码之所以“脆弱”,是因为它很容易被猜到。弗纳姆密码之所以“完美”,是因为它没有任何规律可循!

对称与非对称加密

对称加密 (Symmetric Encryption):使用相同的密钥进行加密和解密(例如:凯撒密码和弗纳姆密码)。这里最大的问题是密钥交换问题 (Key Exchange Problem)——如何在不被黑客窃取的情况下,将秘密密钥传送给你的朋友?
非对称加密 (Asymmetric Encryption):使用两个不同但数学相关的密钥(公开密钥和私有密钥)。这解决了密钥交换问题,因为你永远不需要分享你的私有密钥!

关键摘要:加密将明文转为密文。弗纳姆密码是唯一能提供完美安全性的加密方式,前提是密钥必须是随机、一次性且足够长的。


2. 错误侦测与修正

当数据从一个地方传输到另一个地方时,有时位元(0 和 1)会因为电气干扰或“杂讯”而发生翻转。我们使用三种主要方法来侦测这些错误:

1. 同位检查位元 (Parity Bits)

我们在二进制字串中增加一个额外的位元(同位检查位元),使其中 1 的总数为偶数奇数
偶同位 (Even Parity):1 的总数必须是偶数。
奇同位 (Odd Parity):1 的总数必须是奇数。

例子(偶同位):如果要传送 1011,这里有三个 1。为了使其成为偶数,我们加入一个 1,结果变成 10111

2. 多数表决 (Majority Voting)

我们不只传送一次数据,而是将每个位元重复传送三次。计算机检视这三个位元并进行“投票”。
• 如果接收到 1, 0, 1,计算机会假设该位元原本应该是 1(因为 1 的数量较多)。
• 这非常棒,因为它不仅能找出错误,还能实际修正它!

3. 检查总和 (Checksums)

寄件人会对数据进行计算以得出一个总数值(检查总和),并将此数值随数据一同传送。收件人进行相同的计算,如果收件人的总数与寄件人的总数不符,则表示发生了错误。

比较表:

同位检查 (Parity):简单,但无法侦测两个位元同时翻转的情况。
多数表决 (Majority Voting):非常可靠且能修正错误,但传送的数据量是原本的 3 倍(非常慢!)。
检查总和 (Checksums):非常适合大型文件,但需要更多的处理效能来进行计算。

关键摘要:同位检查和检查总和通常仅能侦测错误,而多数表决则能修正错误。


3. 内部通讯 (总线)

在计算机内部,处理器 (CPU)、内存 (RAM) 和 I/O 控制器(例如你的键盘或屏幕)需要进行沟通,它们使用“总线 (Bus)”系统来完成此工作。

三大总线:

将总线想象成高速公路,不同的公路运载不同的东西:

1. 地址总线 (Address Bus):携带数据去往的位置 (Location)。它是单向的 (Unidirectional),从 CPU 到内存。如果地址总线有 \( n \) 条线,CPU 可以存取 \( 2^n \) 个内存地址。
2. 数据总线 (Data Bus):携带实际的数据或指令。它是双向的 (Bidirectional),所以数据可以在 CPU 和其他组件之间往返。
3. 控制总线 (Control Bus):携带指令信号(例如“读取”或“写入”)来协调所有运作。它也是双向的

记忆小撇步:以“披萨外送”作比喻

地址总线:披萨要送往的房屋地址。
数据总线:实际要外送的披萨。
控制总线:打电话给店家,指示“制作披萨”或“现在外送”。

什么会影响效能?

总线宽度 (Bus Width):总线的线数越多,一次能携带的数据就越多。64 位的资料总线就像 64 线道的高速公路——比 8 线道的快得多!
地址总线宽度:这决定了计算机能使用的最大内存容量。

快速回顾:地址总线 = 哪里。数据总线 = 什么。控制总线 = 如何/何时

关键摘要:内部通讯仰赖系统总线。这些总线的宽度直接影响计算机可以定址多少内存,以及传输数据的速度。


总结检查清单

✔ 你是否知道明文密文之间的区别?
✔ 你能否解释为什么凯撒密码很容易被破解?
✔ 你能否列出实现完美安全弗纳姆密码的 4 个条件?
✔ 你能否计算偶数/奇数同位检查位元
✔ 你是否理解多数表决如何修正错误?
✔ 你能否说出三种内部总线及其运作方向?

如果刚开始觉得这部分很复杂也不用担心!试着画出总线的图示,或是练习几次凯撒密码的位移,你会更清楚它们是如何运作的。你可以做到的!