众所周知,TCP 和 SCTP 通常直接通过 IP 使用。但我发现,如果它们设计用于 UDP,则具有一些优势:
- 它们不需要端口,也许还需要校验和,因为 UDP 提供端口和校验和。
- 它们将能够在用户空间中实现。
- NAT 不必实现它们。也许仍有一些 NAT 不支持 SCTP。
- 如果答复对于 UDP 来说太长,DNS 之类的协议将能够更快地进行 TCP 握手,因为在这种情况下 UDP 数据包已经被发送。
那么为什么 TCP 和 SCTP 不设计用于 UDP 呢?
通过比较 TCP 和 SSL,很容易看出,
- 使用SSL的应用程序需要一个安全可靠的通道,由于TCP是可靠的,因此可以利用TCP来节省精力。
- 使用 TCP 和 SCTP 的应用程序需要一个可靠的通道。由于 UDP 提供了通道,因此他们可以利用 UDP 来节省精力。
我尝试思考 TCP 和 SCTP 优于 UDP 的缺点。我只想到了这一点,那么服务器将必须区分何时使用 TCP 或 SCTP。可以通过使用其他端口(如 443 和 80)或使用命令(如STARTTLS
)来解决。