首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SCTP多宿主问题

SCTP多宿主问题
EN

Stack Overflow用户
提问于 2014-10-01 21:49:01
回答 1查看 1.4K关注 0票数 2

我们现在已经开发了多宿主应用程序,同时测试我的设置是:

Eth4作为主接口,与另一台计算机进行背靠背连接。Eth5作为辅助接口,与另一台计算机进行背靠背连接。

我现在关闭了我的临时接口,当INIT被发送到对等机时,它似乎使用辅助接口,但保留的源ip地址只是主接口的,因为当对等机尝试响应INIT_ACK时,它会尝试在主接口ip上发送,而主接口ip是关闭的,并且由于ICMP,它会丢弃数据包。

我不太擅长路由,但似乎有些路由配置不正确,为什么总是使用主ip?

当我通过路由器连接我的主要和次要接口时,我测试了相同的部分,但面对相同的问题。

EN

回答 1

Stack Overflow用户

发布于 2014-10-11 22:35:39

为了大家的利益,我在谈到要点之前,只谈了几点。

SCTP终结点可以有多个IP地址。也就是说,应用程序可以打开SCTP套接字,并将选择性地址集或所有IP地址绑定到该套接字。SCTP中的关联是一对端点之间的关联。SCTP端点应交换IP地址列表,以便每个端点可以从其他端点中的任何地址接收消息。IP地址列表的交换在发起关联时完成。但是,SCTP应使用一个IP地址作为通信的主地址,在连续发送数据或控制块失败的情况下,应使用其他IP地址进行重传。

在RFC4960( SCTP )中,您将注意到“在启动关联期间,如果在接收到的INIT中存在主机名参数,则端点应将该主机名解析为IP地址列表,并通过将解析的IP地址与SCTP源端口相结合来派生此对等项的传输地址。”

但是,RFC4960(SCTP)的一个关键点是将主机名解析为IP地址的时间的重要性。它规定:“在名称转换涉及潜在的长延迟的情况下,INIT的接收方必须推迟名称解析,直到接收到来自对等体的COOKIE回应块。在这种情况下,INIT的接收方应使用接收到的主机名(而不是目的地传输地址)构建状态Cookie,并将INIT ACK发送到从其接收INIT的源IP地址。”

如果我们仅从上面的信息查看您的场景:考虑到主接口在发送INIT块之后关闭,并假设将主机名解析为IP地址在服务器中花费的时间太长,则可以假设INIT-ACK已发送到接收INIT的源IP地址(主接口)。

但是,如果仔细阅读SCTP的RFC,就会发现在RFC4960(SCTP)中有一条关于INIT-ACK的明确说明,声称“必须将INIT ACK发送到INIT的源地址”。参考RFC3286(SCTP),它似乎将其作为一种保护机制,因为它声称“由于INIT ACK总是返回到INIT的源地址,盲人攻击者将无法获得Cookie。”

现在,如果我们通过考虑上述信息来查看您的场景:很明显,服务器将始终将响应INIT ACK块发送到INIT的IP报头中的源地址。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26142961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档