草庐IT

组播IP 映射 组播MAC

牛牛来了 2024-06-02 原文

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

1、在IP分类中,D类IP地址用于组播MAC。
2、在TCP/IP中,最常用的v4组播MAC地址的前24位固定为01005e,第25位固定为0,后23位由IP地址的后23位复制得出。
3、在D类组播IP中有5位未用,也就是说组播IP和组播MAC的映射并不唯一,
4、每一个组播MAC最多可映射对应32个组播IP。
5、备注:映射涉及到2进制和16进制之间的转换:4位2进制对应一位16进制:000000001(二进制)——>01(16进制)

组播ip(十进制):224.0.0.0–239.255.255.255
组播ip(二进制):11100000.00000000.00000000.00000000----111011111.111111111.111111111.11111111

组播mac(二进制):00000001.00000000.01011110+0+组播ip后23位(二进制)
组播mac(十六进制):01-00-5e+【(0+组播ip后23位)映射16进制】

可用组播范围:0100.5E00.0000----0100.5E07.FFFF
MAC由48bit组成:前24位是OUI ,后24位由厂商定义
组播IP和组播MAC的映射示意图如下:

方法一

最笨的方法,也是最安全的方法,就是把组播IP地址,换成二进制数。再把二进制换成16进制,第1个8位(从左往右看)不用,因为有组播MAC的限制已经规定是0100.5E开头,组播IP地址第2个8位中的第1位规定为0(从左往右看).所以当不为0时,要改成0来换算。

Example:

源IP 224.1.1.1

换算成二进制 11100000.00000001.00000001.00000001

再换成16进制 01 .01 .01

加上组播MAC头 —— 0100.5E

最后形成组播MAC—— 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

取组播ip后23位 : 11100000.1{0000100.00000001.00000001}
将第24位为0 11100000.{0}0000100.00000001.00000001

再换成16进制 04 .01 .01

组播mac(二进制):00000001.00000000.01011110+0+组播ip后23位(二进制)
即:00000001.00000000.01011110.{+0+0000100.00000001.00000001}
即:00000001.00000000.01011110.00000100.00000001.00000001

组播mac(十六进制):01-00-5e+【04.01.01】
最后形成: 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地址第1、2、3位都大于128,可以用128除以16(因为可用IP是28位,可用MAC是23位,剩5位可变,2的4次方是16),得出来的商换成16进制是MAC的左位,得出来的余数换成16进制是MAC的右位。第4组8位不看,因为是规定是0100.5E开头。

第3组第8位必需为0.当为1时,要去掉换成0.

Example:

源IP : 224.215.145.230

转成二进制:11100000.11010111.10010001.11101000

除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

这样从224-239每一组里有两个地址,刚好32个。

