组播IP地址与组播MAC地址之间的换算方法

时间:2024-04-15 22:19:33

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著