导语:在之前的课程中,我们提到 IP 协议是互联网的"细腰"。那么在这条细腰之下,支撑起整个数字世界物理基础的到底是什么?"0 和 1"是如何变成网线里的电压,或是空气中的电磁波的?本单元,我们将进入计算机科学与电子工程的交汇点,揭开信号调制、纠错编码、以太网共享机制以及 WiFi 协议的硬核内幕。

Main Point
- 物理层基础:香农极限、信号调制 (ASK/FSK/PSK/QAM)。
- 抗干扰魔法:时钟恢复、FEC 前向纠错 (里德-所罗门码)、交织技术。
- 以太网与链路层:CSMA/CD 协议、MAC 地址、交换机的进化。
- 无线网络 (WiFi):无线电的特殊性、隐藏终端问题、CSMA/CA 与 RTS/CTS 机制。
- 分片与重组 (Fragmentation)。
1. Physical Layer: Capacity and Modulation (物理层:容量与调制)
1.1 Shannon Limit (香农极限)
- 理论天花板 :克劳德·香农在1948年提出了伟大的香农定理 C=Blog2(1+S/N)C = B \log_2(1 + S/N)C=Blog2(1+S/N)。它告诉我们,在带宽 BBB 固定、信噪比 S/NS/NS/N 固定的物理信道中,数据传输速率 CCC 是有绝对物理上限的。
- 工程意义 :为了逼近这个极限,工程师们绞尽脑汁发明了各种复杂的编码和调制技术。今天的 5G 和光纤通信,其传输效率已经极其逼近香农极限。
1.2 Analog Signal (模拟信号基础)
为了让数据在物理介质中跑起来,我们需要用到波。
- 频率 (Frequency):波振动的快慢。
- 带宽 (Bandwidth):频率的可用范围。
- 相位 (Phase):波在一个周期内的起始位置。
- (注:光速约为 1英尺/纳秒,这是电信号传输的物理速度极限。)
1.3 Modulation: ASK, FSK (基础调制)
调制 (Modulation) 就是把"0和1"的数字信息,打包进物理波形里的过程。(就像写好信后,把它装进信封交由邮差传递)。
- ASK (振幅键控):通过改变波的"高低(振幅)"来传信息。比如大振幅是 1,小振幅是 0。
- FSK (频移键控):通过改变波的"快慢(频率)"来传信息。比如高频是 1,低频是 0。
1.4 Modulation: PSK (相移键控)
- PSK (相移键控):通过改变波的"起始位置(相位)"来传信息。
- 钟摆比喻:想象一个旋转的钟摆,振幅和频率都不变,只改变钟摆每次开始摇晃的初始角度。接收方可以通过检测这个角度突变来读取信息。
1.5 Shifting Phase (相位的移动)
- 通过精确控制相位的移动(比如绝对相移或相对相移),我们可以在不增加带宽的情况下传递更多信息。
1.6 I / Q Modulation (I/Q 调制)
通信工程的核心黑科技!它将两个相互独立的波(正弦波和余弦波)组合在一起:
- I (In-phase):同相分量。
- Q (Quadrature):正交分量。
- 最终发送出去的符号 (Symbol),就是这两个分量的线性组合。
1.7 I / Q Constellations (I/Q 星座图)
- 星座图是 I/Q 调制的"可视化地图"。它是一个二维坐标系(横轴是 I,纵轴是 Q)。
- 图上的每一个点(就像夜空的星星),代表一种特定的波形状态,也对应着一组特定的二进制数据。
1.8 Symbols vs. Bits (符号与比特:绝对不能混淆)
- Bits (比特) :纯粹的逻辑信息,你要传的
0和1。 - Symbols (符号):物理传输的载体,是星座图上的一个点(一种电平或波形)。
- 关系 :一个符号可以携带多个 比特。如果你的星座图有 4 个点,每个点就能携带 2 个 bit (
00, 01, 10, 11)。
1.9 Example: 16-QAM
- 16阶正交幅度调制 (16-QAM) :星座图上有 4×4=164 \times 4 = 164×4=16 个点。
- 因为 24=162^4 = 1624=16,所以每个物理符号可以携带 4 个比特。这就是通过复杂的调制技术,提升信道传输效率的完美例证。
2. Physical Layer: Bit Errors and Coding (物理层:误码与编码)
物理世界充满干扰,如何抵制错误比特的影响?
2.1 Signal to Noise Ratio (SNR, 信噪比)
- 衡量信号质量的核心指标:有用信号功率 / 无用噪声功率。
- 就像在嘈杂的酒吧里聊天,你的声音 (Signal) 必须盖过背景音乐 (Noise) 对方才能听清。
2.2 High Noise Reception (高噪声接收)
- 当 SNR 极低时,信号被噪声彻底淹没,接收端根本无法分辨发来的是 0 还是 1。
2.3 SNR/BER Curves (信噪比/误码率曲线)
- BER (Bit Error Rate):误码率。
- 这条曲线展示了残酷的物理现实:SNR 越高,BER 越低。工程师的一切努力都是为了把这条曲线往左下角压。
2.4 Coding (编码魔法)
除了改变波形,我们还能在数据层面做手脚:
- 减少冗余 (信源编码):比如霍夫曼编码、ZIP 压缩,把 100M 的数据压成 50M,提高传输效率。
- 增加冗余 (信道编码) :在物理层,为了对抗噪声,我们反而要故意增加冗余(如 CRC校验、汉明码、LDPC码),让接收端有能力发现并纠正错误。
2.5 Overview (总结)
- 链路层比特和物理层比特极少是 1:1 映射的。直接发原始 bit 太容易出错了。
- 引入编码增益 (Coding Gain),通过复杂的数学编码,让硬件在面临少量芯片读写错误时,依然具备极强的鲁棒性 (Robustness)。
3. Physical Layer: Clocks and Clock Recovery (时钟与时钟恢复)
发送方以 1Gbps 的速度发数据,接收方怎么知道什么时候该去读取一个 bit?
3.1 Data is transmitted using a clock
- 双方必须有"节拍器(时钟)"。利用触发器 (Flip-Flop) 读取电压。如果两边的时钟频率哪怕差了一点点(不同步),接收方就会多读或漏读数据,导致整段数据全部错位崩溃。
3.2 Asynchronous communication (异步通信)
- 没有全局共享的时钟。靠发一个 Start bit (起始位) 唤醒接收方,然后赶紧发几个 bit,再用 Stop bit (停止位) 结束。
- 这种方法效率极低,只适合键盘鼠标这种低速设备。
3.3 Synchronous Communication (同步通信)
- 发送方和接收方使用相同的节拍。
- 在高速网络中,我们不能单独拉一根线传时钟信号。接收方必须从收到的数据流中 ,利用 Clock Recovery Unit (CRU, 时钟恢复单元) 逆向推导出发件方的时钟频率!
3.4 Encoding for clock recovery (如何为时钟恢复编码?)
为了让 CRU 能"扣"出时钟,数据里必须有足够多的高低电平跳变 (Transitions) 。如果发送方连发 100 个 0(一条平坦的直线),接收方的时钟就会丢失方向。
- 曼彻斯特编码 (Manchester):强制在每个 bit 中间跳变一次。优点是极其容易提取时钟,缺点是腰斩了带宽效率(效率只有 50%)。
- 8B/10B 编码 (现代主流):把 8 个 bit 映射成 10 个 bit 发送。这精心设计的 10 个 bit 保证了里面绝对不会出现过长的一条直线。不仅保证了时钟恢复,还保持了 80% 的高效带宽。
4. Physical Layer: Forward Error Correction (FEC 前向纠错)
当信道极度恶劣(如深空通信、海底光缆)且不允许重传时,FEC 闪亮登场。
4.1 SNR/BER Curves (重温曲线)
FEC 可以在不提高发射功率 (SNR) 的前提下,通过数学手段极大地降低误码率 (BER)。
4.2 Coding (FEC 家族)
常见的强大纠错码包括:汉明码、卷积码、Turbo码、以及 5G 时代统治地位的 LDPC 码。
4.3 Reed-Solomon Basic Idea (里德-所罗门码)
- 神奇的多项式:两点确定一条直线,三点确定一条抛物线。RS 码的本质是用数据构建一个高阶多项式方程。
4.4 Conceptual Reed-Solomon Code (工作原理)
- 假设原始数据是抛物线上的 3 个点。发送方故意在抛物线上多算出 2 个点,把这 5 个点全发过去。
- 纠错魔法 :如果路上噪音把其中 1 个点破坏了,接收方依然可以用剩下的 4 个好点,完美拟合出那条唯一的抛物线,从而完全恢复原始数据!
4.5 Interleaving (交织技术)
- 纠错码最怕突发错误 (Burst errors)(比如一道闪电,连续破坏了 100 个点,抛物线就全毁了)。
- 交织:在发送前,把数据像洗牌一样"打散"。这样闪电劈坏的连续 100 个 bit,在恢复顺序后,会变成 100 个数据块里各自只坏了 1 个 bit。此时 FEC 就能轻松将它们一一修复。
5. Physical Link Layer: Principles MAC and CSMA/CD (链路层与以太网 MAC)
爬出了物理层的泥沼,欢迎来到第二层:链路层。核心议题是:大家怎么共享一根网线?
5.1 The origins of Ethernet (以太网起源)
早期的以太网,就是一根长长的同轴电缆,所有电脑都挂在这根线上。如果两个人同时发数据,电信号就会在电缆中碰撞、相互毁灭。
5.2 Sharing a "medium" (共享介质)
资源是有限的,必须制定开会的规则。
5.3 MAC Protocols (介质访问控制协议)
MAC 协议就像会议室规则:避免冲突、高效利用、保证公平、快速响应。
5.4 Aloha Protocol (阿罗哈协议:最早的尝试)
- 纯 Aloha:想说就说,完全不顾别人。高负载时大家全在撞车,效率极低 (18%)。
- 时隙 Aloha:规定只能在钟表滴答的瞬间开口。稍微有序了一些,效率提升一倍。
5.5 CSMA/CD Protocol (带冲突检测的载波监听多路访问)
现代有线以太网的奠基规则!可以总结为"四步走":
- 先听后说 (Carrier Sense):听听网线上有没有人讲话。有人就等,没人就发。
- 边说边听 (Collision Detection):发数据的同时,监听网线上的电压异常。
- 冲突停说:一旦发现电压叠加(冲突了),立刻停止发送,并大喊一声(发 Jam 信号)让所有人都知道撞车了。
- 随机再试 (Backoff) :所有人退避一个随机时间 后再试,避免大家在同一秒再次撞车。
(注:数据包必须足够大/线不能太长,否则包发完了冲突信号还没传回来,发送方就不知道撞车了。)
6. Ethernet Frame Format (以太网帧格式)
数据在链路层被打包成"帧 (Frame)"。一个标准的以太网帧包含:
- Preamble (前导码) & SFD :连续的
101010和最后的11。用来唤醒网卡并对齐时钟:"醒醒,数据来了!"。 - Destination/Source MAC (目标/源 MAC 地址):网卡的物理身份证号,标识从哪来到哪去。
- Type/Length:标明 Payload 里面装的是 IPv4 还是 IPv6,或者是数据的长度。
- Payload:实际的数据内容(IP 数据包)。
- FCS (帧校验序列):尾部的 CRC 校验码,确认数据在途中没有破损。
6.1 Increasing the data rate
从 10Mbps 进化到 10Gbps,以太网帧的格式几乎没变,变的是底层的线缆材质、调制技术和时钟频率。
6.2 Ethernet Switching (以太网交换)
- 二层交换机 (Switch) 读取目标 MAC 地址,通过内部硬件矩阵直接将帧转到对应端口。
6.3 Hubs to Switches (从集线器到交换机的飞跃)
- 集线器 (Hub):物理层的傻瓜大喇叭,一端收到信号,原封不动广播给所有人。极易产生冲突。
- 交换机 (Switch):链路层的智能交通警察。彻底隔离了冲突域,两台电脑通信再也不会干扰其他人,CSMA/CD 实际上在现代全双工交换网络中已经退休了!
7. Wireless Networking (无线网络特性)
7.1 Access Point Network (AP 网络)
家用 WiFi 的核心架构,所有手机和电脑都围绕着一个中心节点(AP,无线路由器)进行通信。
7.2 Wireless Is Different (无线大不同)
- Pros:无须布线,移动自由,扩展极快。
- Cons :空气是彻头彻尾的共享介质!带宽受限、极易被干扰、延迟高。
7.3 Signal Strength (信号强度)
无线电波遵循物理衰减定律,距离越远信号越弱,最终被背景噪声淹没。
7.4 Changing Over Time (时变性)
你拿着手机走动、别人关了一扇门、甚至天气变化,都会导致无线信道的质量在一秒内发生剧烈波动。
7.5 Interference (干扰的噩梦)
2.4GHz 频段是个"菜市场":你的 WiFi、蓝牙耳机、甚至厨房里的微波炉,都在同一个频率发射电磁波,互相形成严重干扰。
8. Wireless - Principles MAC (无线 MAC 协议的困境)
8.1 Ethernet CSMA/CD
为什么不能把有线的 CSMA/CD 直接搬到无线来用?
8.2 Not a Shared Medium (视线受阻问题)
- 有线网络中,铜线是全联通的。
- 但在无线中,因为距离和障碍物,A 能听到 B,B 能听到 C,但 A 听不到 C。这就彻底推翻了"先听后说"的基础。
9. Wireless - Principle CSMA/CA (无线冲突避免)
9.1 Link Layer Acknowledgements (链路层确认)
因为无线环境太恶劣,包动不动就丢。WiFi 协议要求接收方在收到每一帧后,必须在链路层立刻回复一个 ACK。没收到 ACK 发送方就立刻重传。
9.2 CSMA/CA (带冲突避免的载波监听)
把 CD (冲突检测) 换成了 CA (冲突避免):
- 由于无线网卡做不到一边大声发射信号一边竖起耳朵听有没有冲突,所以撞车了它自己是不知道的。
- 因此,WiFi 设备在"听"到信道空闲后,不马上发,而是强行等一个随机退避时间 (Backoff),确认真没人抢,再发出去,以此"避免"冲突。
9.3 802.11 经典难题
- Hidden Terminals (隐藏终端问题):A 和 C 中间隔着一堵墙,但都能连上路由器 B。A 听不到 C,以为信道空闲开始发;C 也以为空闲开始发。结果两份信号在 B 处撞毁!
- Exposed Terminals (暴露终端问题):A 在向 B 发数据。C 其实想向另一边的 D 发数据,但 C 听到了 A 的声音,误以为信道忙而委屈地等待。其实 C 和 D 通信完全不影响 A 和 B,这是极大的浪费!
10. Wireless - Principles RTS/CTS (RTS/CTS 机制)
10.1 RTS/CTS (如何解决隐藏终端?)
引入预约机制:
- RTS (请求发送):A 想发包,先发个短消息给路由器 B:"我要发 10MB 数据,可以吗?"
- CTS (清除发送) :路由器 B 收到后,大喊一声 CTS:"A 可以发 10MB 数据,其他人闭嘴!"
- 隐藏在墙后的 C 听到了 B 的 CTS,乖乖闭嘴。A 安全发完数据。
10.2 Problems with CSMA/CA (代价)
RTS 和 CTS 本身也占用了宝贵的无线时间。如果只是发个 1KB 的网页请求包,还先搞一套预约仪式,效率反而极低。因此通常只在传输大文件时开启。
11. 802.11 Format and Overhead (WiFi 格式与开销)
11.1 Virtualizing a Link
802.11 协议在底层做了极其复杂的工作(退避、重传、RTS),目的就是为了把不可靠的无线电波,虚拟化成一根"看起来很可靠"的以太网线,欺骗上层的 IP 协议。
11.2 802.11 Overhead (惊人的开销)
- 如果你买的路由器标称"300Mbps",测速却只有 150Mbps,不要惊讶。
- 因为 802.11 包含了海量的开销 (Overhead):等待时间 (IFS)、随机退避时间、RTS/CTS 交互、巨长的物理层前导码、以及必须返回的 ACK。真正留给 Payload 的时间少得可怜。
12. Fragmentation and Assembly (分片与重组)
当数据包比网络允许的最大传输单元 (MTU) 还要大时,就必须切碎了运。
12.1 为什么需要分片?
- 防止一个巨型数据包霸占信道太久,导致别人全部卡死。
- 降低错误代价:如果发 100MB 丢了 1 bit 要全盘重发;切成小块后,哪块坏了只重传哪块。
12.2 Fragmentation Example: IP (IP 层分片)
路由器发现包过不去,会在网络层切分。
- 关键字段 :
ID(说明大家属于同一个原包)、Fragment Offset(这块位于原包的哪里)、MF(后面还有没有分片)。
12.3 Fragmentation Example: TCP (TCP 段拆分)
为了避免 IP 层分片带来的各种效率问题(一旦丢片整个原 IP 包作废),现代网络更倾向于在传输层(TCP)进行分段。
- MSS (最大段大小):TCP 握手时协商好,直接把数据切成最合适的尺寸,利用 Seq Number 重组,完美绕过 IP 层的物理限制。