chunchao_wei 发表于 2010-7-17 17:00:50

如何计算IP组播MAC地址对应IP地址

假设有组播地址为: 239.255.128.1   组播mac地址0100:5e00:0000~0100:5e7f:ffff范围。

计算得出 239.255.128.1 的组播MAC为:1110 1111,11111111,10000000,00000001 加上0100:5e开头。
      
                                                       0100:5e7f:8001


重点在这,32个IP地址如何映射到一个MAC组播地址


224.255.128.1~239.255.128.116个IP地址

还有16个 要如何得出呢?

请各位大侠给些指点,谢谢。
                                                      

stream 发表于 2010-7-18 11:13:24

本帖最后由 stream 于 2010-7-18 11:16 编辑

2层的MAC地址是如何与3层的IP地址进行映射的呢?
通过将MAC地址的前25位强行规定位0100.5e,而后23位对应IP地址的后23位,而组播IP地址的前4位均相同如:
       IP地址: 1110yyyy.yxxxxxxx.xxxxxxx.xxxxxxxx
       MAC地址: 00000001.00000000.01011110.0xxxxxxx.xxxxxxx.xxxxxxxx
      
例如:组播IP地址224.215.145.230应该映射到下列哪个组播MAC地址?( )
     (A)  01-00-5e-57-91-e6   (B)  01-00-5e-d7-91-e6
   (C)  01-00-5e-5b-91-e6   (D)  01-00-5e-55-91-e6
       用二进制来换算,将215.145.230换算成1101,0111,1001,0001,1110,0110,取最后23位放到MAC地址中的23位可以计算得出答案是A。
      因为对于组播IP地址来说,取后23位映射,显然有32个IP地址(有5个y可以不一样)对应1个MAC地址,所以要避免在同一网络中使用的多个组播IP地址对应一个MAC地址。

stream 发表于 2010-7-18 11:17:23

从网上摘过来滴,LZ参考下
例子不错~~

chunchao_wei 发表于 2010-7-18 16:03:07

谢谢 这位 stream

你给了我思路,让我茅塞顿开! 关键是看IP位被去掉的那个0位。

xianwen82 发表于 2011-8-13 23:47:36

239.255.128.1
【这个换算成二进制】为
11101111.11111111.10000000.00000001
【往后取 23位】为
01111111.10000000.00000001
【组播mac】
01005e开头,换算成二进制 00000001.00000000.01011110.
【填充2进制32位】

00000001.00000000.01011110.01111111.10000000.00000001

【转换成16进制】
0100.5E7F.8001---应该就是这个了,如果我没有算错的话。--woniu2--woniu2--woniu6--woniu7--woniu8 --woniu4---
页: [1]
查看完整版本: 如何计算IP组播MAC地址对应IP地址