組播IP地址與組播MAC地址之間的換算方法


MAC地址介紹

絡接口卡硬件地址(MAC)是在數據鏈路層由標准組織IEEE統一定義的。
該定義類型大體上分為:
EtherNET 802.3 , Token Ring 802.5 , Token Bus 802.4 等。
這個地址可以是2字節,也可以是6字節,通常使用的是6字節,所以以下討論都只對6字節而言。
被IEEE定義的MAC類型可以分成三種地址:
1、個人地址 
2、廣播地址
3、多級地址

在網絡中,每台主機至少要有兩個地址,個人地址和廣播地址,根據網絡結構,一個工作站可以有一個工作組共用的多級地址。

就6字節48位地址而言,它的結構如下:

I/G bit : U/L bit : 22 bit 法定地址 : 24 bit 用戶地址

 

組播IP地址與組播MAC地址之間的換算方法與例子 - Sacrifice - BabyUnion

 


其中:
I/G位決定該地址是個人地址(0)還是組地址(1),當為組地址情況下,如果所有的地址位都為1,那么I/G位就表示這是一個廣播地址。

U/L位決定該地址是本地分配的(1)還是統一分配的(0)

22位法定地址通常是由IEEE分配給網絡設備生產廠商的,全世界每一家有生產網絡接口設備的廠家都必須獲得IEEE指定的一個22位地址,而且不許該地址和另外的廠家相同。

24位用戶地址則是由用戶自己可以配置和修改的,但是要確保你修改的地址不能和別人有相同的地方。

可見,以上48位MAC地址中,真正可以由用戶修改的是后24位。用戶通常不必去修改該地址。

在乙太網中,如果需要必須修改mac地址時,請注意:
1、兩個工作站不要共用相同的地址
2、保留所有位為“1”的地址為廣播使用。

