2

我正在考虑对用 C 编写的 p2p 应用程序使用SCTP而不是 TCP。我应该这样做吗?另外,SCTP 的速度与 TCP 的速度相比如何?

编辑:我发现SCTP 可以通过 UDP 建立隧道,唯一的问题是隧道 SCTP 不能与非隧道 SCTP 互操作。

4

3 回答 3

4

您是否考虑过您的目标系统是否都预装了 SCTP,或者您的应用程序是否需要包含 SCTP 本身?根据我的经验,我不希望所有系统都安装 SCTP,如果是 Windows,我希望它们不会。

如果您在应用程序本身中包含 SCTP,那么与使用预安装的 TCP 相比,传递到内核外的消息数量将增加一倍以上,这将影响性能。

您是否考虑过您希望从 SCTP 获得哪些好处?您提到了容错,但要使其与 SCTP 一起使用,它需要应用程序具有多个以太网端口和 IP 地址。这可能在您的应用程序上吗?

尽管我很喜欢 SCTP(!),但我会认真考虑坚持使用 TCP,除非您确定需要 SCTP,或者除非您控制部署应用程序的主机。

问候

于 2009-04-24T09:05:13.340 回答
1

如果是局域网,那当然可以。

但是请注意,如果您打算在开放的互联网上使用它,许多消费级防火墙不够灵活,无法允许无法识别的 IP 协议通过它们。

于 2009-03-17T18:18:24.947 回答
0

它对你有什么帮助?

您是 P2P,因此每个对等点必须至少有一个对其他对等点开放的套接字。

如果你打开了一个套接字,那么你可以做你需要做的一切。如果您采用了每个文件一个套接字的方法,并且在两个给定的对等点之间同时传输了多个文件,那么 SCTP 将为每个文件节省一个套接字。但是,在任何规模的普通 P2P 网络上,您几乎永远不会在两个对等方之间同时传输多个文件。

只需一个套接字,并拥有自己的小协议;发送带有标头的数据包,标头指示内容类型,例如命令或文件的一部分-如果是,则说明哪个文件以及哪个字节范围。

当然,您会为此付出一些开销,而如果您有一个用于命令的套接字和一个用于每个文件的套接字,那么您的效率会更高。每个对等方保存一个套接字(假设一次下载一个)值得使用 SCTP 的时间/麻烦/复杂性吗?

于 2009-03-27T19:15:50.097 回答