普通TCP是为“短时延、高可靠、低误码”的地面网络设计的,而卫星TCP则必须在一个“长时延、高带宽、高误码”的链路上运行。

为了在恶劣的卫星链路环境下有效工作,卫星TCP必须对普通TCP进行大量的修改和优化。
下面我们从几个关键维度进行详细对比:
核心问题:链路特性的巨大差异
这是所有区别的根源,我们先来看一下两种链路的典型参数:
| 特性 | 普通TCP (如以太网、4G/5G) | 卫星TCP (如VSAT, Starlink) |
|---|---|---|
| 物理媒介 | 光纤、双绞线、无线电(短距离) | 无线电(长距离,穿过大气层) |
| 传播时延 | 极低 (毫秒级, ms) | 极高 (数百毫秒到秒级, geostationary orbit ~540ms RTT) |
| 带宽时延积 | 低 | 极高 (高带宽 + 高时延) |
| 误码率 | 极低 (10^-9 到 10^-12) | 相对较高 (10^-6 到 10^-8,受天气影响) |
| 连接稳定性 | 相对稳定 | 可能存在间歇性中断、切换、拥塞 |
正是这些差异,导致普通TCP在卫星链路上会“水土不服”。

普通TCP在卫星链路上的“水土不服”
普通TCP的三大核心机制——慢启动、拥塞控制、快速重传——在卫星链路上会失效或效率极低。
-
慢启动 的灾难
- 原理:TCP连接开始时,发送方以一个很小的拥塞窗口(如1个MSS)开始发送,每收到一个ACK,窗口就翻倍,指数级增长,直到达到一个阈值或检测到丢包。
- 在卫星链路的问题:卫星链路的RTT非常高(例如540ms),慢启动需要经过多个RTT才能将窗口撑满,要填满一个1Gbps、RTT为540ms的管道(BDP约67.5MB),慢启动需要花费几十秒甚至更长时间,导致连接建立初期速率极低,用户体验极差。
-
拥塞控制 的误判
- 原理:TCP通过检测丢包(超时或收到重复ACK)来判断网络发生了拥塞,并立即降低发送速率。
- 在卫星链路的问题:
- 误报:卫星链路的高误码率会导致数据包损坏和丢失,这不是因为网络拥塞,而是物理信号问题,但TCP无法区分,会误以为是“网络拥塞”,于是错误地降低发送速率,导致吞吐量严重下降。
- 超时重传:由于RTT高,一个超时计时器需要设置得非常长(例如至少2*RTT),一旦发生超时,TCP会认为网络极度拥塞,将拥塞窗口直接降为1,然后重新开始慢启动,这个过程会浪费整个BDP的数据量,造成巨大的吞吐量“悬崖式下跌”。
-
快速重传 的效率低下
(图片来源网络,侵删)- 原理:如果发送方收到3个或以上的重复ACK,就立即重传丢失的包,而不必等待超时。
- 在卫星链路的问题:由于高时延,发送方需要更长的时间才能积累到3个重复ACK,在这段时间里,管道几乎是空的,传输效率大大降低。
卫星TCP技术的解决方案与改进
为了解决上述问题,卫星TCP技术主要分为两大类:链路层优化和端到端协议优化。
链路层优化 (最常见、最有效的方法)
这是目前商业卫星互联网(如Viasat, Hughes, Starlink)的主流方案。核心思想是“把问题在TCP协议栈的下面解决掉”。
-
工作原理:
- 在用户终端和地面关口站之间,使用一个私有协议(如DVB-S2X, SCPC)进行数据传输。
- 这个私有协议层包含了前向纠错 和链路层ARQ。
- FEC:在发送时加入冗余纠错码,即使部分数据包损坏,接收端也能通过冗余信息直接恢复,而无需重传,这大大降低了TCP层看到的误码率。
- 链路层ARQ:如果FEC无法修复损坏的包,链路层协议会自己请求重传这个损坏的包,完全对TCP层透明。
-
对TCP的影响:
- TCP层几乎看不到任何丢包,因为所有错误都在链路层被“修复”了。
- 这样,TCP的拥塞控制就不会被误触发,可以工作在“无丢包”的理想状态。
- 发送方可以持续地以最大窗口大小发送数据,吞吐量接近链路的理论带宽。
-
代表技术:TCP over Satellite with FEC and Link-layer ARQ,这是Starlink等低轨卫星系统能够实现高速率、低延迟体验的关键。
端到端协议优化
这类方法试图修改TCP协议本身,使其适应卫星环境,由于需要修改两端(客户端和服务器)的协议栈,实现和部署非常困难,因此主要用于研究或特定场景。
- 主要改进方向:
- 增大初始拥塞窗口:跳过慢启动的初始阶段,直接用一个较大的窗口开始传输,减少达到满速所需的时间。
- 修改超时重传机制:基于更精确的往返时间测量来设置超时计时器,避免过早或过晚的重传。
- 区分丢包原因:尝试通过其他信号(如ECN)或算法来判断丢包是因拥塞还是误码,并采取不同的应对策略。
- 协议扩展:如TCP Westwood, Bic-TCP, Hybla等,都是针对高BDP和高时延场景设计的TCP变种。
总结对比表
| 特性 | 普通TCP | 卫星TCP (链路层优化方案) | 卫星TCP (端到端优化方案) |
|---|---|---|---|
| 设计目标 | 适应地面局域网和城域网 | 适应长时延、高误码的卫星链路 | 适应长时延、高误码的卫星链路 |
| 核心机制 | 慢启动、拥塞控制、快速重传 | FEC + 链路层ARQ,对TCP透明 | 修改TCP算法(如窗口增长、超时) |
| 对丢包的处理 | 视为网络拥塞,降低发送速率 | 在链路层修复或重传,TCP层无感知 | 尝试区分拥塞和误码,针对性处理 |
| 吞吐量表现 | 在卫星链路上极低且不稳定 | 高且稳定,接近物理带宽 | 有所提升,但仍受限于端到端修改 |
| 部署复杂度 | 低,是标准协议 | 高,需要专用硬件和网关 | 极高,需要修改所有终端和服务器 |
| 典型应用 | 互联网、企业内网 | 商业卫星互联网 (Viasat, Hughes, Starlink) | 学术研究、军事通信等特定领域 |
卫星TCP技术并非一个单一的协议,而是一套为克服卫星链路固有缺陷而生的解决方案体系。
- 普通TCP 是一个“天真”的协议,它假设网络是友好且可靠的。
- 卫星TCP技术 则是一个“务实”的体系,它认识到物理链路的残酷性,并选择通过链路层优化(FEC+ARQ)这种最高效、最透明的方式来“欺骗”TCP,让它以为自己在一条完美的线路上运行,从而实现高性能。
当我们谈论现代卫星互联网的低延迟和高速度时,其背后真正的功臣是高效的链路层技术,它巧妙地绕开了TCP协议的固有缺陷。
