如何隔离服务器中的UDP多播地址+端口?

时间:2014-01-14 17:41:17

标签: c# sockets udp firewall multicast

我在C#中开发了一个使用UDP组播系统的程序。我的多播组正在使用224.0.0.1地址进行通信。

场景如下:

  • 我有几个运行此程序的服务器;
  • 每台服务器使用不同的端口进行通信;
  • 服务器共享同一个网络。

我希望保护每台服务器免受其他人造成的噪音干扰。如果有人决定使用相同的地址和端口,那么它对于程序的稳定性来说并不愉快。

如何将地址和端口与外部流量引起的噪音隔离开来?

如何隔离多播流量并防止其远离网络?

1 个答案:

答案 0 :(得分:0)

对于第一个问题,我相信您可能能够实现某种控制层。

  • 从网络拓扑POV:

    • 您可以尝试将路由器或代理配置为仅允许特定计算机将数据包发送到特定地址,包括多播地址。
  • 编程方式:

    • 添加有效服务器的本地目录。如果从未知地址收到数据包,请将其丢弃。
    • 使用Rijndael等可逆算法加密数据包有效负载。无法解密的有效负载可能被宣布无效。

对于第二个问题 - 将套接字TimeToLive设置为1.这意味着组播数据只会跳转到#39;一旦。引用:

s.SetSocketOption(SocketOptionLevel.IP,
    SocketOptionName.MulticastTimeToLive, 2);
  

这设定了生存时间   对于套接字 - 这在定义范围时非常重要   组播数据。将值设置为1将表示组播数据将   不要离开本地网络,将其设置为高于此值的任何内容   允许组播数据通过多个路由器   路由器将TTL递减1.使TTL值正确   对带宽考虑很重要

http://www.codeproject.com/Articles/1705/IP-Multicasting-in-C