簡體   English   中英

在第2層組播

[英]Multicast over layer 2

請原諒我有限的網絡知識。

我正在嘗試設置兩個小的程序作為客戶端和服務器,它們加入了特定的多播組。 服務器向該組發送一些任意數據,而客戶端在偵聽該組時會接收數據。

我已經完成的UDP程序當然可以做到這一點。 但是,我需要使用MAC地址而不是IP 我對此有一些疑問:

  1. 是否可以為我的多播應用程序固定一定范圍的MAC地址? 據我了解,MAC地址中第一個八位位組的最低有效位表示它是否是組播的。 因此,組播MAC應該看起來像01:*:*:*:*:* 因此,我想應該有某種方法可以使用廣泛的MAC地址(保留的除外)。

  2. All multicast MAC addresses begin with: 0100.5e 總是這樣嗎? AFAIK此前綴固定在MAC地址中,從而為其余IP地址位留出空間在此處進行映射。 但是,如果我的應用程序不關心IP地址,而是偵聽基於MAC地址的多播組(如果可能)怎么辦? 我不能將第一個八位位組保持為01並為我的多播尋址使用廣泛的范圍嗎?

  3. 如何僅基於MAC地址且不考慮IP,將數據包發送到多播組並偵聽多播組? 即,基於MAC來定義多播組地址。

我希望我的問題有道理。

如果您不使用IP(或UDP),則將IP地址映射到mac地址的默認方式可能沒有任何附加價值。 這些映射例如在以下示例中指定:

如果您堅持使用layer2並進行多播,則可能足以發送具有第一個八位位組的LSB的幀(多播位,請參閱: http : //en.wikipedia.org/wiki/File : MAC-48_Address。 svg )。 並在此之上放置您自己的映射。 但是您應該考慮到以下幾點:

  • 您可能需要強制NIC傳遞數據,通常是NIC過濾掉他們對硬件感興趣的幀。 這些過濾器通常在加入組時設置,例如在設置ALLMULTI標志時設置)。
  • 中間可能有網絡設備,並且某些偽智能交換機可能拒絕轉發數據,除非他們看到IGMP加入(ref igmp snooping)。
  • 而且您的代碼顯然將需要處理原始的第2層套接字以讀取數據。

考慮到僅使用UDP的簡便性,這可能需要大量工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM