有没有任何可能的方式,从一台机器的单播数据包发送到两台机器? 它是如何发生的。
有人偶尔遇到这种情况?
根据您的networking拓扑和交换机型号,这可能非常普遍。 如果某个交换机的CAM表中没有目的地址,它将把数据包发送出去。 无论广播,多播还是单播都无关紧要。 根据思科,这可能是由path不对称,拓扑变化或CAM表溢出引起的。 我也看到这种情况发生在质量差的交换机上。
您是否正在寻找故意将单播数据包路由到多台计算机的networking? 或者您是否在考虑由于configuration错误而意外发生的情况?
发生意外的可能性不大。 我不能想出一个很可能发生的情况。 将单播地址NAT到多播地址是一个可能导致它发生的错误。
有意将数据包发送到单播地址到多个主机是完全可能的。 我可以想到一个有意义的用例。
在任播地址上承载基于TCP的服务被认为是有问题的,因为在连接打开时路由可能改变。 这可能会导致连接中断。 一个额外的层,从服务器之间的隧道客户端的数据包,以防他们最终在错误的服务器上,可以解决这个问题。
然而,这种方法引入了一个新问题,因为这个层需要跟踪数据包的路由。 但是,重新路由不是静态的,当它改变时,可能有两个可能的候选者来自客户端的数据包的正确目的地。 在这一点上,从客户端的angular度来看,发送到单播地址的数据包必须被转发到两个不同的主机,其中只有一个主机会回复。
从理论上说,连接到相同广播域的两台具有相同MAC地址的机器可以接收相同的帧。 这两台机器也需要configuration相同的IP,因为内核会丢弃那些没有发往机器的数据包。 您可能还需要在networking中有一个集线器,因为一个交换机通常不允许VLAN上具有相同MAC的两个端口。 此外,你会很快遇到与这个设置TCP会话的问题(因为帧将被发送到错误的主机)。
我认为这是一个不太可能的情况,它会给两个主机带来很多连接问题。
是的,Anycast也是可能的,因为两台机器都具有相同的IP地址,然而,这将是一个奇怪的选播configuration,但是两条路由具有相同数量的跳数,优先级和其他标准, 。
你可以用一个奇怪的configuration负载平衡器或者NAT设备来完成,就像mtak说的那样,你可能会在很多不同的层面上遇到连接问题。