1. 概述

互联网上的数据传输依赖于一组协议,这些协议定义了两个或多个网络设备之间如何通信。TCP/IP 协议栈包含了几乎所有网络通信所依赖的协议。其中,流控制传输协议(SCTP) 是这个协议栈中一个较新但鲜为人知的成员。

在本教程中,我们将了解 SCTP 的核心特性,以及它在实际应用中推广受限的原因。

2. IP 传输层

TCP/IP 协议栈是基于 OSI 模型设计的,因此它也有传输层用于主机之间的通信。SCTP 就是运行在这一层的协议之一。

不过,目前传输控制协议(TCP)和用户数据报协议(UDP) 是被广泛支持和使用的协议,而 SCTP 的使用非常有限。

2.1 TCP & UDP

TCP 和 UDP 都属于 IP 传输层协议,它们为上层应用协议(如 HTTP、FTP 等)提供了通信基础。

✅ 所有互联网通信几乎都基于这两个协议。
✅ TCP 提供面向连接的可靠传输,UDP 提供无连接的快速传输。
✅ 两者都内建于所有主流操作系统的网络库中,这是它们占据主导地位的关键原因。

3. SCTP 特性解析

SCTP 的设计初衷是融合 TCP 和 UDP 的优点于一身。它既具备 UDP 的消息边界特性,也拥有 TCP 的可靠性保障。这意味着应用程序可以直接处理完整的消息,而不需要像 TCP 那样自己去解析字节流。

3.1 多流(Multi-Streaming)

SCTP 支持多流传输,即:

  • 多个数据流可以在一个连接中并行传输
  • 某个流的阻塞不会影响其他流的数据传输

这在需要多个独立数据通道的场景下非常有用,比如 VoIP 或实时消息推送。

3.2 多宿主(Multi-Homing)

SCTP 的另一个独特功能是支持多宿主(Multi-Homing):

  • 一个 SCTP 端点可以拥有多个 IP 地址
  • 通过这些 IP 实现冗余路径,提升连接的可靠性

当主路径不可用时,SCTP 可以自动切换到备用路径,从而保证通信不中断。

3.3 安全性

SCTP 在连接建立时使用四次握手,相比 TCP 的三次握手更安全:

  • 有效防止 DDoS 攻击
  • 在握手过程中交换 Cookie,用于验证连接的合法性

结合多宿主机制,SCTP 在部分网络路径或接口失效时,依然可以维持连接。

⚠️ 这一特性继承自 SS7(Signaling System No.7)协议,是电信系统中高可用通信的关键。

4. 推广受限的原因

尽管 SCTP 有诸多优点,但其推广和应用却非常有限,主要原因如下:

4.1 缺乏主流系统支持

  • Windows 和 macOS 均未原生支持 SCTP
  • Linux 虽然支持,但默认可能未启用或需要手动配置

这导致大多数开发人员和企业对 SCTP 缺乏了解或使用意愿。

4.2 网络设备限制

  • 大多数家用路由器和企业级防火墙不支持 SCTP
  • NAT 转换对 SCTP 的兼容性较差

这使得 SCTP 在实际部署中面临诸多网络层的限制。

4.3 学习成本高 & 使用场景有限

  • 协议复杂,开发和调试难度较大
  • 对于大多数现代应用,TCP 已经足够满足需求
  • UDP 也在不断进化(如 QUIC 协议)

因此,除非在特定领域(如电信、信令系统),否则 SCTP 的优势并不明显。

5. 总结

本文介绍了 SCTP 的核心特性,包括多流、多宿主和更强的安全性。虽然它在设计上融合了 TCP 和 UDP 的优点,但由于缺乏主流操作系统和网络设备的支持,加上学习成本高,导致其在实际应用中推广受限。

✅ SCTP 是一个强大但小众的协议
❌ 并不适合大多数通用场景
⚠️ 如果你在电信、信令系统或高可用网络环境中开发,SCTP 值得深入了解

如果你正在寻找一种能提供多流传输和高可靠性的协议,SCTP 是一个值得考虑的选择。但在大多数情况下,TCP 或 UDP 依然是更稳妥的选项。


原始标题:Why Are TCP and UDP More Popular Than SCTP?

« 上一篇: CPU 调度详解
» 下一篇: 表达式 vs. 语句