gpt4 book ai didi

sockets - 带多宿主的 SCTP 作为 TCP 的直接替代

转载 作者:可可西里 更新时间:2023-11-01 02:31:01 24 4
gpt4 key购买 nike

SCTP 具有本地多宿主支持,如果我理解正确的话,它会在主接口(interface)出现故障时自动将您的数据包重新路由到辅助 NIC。我用 TCP 复制了这个功能,方法是编写一个自定义路由守护程序,以便在我的主 NIC 出现故障时修改路由表。我想尝试使用 SCTP

在史蒂文的 Unix Network Programming V1 3rd Edition在第 288 页上说:

For this example, we use a one-to-many-style server. We make this choice for one important reason. The examples in Chapter 5 can be modified to run over SCTP with one minor change: modify the socket function call to specify IPPROTO_SCTP instead of IPPROTO_TCP as the third argument. Simply making this change, however, would not take advantage of any of the additional features provided by SCTP except multi-homing.

现在我已经试过了,但结果很差。

我在安装了 libsctp1、libsctp-dev 和 lksctp-tools 软件包的 Ubuntu 9.04 上运行。我已经使用 lksctp-tools 验证 SCTP 工作正常。

我拿了UNP example code并按上述 ~/unpv13e/tcpcliserv/tcpserv04.c~/unpv13e/select/tcpcli02.c 程序进行修改。

这是一个简单的回显服务器/客户端对。服务器运行时显然在监听,但客户端退出时表示连接被拒绝。由于 netstat 不支持 SCTP 我使用了 lsof -n | grep tcpserv 向我显示:

tcpserv04 6208      alice    3u     sock        0,4            33889 can't identify protocol

除了 tcpserv04 打开了某种套接字之外,这似乎并没有告诉我太多信息。

我已经用 perl 重写并测试了原始的 TCP 客户端,所以我将它切换到 sctp 并能够连接,尽管在 stdin 上传输文件并没有完全工作(在接收到的过程中挂起大约 2/3) echo 回来了)。

UNP 似乎暗示将 TCP 应用程序移植到 SCTP 以利用多宿主是微不足道的,但基于这种简单的尝试,情况似乎并非如此。

在将 TCP 应用程序移植到一对一样式的 SCTP 以利用多宿主时,任何人都可以指出一个好的教程或就任何需要注意的陷阱提供好的建议吗?

最佳答案

tcpcli02 尝试连接到端口 7,而 tcpserv04 监听端口 9877(SERV_PORT 的默认值)。更改这些以匹配后,它对我有用。

对 SCTP 的支持通常非常糟糕。除非您控制您尝试连接的主机之间的整个网络基础设施,否则我不会指望它可靠地工作。如 UNP 中所述,移植应用程序本身应该相当轻松。

关于sockets - 带多宿主的 SCTP 作为 TCP 的直接替代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2243411/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com