1

我目前正在尝试弄清楚DDS我编写的应用程序。

我的作者和读者目前具有可靠性,因此如果读者错过了一条消息,作者将重新发布该消息。我还使用默认的多播,而不是使用单播来发现发布者和订阅者。

根据多播协议,我只使用端口7000并且7001需要打开。但是,当我使用wireshark 进行分析时,我看到端口70107011(单播)端口也是打开的。

经过一番挖掘,我发现了这个链接,似乎要为读者和作者使用可靠性,你需要启用单播,这就是为什么单播端口也打开并被使用的原因。

是否必须真正启用单播才能可靠地传递消息,如果需要,为什么需要这样做,以及为什么多播不能执行此功能?

4

1 回答 1

2

在这种情况下,大部分流量将通过 MC 流出。有时,可靠性协议会发送一条消息,实际上是“我有可用的序列号 N 到 M”。

每个读者都会(并且这在不同的实现中是高度可调的)响应(通过单播!)“好的”或“我没有得到 x 或 z”。

如果只有一个读者没有得到 x,那么 MC 修复样本 x 是没有意义的,因为只有一个读者需要它。所以作者会将它单播给吱吱作响的读者。

简而言之,我可以再花 10 段来讨论配置选项和调整行为。

但是,是的,tl;博士:预期的行为。

于 2016-09-17T01:24:31.227 回答