有关组播IP 映射 组播MAC的更多相关文章

  1. ruby - 从 Ruby 中的主机名获取 IP 地址 - 2

    我有一个存储主机名的Ruby数组server_names。如果我打印出来,它看起来像这样:["hostname.abc.com","hostname2.abc.com","hostname3.abc.com"]相当标准。我想要做的是获取这些服务器的IP(可能将它们存储在另一个变量中)。看起来IPSocket类可以做到这一点,但我不确定如何使用IPSocket类遍历它。如果它只是尝试像这样打印出IP:server_names.eachdo|name|IPSocket::getaddress(name)pnameend它提示我没有提供服务器名称。这是语法问题还是我没有正确使用类?输出:ge

  2. ruby-on-rails - 如何在 mac os snow leopard 中升级 ruby​​ 和 rails - 2

    我想将我的MacSnowLeopardruby​​从1.8.7升级到1.9.1版本,有人知道轻松且最好的升级方法吗?因为我读了一些论坛/帖子/博客/讨论说覆盖苹果发布的ruby不好将Rails从版本2.2.2升级到2.3.8的最佳方法是什么?因为我找到的所有信息都仅适用于豹/老虎,而且很少有关于雪豹的复杂文章。他们还说覆盖apple提供的rails不好吗。谁能帮帮我?谢谢。 最佳答案 DanBenjamin有一些greatinstructionsforcompilingandinstallingRuby,RubyGemsandRai

  3. ruby - 在不使用 RVM 的情况下在 Mac 上卸载和升级 Ruby - 2

    我最近决定从我的系统中卸载RVM。在thispage提出的一些论点说服我:实际上,我的决定是,我根本不想担心Ruby的多个版本。我只想使用1.9.2-p290版本而不用担心其他任何事情。但是,当我在我的Mac上运行ruby--version时,它告诉我我的版本是1.8.7。我四处寻找如何简单地从我的Mac上卸载这个Ruby,但奇怪的是我没有找到任何东西。似乎唯一想卸载Ruby的人运行linux,而使用Mac的每个人都推荐RVM。如何从我的Mac上卸载Ruby1.8.7?我想升级到1.9.2-p290版本,并且我希望我的系统上只有一个版本。 最佳答案

  4. ruby-on-rails - 只有当不是 nil 时才执行映射? - 2

    如果names为nil,则以下中断。我怎样才能让这个map只有在它不是nil时才执行?self.topics=names.split(",").mapdo|n|Topic.where(name:n.strip).first_or_create!end 最佳答案 其他几个选项:选项1(在其上执行map时检查split的结果):names_list=names.try(:split,",")self.topics=names_list.mapdo|n|Topic.where(name:n.strip).first_or_create!e

  5. ruby-on-rails - gem install rmagick -v 2.13.1 错误 Failed to build gem native extension on Mac OS 10.9.1 - 2

    我已经通过提供MagickWand.h的路径尝试了一切,我安装了命令工具。谁能帮帮我?$geminstallrmagick-v2.13.1Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingrmagick:ERROR:Failedtobuildgemnativeextension./Users/ghazanfarali/.rvm/rubies/ruby-1.8.7-p357/bin/rubyextconf.rbcheckingforRubyversion>=1.8.5...yescheckingfor/

  6. ruby - 在 TCPServer (Ruby) 中,我如何从客户端获取 IP/MAC? - 2

    我想在Ruby的TCPServer中获取客户端的IP地址。以及(如果可能的话)MAC地址。例如,Ruby中的时间服务器,请参阅评论。tcpserver=TCPServer.new("",80)iftcpserverputs"Listening"loopdosocket=tcpserver.acceptifsocketThread.newdoputs"Connectedfrom"+#HERE!HowcanigettheIPAddressfromtheclient?socket.write(Time.now.to_s)socket.closeendendendend非常感谢!

  7. ruby - 安装 tiny_tds 在 mac os 10.10.5 上出现错误 - 2

    我正在使用macos,我想使用ruby​​驱动程序连接到sqlserver。我想使用tiny_tds,但它给出了缺少free_tds的错误,但它已经安装了。怎么能过这个?~brewinstallfreetdsWarning:freetds-0.91.112alreadyinstalled~sudogeminstalltiny_tdsBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtiny_tds:ERROR:Failedtobuildgemnativeextension.完整日志如下:/System

  8. Ruby:映射和注入(inject)之间的区别 - 2

    在此处阅读有关SO的各种解释,它们是这样描述的:map:Themapmethodtakesanenumerableobjectandablock,andrunstheblockforeachelement注入(inject):Injecttakesavalueandablock,anditrunsthatblockonceforeachelementofthelist.希望你明白为什么我觉得它们表面上看起来很相似。我什么时候会选择一个而不是另一个,它们之间有什么明显的区别吗? 最佳答案 如果您认为inject也别名为reduce,这

  9. ruby - 无法在 Mac 上设置 ruby​​-selenium Webdriver - 2

    我一直在工作中使用seleniumIDE。现在我们决定将Seleniumwebdriver与Ruby结合使用。我完全不知道如何设置我的Mac,MacProYosemite10.10.5。在我的终端中,我运行了这些命令:$ruby-e"$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)"$brewdoctorYoursystemisreadytobrew.$brewinstallruby==>Summary/usr/local/Cellar/openssl/1.0.2d_1:464fi

  10. ruby - 在我的 Mac 上安装 ruby​​ gem json 时遇到问题 - 2

    我在尝试通过ruby​​gems安装json模块时收到此警告。有什么想法吗?Mac-Minipoulh$sudogeminstalljsonPassword:WARNING:File'/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/specifications/json-1.2.0.gemspec'doesnotevaluatetoagemspecificationBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errori

随机推荐