2014-01-14 66 views
1

我在C#中開發了一個使用UDP多播系統的程序。我的組播組使用224.0.0.1地址進行通信。如何在服務器中隔離UDP多播地址+端口

的情況是以下之一:

  • 我運行此程序的多個服務器;
  • 每臺服務器使用不同的端口進行通信;
  • 服務器共享相同的網絡。

我想保護每個服務器免受他人造成的噪音。如果有人決定使用相同的地址和端口,它不會令程序的穩定性變得愉快。

如何將我的地址和端口與外部流量引起的噪聲隔離?

如何隔離我的組播流量並防止它離開網絡?

回答

0

對於第一個問題,我相信你可能能夠實現某種控制層。

  • 從網絡拓撲POV:

    • 你可以試試你的路由器或代理配置爲只允許特定的計算機將數據包發送到特定地址,多播地址包括在內。
  • 編程方式:

    • 添加有效的服務器的本地目錄。如果從未知地址收到數據包,請將其丟棄。
    • 用像Rijndael這樣的可逆算法加密數據包有效載荷。無法解密的有效載荷可能被宣佈爲無效。

對於第二個問題 - 設置套接字傳輸TimeToLive爲1。這意味着多播數據僅將「跳」一次。報價:

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

這臺住 套接字的時間 - 這是爲 組播數據定義範圍很重要。將值設置爲1將意味着多播數據將不會離開本地網絡,將其設置爲高於此數的任何值都將允許多播數據通過多個路由器,並且每個路由器將TTL遞減1.獲取TTL值右邊是對帶寬的考慮 重要

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

相關問題