SCTP 比 TCP 好在哪里? (交通场景)

how SCTP is better then TCP ? (in traffic scenario)

SCTP 使用多流发送单个文件,TCP 使用单流发送单个文件。 现在的问题是“

how SCTP is better then TCP ?

"(交通场景

SCTP 在任何方面都不 "better" TCP,但它做了一些不同的事情。

TCP 在不可靠的无序数据包传输上模拟可靠的、有序的 八位字节,这在概念上非常类似于从文件中读取(没有查找能力)。

SCTP 模拟一个可靠的顺序不同的 消息 传递系统(其中 "message" 意味着与某个已知长度的已定义数据块一样多)。与 UDP 一样,它一次传送一条完整的消息。与 TCP 一样,它保证消息到达,并且按照发送消息的相对顺序。

SCTP 能够在单独的流中发送 不同的 消息,这样可以减少延迟,防止队头阻塞,并更好地利用可用带宽一些场景。带有样式信息和图像的网页就是典型的例子。
不会通过多个流发送单个文件(这没有任何意义)。

(还有一些我没有命名的其他功能,因为它们与问题关系不大)

SCTP 可以被认为是 UDP 和 TCP 的混合体,因为它像 UDP 一样基于消息,像 TCP 一样面向连接,以确保 消息 的顺序传递以及拥塞控制机制。也就是说,SCTP 是面向连接的,但在消息级别运行。

它涉及将多个连接捆绑到单个 SCTP 关联中,该关联对消息或块而不是字节进行操作。 SCTP 的这种并行传输几个独立的块流的能力称为多流,它避免了行头阻塞。也就是说,在 TCP 的情况下,即使第 3 个和第 4 个数据包没问题,但如果第 2 个数据包丢失,TCP 将进行重传,因为第 3 个和第 4 个数据包必须等到 successfully/correctly 收到第 2 个数据包。然而,在 SCTP 的情况下,由于单个关联被拆分为多个独立的块流(消息),因此减少了行头阻塞。

此外,请注意 SCTP 也有助于以无序模式发送消息,这可以完全避免线头阻塞,其中上层应根据需要具有重新排序消息的机制。