2013-04-18 37 views
1

RFC2464,以太網IPv6組播地址的前綴定義爲33:33,但正如我在Wireshark的捕獲一些數據包,我發現這個前綴爲33:33:ff實際執行。不一致組播地址

例如,在發送ICMPv6鄰居請求報文時,捕獲的目的MAC地址爲33:33:ff:f8:67:0d,目的IP地址的最後一位爲...:d3f5:31f8:670d。作爲RFC2464,mac地址應該是33:33:31:f8:67:0d

那麼這個RFC已棄用?我應該如何在我的程序中實現它?

回答

1

您正在查看請求的節點多播地址。您正在嘗試將節點的IPv6單播地址直接轉換爲以太網MAC地址,但是您錯過了其中的一個步驟。要獲取組播MAC地址,首先將節點的單播IPv6地址轉換爲請求節點組播IPv6地址,如section 2.7.1 of RFC2373中所述。然後按section 7 of RFC2464中所述獲取與該IPv6多播地址相對應的多播MAC地址。

舉例:我們從IPv6地址2001:db8::d3f5:31f8:670d開始。相應的請求節點IPv6組播地址爲ff02:0:0:0:0:1:fff8:670d。然後,您應用算法獲取組播MAC地址33:33:ff:f8:67:0d

在應用程序中,您不應該擔心鄰居發現。這是操作系統的工作。在應用程序中使用多播時,您應該只綁定/訂閱IPv6多播地址,操作系統會將發往該多播地址的所有數據包傳送到您的應用程序。如果通過不同的局域網進行組播,這將涉及其他協議,如主機和多播路由器之間的MLDv2(多播監聽程序發現版本2)以及多播路由器之間的多播路由協議,如PIM-SM(協議無關組播 - 稀疏模式)。