同步轨道卫星在 35786 公里高空,光速每秒 30 万公里,所以延迟是可以精确算出来的。 而「高延迟」不只是慢,它会让 TCP 本身跑不起来。
3.7.2 讲的是地面移动网,这一节讲「基站飞在天上」的那种接入。 它把「延迟」这个变量单独拎出来,是本章最后一块拼图。
一、延迟是算出来的
光速是个常数,高度是已知的,所以延迟不用测、算就行:
| 轨道 | 高度 km | 单程 | 往返 |
|---|---|---|---|
| 同步轨道 GEO | 35786 | 119.3 ms | 238.6 ms |
| 中轨 MEO | 10000 | 33.3 ms | 66.7 ms |
| 低轨 LEO | 550 | 1.8 ms | 3.7 ms |
第一行往返 238.6 毫秒,这还只是「上天再下来」的时间,没算地面的处理、排队、路由。 所以 GEO 卫星上网的实测延迟通常在 500 到 700 毫秒。 第三行 LEO 只有 3.7 毫秒:这是低轨星座最大的卖点,比速率重要得多。 为了让「低轨」成立,代价是要发几千颗卫星—— 因为单颗覆盖小、而且跑得快,需要星座才能连续覆盖。 「星链」这类项目的技术难点不在卫星本身,在「怎么管几千颗」。
二、高延迟为什么拖垮吞吐
把「建连耗时」和「一秒能来回几次」摆出来:
| 接入方式 | 往返 | 建连 | 一秒几次 |
|---|---|---|---|
| 地面光纤 | 20 ms | 30 ms | 100.0 |
| LEO 卫星 | 40 ms | 60 ms | 50.0 |
| GEO 卫星 | 600 ms | 900 ms | 3.3 |
第三列是「点一个链接到看见第一个字节」的时间:GEO 要 900 毫秒,用户会觉得「卡住了」。 第四列更狠:一秒只能来回三次多一点。 为什么「来回次数」这么要命:TCP 的发送窗口是靠「确认」一点点涨上去的(叫慢启动), 每一轮往返窗口才涨一截。 往返少,窗口涨得慢,吞吐就上不去。 所以「高延迟链路吞吐上不去」不是「慢」,是「协议本身跑不起来」。 这就是为什么卫星链路上要用「性能增强代理(PEP)」: 在地面站把 TCP 连接「截断」,两端各自用低延迟跑,中间用私有协议撑住。 本质上还是「用中间人换掉往返次数」,和 CDN 是同一个思路。 代价是「端到端不再透明」——加密流量(比如全站 HTTPS)过 PEP 时,中间人就无能为力了。
三、还有哪些广域无线
除了卫星和手机网,还有几种「专用」的广域接入:
| 方式 | 典型速率 | 适用 |
|---|---|---|
| MMDS 等固定无线 | 几 Mbps 到几十 | 最后几公里的补点 |
| 卫星广播 | 几十 Mbps 下行 | 单向下发、偏远地区 |
| 低速卫星物联网 | 几 kbps | 气象、远洋、牧区 |
第一行是「无线本地环路」的思路:用微波把「最后几公里」替掉,省掉挖沟埋纤。 它在「有用户但没线路」的郊区很实用,缺点是「视距要求」——中间有栋楼就断了。 第二行值得注意「单向」这两个字: 卫星广播的下行很宽(一个转发器几十 Mbps),但回传要走别的路(比如电话线)。 所以它适合「下载」不适合「交互」——早年「卫星直播 + 电话线回传」的组合就是这么工作的。 第三行是近几年才起来的: 几 kbps 的速率听起来没用,但对「一个气象站一年只发几兆数据」的场景,它就是唯一的方案 (没有电网、没有基站、没有光纤)。 技术选型永远要对着需求看——「慢」在别的场合是缺点,在这里是「省电、便宜、能覆盖」。
四、动手 Demo:卫星上网的延迟,是算出来的
用光速和轨道高度算出单程与往返,再把「建连耗时」换算成「一秒能来回几次」。 注意 GEO 那一行:单程就 119 毫秒,往返 239 毫秒。
C = 300000.0 # 光速,公里每秒
for name, km in (('同步轨道 GEO', 35786), ('中轨 MEO', 10000), ('低轨 LEO', 550)):
one = km / C * 1000
print('%-12s 高度 %6d km 单程 %6.1f ms 往返 %6.1f ms'
% (name, km, one, one * 2))
for name, rtt, setup in (('地面光纤', 20, 30), ('LEO 卫星', 40, 60), ('GEO 卫星', 600, 900)):
print('%-8s 往返 %4d ms 建连 %4d ms 一秒能来回 %5.1f 次'
% (name, rtt, setup, 3000.0 / setup))
实跑输出:
--------------------------------------------------------------------
卫星上网的延迟,是算出来的
--------------------------------------------------------------------
**同步轨道卫星在 35786 公里高空,光速是每秒 30 万公里。**
**所以「一个来回」要多久,是可以精确算出来的**——而这个数决定了「卫星上网能不能打游戏」。
轨道 高度 km 单程 毫秒 往返 毫秒
------------------------------------------------------------
同步轨道(GEO) 35786 119.3 238.6
中轨(MEO) 10000 33.3 66.7
低轨(LEO,如星链) 550 1.8 3.7
**第一行往返 238.6 毫秒**:**这还只是「上天再下来」的时间,没算地面的处理和排队。**
**所以 GEO 卫星上网的实测延迟通常在 500~700 毫秒。**
**第三行 LEO 只有 3.7 毫秒**——**这是低轨星座最大的卖点,比速率重要得多。**
**算一下这个延迟对「网页打开」意味着什么**:
接入方式 往返 毫秒 建连 毫秒 一秒能来回几次
--------------------------------------------------------
地面光纤 20 30 100.0
LEO 卫星 40 60 50.0
GEO 卫星 600 900 3.3
**第三列是「点一个链接到看见第一个字节」的时间**:**GEO 要 900 毫秒,用户会觉得「卡住了」。**
**第四列更狠:一秒只能来回 1.7 次**——**TCP 的拥塞窗口是靠往返涨的,往返越少,涨得越慢。**
**所以「高延迟链路吞吐上不去」不只是「慢」,是「协议本身跑不起来」。**
**这就是为什么卫星链路上要用「性能增强代理(PEP)」**:
**在地面站把 TCP 连接「截断」,两端各自用低延迟跑,中间用私有协议撑住。**
**本质上还是「用中间人换掉往返次数」,和 CDN 是同一个思路。**
「光速每秒 30 万公里」这个近似值够用了: 真空里是 29.97 万,光纤里只有 20 万左右(折射率约 1.47)。 所以「地面光纤的往返」比「按光速算」要慢一半—— 这也是「跨洋光缆的延迟为什么比理论值高」的原因。 算卫星延迟用真空光速是对的(大气层那一段影响很小)。 「LEO 3.7 毫秒」是不含地面段的:真实星链的往返延迟在 20 到 60 毫秒, 差距来自「卫星到地面站的那一跳」和「星座内的路由」。 所以「低轨延迟接近光纤」这句话要加限定:它接近的是「城际光纤」,不是「同城光纤」。 最后记一个判断法:凡是「交互」类应用(游戏、远程桌面、语音),延迟比带宽重要; 凡是「批量」类应用(下载、备份),带宽比延迟重要。 所以「卫星上网能不能打游戏」这个问题,答案不在「速率多少」,在「往返多少毫秒」。
30 秒实验
- 算一下:如果卫星在 2000 公里高,往返延迟是多少?
- 想一下:为什么「全站 HTTPS」会让卫星链路的加速代理失效?
- 查一下你所在城市的平均宽带延迟,和 GEO 卫星的 600 毫秒比一比。
常见误区
- 以为「卫星上网慢是因为带宽小」。 主因是延迟,往返 600 毫秒让协议跑不起来。
- 以为「低轨卫星没有延迟」。 星链实测 20 到 60 毫秒,比理论值高,因为还有地面段。
- 以为「延迟只影响体感」。 它还会限制吞吐,TCP 的窗口就是靠往返涨的。
自测三问(点开对答案)
1. GEO 卫星的理论往返延迟是多少? —— **238.6 毫秒**(35786 公里除光速再乘 2),实测通常 500 到 700 毫秒。 2. 为什么高延迟会让吞吐上不去? —— **TCP 的窗口靠确认一轮轮涨**,往返少就涨得慢,所以吞吐被往返次数限住。 3. 「性能增强代理」解决什么问题? —— **把 TCP 连接在地面站截断**,两端各自用低延迟跑,中间用私有协议撑住,绕开往返限制。第三章到这里结束,下一章进 IP 协议。
- ☐ (本章完,下一节 4.1.1 IP相当于OSI参考模型的第3层)