SCTP是否适合点对点应用?

时间:2009-03-17 02:17:25

标签: networking network-programming network-protocols p2p sctp

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

编辑: 我发现SCTP can be tunneled over UDP唯一的问题是隧道传输SCTP不能与未经管理的SCTP互操作。

3 个答案:

答案 0 :(得分:4)

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

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

您是否考虑过SCTP的优势?您提到容错,但为了使用SCTP,它要求应用程序具有多个以太网端口和IP地址。这可能是你的应用程序吗?

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

此致

答案 1 :(得分:1)

如果是局域网,请务必去做。

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

答案 2 :(得分:0)

它对你有什么帮助?

你是P2P,所以每个对等体必须至少有一个套接字对所有其他对等体开放。

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

只需一个插座并拥有自己的小协议;发送带有标题的数据包,标题表示内容类型,例如一个命令,或一个文件的一部分 - 如果是,那么哪个文件以及哪个字节范围。

当然,你会得到一点开销,而如果你有一个命令套接字和一个文件一个,你会更有效率。是否每个对等端保存一个套接字(假设一次下载一次)值得使用SCTP的时间/麻烦/复杂性?