在Apple Talk 中,MAC的分配由DDA協議管理(動態地址協議

 

組播IP地址與組播MAC地址之間的換算方法與例子

 

1oui 24方個MAC地址

 

組播地址 228次方,224.0.0.0-239.255.255.255

可用組播范圍:0100.5E00.0000----0100.5E07.FFFF

 

MAC48bit組成:24位是OUI  ,后24位由廠商定義

 

共需要:16OUI才可以與一個IP來一一對應。

                  32IP才可以與一個oui來一一對應

 

典故:Dr.Steve Deering此人研究出來的,當時因為分他的OUI是(0100.5E   0)所以這7個不變。

 

 

 

算法

最笨的方法,也是最安全的方法,就是把IP地址,換成二進制數。再把二進制換成16進制,第18位(從左往右看)不用,因為有組播MAC的限制已經規定是0100.5E開頭,

28位中的第1位規定為0(從左往右看).所以當不為0時,要改成0來換算。

 

Example:

IP                                    224.1.1.1           

換算成二進制         11100000.00000001.00000001.00000001

再換成16進制                             01             .01              .01               

加上組播MAC      0100.5E 

最后形成:               0100.5E01.01.01

可用的其它31個組播IP地址:

224.129.1.1

225.1.1.1 225.129.1.1

226.1.1.1 226.129.1.1

227.1.1.1 227.129.1.1

228.1.1.1 228.129.1.1

229.1.1.1 229.129.1.1

230.1.1.1 230.129.1.1

231.1.1.1 231.129.1.1

232.1.1.1 232.129.1.1

233.1.1.1 233.129.1.1

234.1.1.1 234.129.1.1

235.1.1.1 235.129.1.1 

236.1.1.1 236.129.1.1

237.1.1.1 237.129.1.1

238.1.1.1 238.129.1.1

239.1.1.1 239.129.1.1

加上:224.1.1.1 剛好32個。

 

IP                                    224.132.1.1

換算成二進制            11100000.10000100.00000001.00000001

24位為0                   11100000.00000100.00000001.00000001

再換成16進制                                 04            .01               .01                                                                                           

加上組播MAC      0100.5E

最后形成:               0100.5e04.01.01

可用的其它31個組播IP地址:

224.4.1.1

225.4.1.1 225.132.1.1

226.4.1.1 226.132.1.1

227.4.1.1 227.132.1.1

228.4.1.1 228.132.1.1

229.4.1.1 229.132.1.1

230.4.1.1 230.132.1.1

231.4.1.1 231.132.1.1

232.4.1.1 232.132.1.1

233.4.1.1 233.132.1.1

234.4.1.1 234.132.1.1

235.4.1.1 235.132.1.1

236.4.1.1 236.132.1.1

237.4.1.1 237.132.1.1

238.4.1.1 238.132.1.1

239.4.1.1 239.132.1.1

加上224.132.1.1,剛好32個。

 

 

 

另一種方法是:如果給的IP地址第123位都大於128,可以用128除以16(因為可用IP28位,可用MAC23位,剩5位可變,24次方是16),得出來的商換成16進制是MAC的左位,得出來的余數換成16進制是MAC的右位。第48位不看,因為是規定是0100.5E開頭。

3組第8位必需為0.當為1時,要去掉換成0.

Example:

IP                             224.215.145.230

16             215/16:13:7  .  145/16:9:1 .  230/16:14:6 

換成(16進制):    D7 . 91. E6

24位為0           57.91.E6

加上組播MAC      0100.5E

形成:                        0100.5E57.91.E6

可用的其它31們組播IP地址:

224.87.145.230

225.87.145.230 225.215.145.230

225.87.145.230 225.215.145.230

226.87.145.230 226.215.145.230

227.87.145.230 227.215.145.230

228.87.145.230 228.215.145.230

229.87.145.230 229.215.145.230

230.87.145.230 230.215.145.230

231.87.145.230 231.215.145.230

232.87.145.230 232.215.145.230

233.87.145.230 233.215.145.230

234.87.145.230 234.215.145.230

235.87.145.230 235.215.145.230

236.87.145.230 236.215.145.230

237.87.145.230 237.215.145.230

238.87.145.230 238.215.145.230

239.87.145.230 239.215.145.230

加上224.215.145.230.剛好32個。

 

 

 

計算剩於其它的可用組播IP方法:

剛第三位大於128時,要減去128

當第三位小於128時,要加上128

這樣從224239每一組里有兩個地址,剛好32個。

 

 

作者:任鵬傑
鏈接:http://www.zhihu.com/question/36730567/answer/83083851
來源:知乎
著作權歸作者所有,轉載請聯系作者獲得授權。

組播IP轉換為組播MAC地址是一種32:1的映射關系。
組播IP地址:
IANA將D類地址空間分配給IP組播地址。該空間的地址用二進制表示並且第一個八位組的前4位用1110表示,
<img src="https://pic1.zhimg.com/9fb4bad28efdfe2de6e823435c311698_b.png" data-rawheight="76" data-rawwidth="252" class="content_image" width="252">因此IP組播地址的范圍從224.0.0.0到239.255.255.255 。 因此IP組播地址的范圍從224.0.0.0到239.255.255.255 。

組播MAC地址:IEEE MAC地址規定了第一個八位組的Octet 0的bit 0指明了目標地址是廣播/組播地址,還是單播地址。
<img src="https://pic1.zhimg.com/3ce8caaa53109a29bed3ce0eddadddc0_b.png" data-rawheight="95" data-rawwidth="353" class="content_image" width="353">如果此位被置位,那么MAC的幀即可以被定為任意的主機組(組播),也可以被定義為網絡的所有主機(廣播)。第2層IP組播利用此功能傳送IP組播信息包到局域網段的主機組(即組播IP到組播MAC的映射)。 如果此位被置位,那么MAC的幀即可以被定為任意的主機組(組播),也可以被定義為網絡的所有主機(廣播)。第2層IP組播利用此功能傳送IP組播信息包到局域網段的主機組(即組播IP到組播MAC的映射)。

以太網組播MAC地址映射:
就以太網而言,IP組播幀都使用以0x0100.5Exx.xxxx的24位前綴開始MAC層地址。剩下24位地址由於某些原因只有這些MAC地址的一半(即后23位)可以被IP組播使用。因剩下的MAC地址空間的23位作為第3層IP組播地址進入第2層MAC地址的映射使用。因為所以的第3層IP組播地址必須把32位的前4位設成0x1110,剩下28位作為有意義的IP組播地址信息。這28位必須映射成可用的只有23位的MAC地址。
<img src="https://pic3.zhimg.com/6448ceee2476833793b782e2ca3b71d2_b.png" data-rawheight="208" data-rawwidth="291" class="content_image" width="291">因為第3層IP組播地址信息的全部28位不能映射進入只有23位可用的MAC地址空間,所以在映射過程中丟失了5位地址信息。將導致第3層IP地址映射成第2層IEEE MAC地址時2^5或32個IP組播地址映射成同一個組播MAC地址。這意味着每一個IEEE IP組播MAC地址能表示32個IP組播地址。 因為第3層IP組播地址信息的全部28位不能映射進入只有23位可用的MAC地址空間,所以在映射過程中丟失了5位地址信息。將導致第3層IP地址映射成第2層IEEE MAC地址時2^5或32個IP組播地址映射成同一個組播MAC地址。這意味着每一個IEEE IP組播MAC地址能表示32個IP組播地址。
<img src="https://pic2.zhimg.com/756dc36794a0c37e07bddbf36331a6cd_b.png" data-rawheight="194" data-rawwidth="318" class="content_image" width="318">
-------------------------------------------------------------------
<img src="https://pic2.zhimg.com/e12b8d501993a89d1dbc928cc4135d99_b.png" data-rawheight="413" data-rawwidth="601" class="origin_image zh-lightbox-thumb" width="601" data-original="https://pic2.zhimg.com/e12b8d501993a89d1dbc928cc4135d99_r.png">以上內容摘抄自《IP組播網絡設計開發(第1卷)》Beau Williamson著 以上內容摘抄自《IP組播網絡設計開發(第1卷)》Beau Williamson著


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM