IP 多播

IP 多播屬於非根資料平面和非根控制平面的類別。 所有應用程式都會扮演分葉角色。 目前,大部分的 IP 多播實作都會使用一組由 Steve Deering 建議的通訊端選項, (IETF) 。 因此,有五個作業可供使用:

  • IP_MULTICAST_TTL— 設定多播會話的時間到即時控制範圍。
  • IP_MULTICAST_IF— 決定要用於多播的介面。
  • IP_ADD_MEMBERSHI — 聯結指定的多播會話。
  • IP_DROP_MEMBERSHIP — 卸載多播會話。
  • IP_MULTICAST_LOOP— 控制多播流量的回送。

設定 IP 多播通訊端的存留時間會直接對應至 使用 WSAIoctl的 SIO_MULTICAST_SCOPE 命令程式碼。

判斷要用於多播的 IP 介面的方法,是透過 TCP/IP 特定通訊端選項,如Windows通訊端 2 Protocol-Specific附錄中所述。 其餘三個作業會妥善涵蓋此處所述的 Windows Sockets 2 語意。

應用程式會在 WSASocket中開啟具有c_leaf/d_leaf旗標的通訊端。 它會使用 WSAJoinLeaf ,在為多播作業指定的預設介面上,將本身新增至多播群組。 如果 WSAJoinLeaf 中的旗標指出此通訊端只是寄件者,則聯結作業基本上是無作業,而且不需要傳送 IGMP 訊息。 否則,IGMP 封包會傳送至路由器,以指出接收傳送至指定多播位址之封包的興趣。 由於應用程式建立的特殊c_leaf/d_leaf通訊端僅用於執行多播,因此標準 closesocket 函式會用來卸載多播會話。 WSAIoctl的SIO_MULTIPOINT_LOOPBACK命令程式碼提供一般控制機制,用來判斷是否也可以在相同通訊端上接收非根多點配置中d_leaf通訊端上傳送的資料。

注意

IP_MULTICAST_LOOP選項的 Winsock 版本語意上與 unix 版本的 IP_MULTICAST_LOOP 選項不同:

 

  • 在 Winsock 中,IP_MULTICAST_LOOP選項僅適用于接收路徑。
  • 在 UNIX 版本中,IP_MULTICAST_LOOP選項適用于傳送路徑。

例如,應用程式 ON 和 OFF (比 X 和 Y) 在相同介面上加入相同群組更容易追蹤;application ON 會設定開啟IP_MULTICAST_LOOP選項,應用程式 OFF 會設定關閉IP_MULTICAST_LOOP選項。 如果 ON 和 OFF 是 Winsock 應用程式,OFF 可以傳送至 ON,但 ON 無法傳送至 OFF。 相反地,如果 ON 和 OFF 是 UNIX 應用程式,ON 可以傳送至 OFF,但 OFF 無法傳送至 ON。