转自:http://www.cnblogs.com/lifan3a/articles/6650936.html

组播MAC地址和各类IP地址

MAC地址是以太网二层使用的一个48bit(6字节十六进制数)的地址,用来标识设备位置。MAC地址分成两部分,前24位是组织唯一标识符(OUI, Organizationally unique identifier),后24位由厂商自行分配。

MAC地址有单播、组播、广播之分。单播地址(unicast address)表示单一设备、节点,多播地址或者组播地址(multicast address、group address)表示一组设备、节点,广播地址(broadcast address)是组播的特例,表示所有地址,用全F表示:FF-FF-FF-FF-FF-FF。当然,三层的IP地址也有单播、组播、广播之分。

48bit的MAC地址一般用6字节的十六进制来表示,如XX-XX-XX-XX-XX。IEEE 802.3规定:以太网的第48bit(2012-04-11修改为The first bit) 用于表示这个地址是组播地址还是单播地址。如果这一位是0,表示此MAC地址是单播地址,如果这位是1,表示此MAC地址是多播地址。见IEEE 802.3 3.2.3 Address fields:“The first bit (LSB) shall be used in the Destination Address field as an address type designation bit to identify the Destination Address either as an individual or as a group address. If this bit is 0, it shall indicate that the address field contains an individual address. If this bit is 1, it shall indicate that the address field contains a group address that identifies none, one or more, or all of the stations connected to the LAN. In the Source Address field, the first bit is reserved and set to 0.”

以太网线路上按“Big Endian”字节序传送报文(也就是最高字节先传送,关于字节序请参考相关文档),而比特序是”Little Endian”(也就是最低位先传送)。一个十六进制表示法表示的MAC地址01-80-C2-00-00-00,传送时的bit顺序就是:1000 0000 0000 0001 0100 0011 0000 0000 0000 0000 0000 0000,如下面的图(从最左边开始传送):

注意图上的第47bit(2012-04-11修改为The second bit),这一位表示MAC地址是全球唯一地址还是本地地址,0表示全球唯一地址,1表示本地唯一地址。这一位也叫G/L位。

对于网络设备上固化的MAC地址,因为它唯一标识这个设备,所以只能是单播地址,也就是MAC帧里面的Source地址第48位(2012-04-11修改为The first bit)只能为0。

我们常说有2的48次方个MAC地址可供网络设备使用,这些地址可以多到给地球上每一粒沙子分配一个地址,其实这个数量要打折扣的,因为MAC地址虽然有这么多,但真正用在网卡上并且全球唯一的只有2的46次方个:第48bit一定是0,第47bit一定是0。

这也就引出了一个有意思的现象:随便找一台PC,观察一下它的网卡地址,第1字节的十六进制数一般是4的倍数;查看一下IEEE分配的OUI(http://standards.ieee.org/develop/regauth/oui/oui.txt),第1字节的十六进制数也一般是4的倍数(早期以太网没有本地地址的概念,所以分配的OUI里面G/L bit也可能是1),这种情况下就不是4的倍数了,但肯定是2的倍数,因为第48位只能是0。

关于组播地址,有这么个误解:MAC地址第1字节必须是0x01才表示组播地址,连TCP/IP详解上也这么说(见中文版12.4.2第一段)。IEEE 802.3里面已经明确说明了只要第48bit是1就表示组播地址,所以无论MAC地址第1字节是0x01、0xC1或者是0x33都表示这个MAC地址 是组播地址(以0x33开头的表示IPV6对应的二层组播地址)。之所以有这样的误解,是因为到目前为止,大部分组播MAC地址的第1字节都是0x01。 如:

01-80-C2-00-00-00(STP协议使用)

01-80-C2-00-00-01(MAC Control的PAUSE帧使用)

01-80-C2-00-00-02(Slow Protocol: 802.3ah OAM/ LACP 协议都用这个地址,这个地址很有故事,有多少软件处理这个地址会出问题啊!)

01-00-5E-xx-xx-xx(IP组播地址对应的二层组播地址)。

完整的列表见http://standards.ieee.org/develop/regauth/grpmac/public.html

之所以大部分组播地址都以01-80-C2和01-00-5E开头,那是因为使用这些组播地址的协议都是带头大哥IEEE和IANA名下的,它们的OUI 分别是00-80-C2和00-00-5E是,变成组播地址就是01-80-C2和01-00-5E了,当然,除了带头大哥霸占的这些组播地址,还有 01-00-0C-CC-CC-CC这样的地址,这个地址是Cisco霸占的,Cisco的OUI是00-00-0C。


1、802.3标准上说明某个bit时都是按照网络传送顺序来说的,所以我文章里也按这个顺序来说明,而不是十六进制表示法中的bit位置,所以有了48bit的说法,为了防止误解,还是遵从标准使用"The first bit". 
十六进制表示法的01-80-C2-00-00-00,其中的"第40位"标识是否是组播地址,但传送时bit顺序是这样的:
1000 0000 0000 0001 0100 0011 0000 0000 0000 0000 0000 0000
所以传送过程中最先发送的一位(上面最左边一位)标识是否是组播地址
2、00000001b传的时候从1开始传,然后再传7个0。网络上发送数据也是以比特为单位的,在网线上抓波形看不就是一个个方波吗?物理层也没办法一个波形带走8bit数据啊。


1、先总的来看ip地址分类

A类 :00000000×××——01111111××× 
                0.0.0.0 —— 127.255.255.255 
B类 :10000000,00000000×××——10111111,11111111××× 
               128.0.0.0——191.255.255.255
C类 :11000000,00000000,0000000×××——11011111,1111111,1111111××× 
               192.0.0.0——223.255.255.255
D类 :11100000××——111011111××××
            224.0.0.0——239.255.255.255 (组播地址)
E类 :11110000×××——11110111×××  
            240.0.0.0——247.255.255.255 (科学实验)

IP组播和单播的目的地址不同,IP组播的目的地址是组地址——D类地址.

组播IP地址是本地管理组播地址:239.0.0.0~239.255.255.255

D类地址是从224.0.0.0到239.255.255.255之间的IP地址

其中224.0.0.0到224.0.0.255是被保留的地址

224.0.0.1表示子网中所有的组播组

224.0.0.2表示子网中的所有路由器

224.0.0.5表示OSPF(Open Shortest Path First)路由器

224.0.0.6表示OSPF指定路由器

224.0.0.12表示DHCP(Dynamic Host Configuration Protocol)服务器.

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。
    显然有32个IP地址(有5个y可以不一样)对应一个MAC地址,所以要避免在同一网络中使用的多个组播IP地址对应一个MAC地址。

各类地址:

一、127.0.0.1<span "="">
127是一个保留地址,该地址是指电脑本身,主要作用是预留下作为测试使用,用于网络软件测试以及本地机进程间通信。在Windows系统下,该地址还有一个别名叫“localhost”,无论是哪个程序,一旦使用该地址发送数据,协议软件会立即返回,不进行任何网络传输,除非出错,包含该网络号的分组是不能够出现在任何网络上的。<span "="">
二、10.*.*.*,172.16.*.*――172.31.*.*,192.168.*.*<span "="">
上面三个网段是私有地址,可以用于自己组网使用,这些地址主要用于企业内部网络中,但不能够在Internet网上使用,Internet网没有这些地址的路由,而使用这三个网段的计算机要上网必须要通过地址翻译(NAT),将私有地址翻译成公用合法的IP地址。一些带宽路由器或是其它的网络设备,往往使用192.168.1.1作为缺省的地址,由于私有个人网络不会与外部互连,所以可以使用随意的IP地址,保留这三个网段的IP 地址使其使用,是为了避免以后接入公网时引起地址混乱。<span "="">

三、0.0.0.0<span "="">
严格意义上来说,0.0.0.0已经不是真正意义上的ip地址了。它表示的是这样一个集合,所有不清楚的主机和目的网络。这里的不清楚是指在本机的路由表里没有特定条目指明如何到达。对本机来说,它就是一个收容所,所有不认识的三无人员,一律送进去。如果你在网络设置中设置了缺省网关,那么windows系统就会自动产生一个目的地址为0.0.0.0的缺省路由。<span "="">
四、255.255.255.255<span "="">
受限制的广播地址,对本机来说,这个地址指本网段内(同一个广播域)的所有主机,该地址用于主机配置过程中IP数据包的目的地址,这时主机可能还不知道它所在网络的网络掩码,甚至连它的IP地址也还不知道。在任何情况下,路由器都会禁止转发目的地址为受限的广播地址的数据包,这样的数据包仅会出现在本地网络中。<span "="">
五、224.0.0.0—239.255.255.255<span "="">
这是一组组播地址,需要注意它与广播地址的区别,其中224.0.0.1特指所有的主机,224.0.0.2特指所有的路由器,224.0.0.5指所有的OSPF路由器地址,224.0.0.13指PIMV2路由器的地址。另外从224.0.0.0――224.0.0.255只能用于局域网中路由器是不会转发的,239.0.0.0――239.255.255.255是私有地址 (与192.168. *.*功能一样),224.0.1.0—238.255.255.255可以用于Internet上。如果你的主机开启了IRDp(Internet路由发现协议,使用组播功能)功能,那么你的主机路由表中应该会有这样的一条路由。<span "="">
六、169.254.*.*<span "="">
如果你的主机使用了DHCP功能自动获得一个ip地址,那么当你的DHCP服务器发生故障或响应时间太长而超出系统规定的一个时间,windows系统会为你分配这样一个地址。如果你发现你的主机ip地址是个诸如此类的地址,很不幸,十有八九是你的网络不能正常运行了

一篇讲组播MAC和各类IP地址的文章相关推荐

  1. 组播MAC地址和各类IP地址

    MAC地址是以太网二层使用的一个48bit(6字节十六进制数)的地址,用来标识设备位置.MAC地址分成两部分,前24位是组织唯一标识符(OUI, Organizationally unique ide ...

  2. 【计算机网络】网络层 : IP 组播 ( IP 数据报传输方式 | 组播 IP 地址 | 组播 MAC 地址 | IGMP 协议 | 组播路由选择协议 )

    文章目录 一.IP 数据报传输方式 二.组播 IP 地址 三.组播 MAC 地址 四.IGMP 协议 五.组播路由选择协议 一.IP 数据报传输方式 IP 数据报传输方式 : ① 单播 : 发送数据到 ...

  3. 组播IP 映射 组播MAC

    组播IP地址与组播MAC地址之间的换算方法与例子 1.在IP分类中,D类IP地址用于组播MAC. 2.在TCP/IP中,最常用的v4组播MAC地址的前24位固定为01005e,第25位固定为0,后23 ...

  4. 组播IP与组播Mac的对应关系

    1.IPv4组播MAC地址 IANA规定,IPv4组播MAC地址的高24位为0x01005E,第25位为0,低23位为IPv4组播地址的低23位.IPv4组播地址与MAC地址的映射关系如下图所示. 由 ...

  5. 【博客546】组播IP地址与组播MAC地址的联系与转换

    组播IP地址与组播MAC地址的联系与转换 先直观感受一下ipv4的转换 ip多播地址: 对应mac多播地址: ipv4,ipv6各种情况 ip组播地址 mac组播地址

  6. 单播、广播和多播地址以及组播ip与组播mac间的换算

    转自:https://www.cnblogs.com/songdada/articles/4039468.html 除地址类外,还可根据传输的消息特征将IP地址分为单播.广播或多播.主机使用IP地址进 ...

  7. 组播MAC和单播MAC地址区别

    组播MAC和单播MAC地址区别 组播MAC地址与单播MAC地址的区别: xxxx xxx1 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 组播MA ...

  8. IPv4/IPv6组播地址和组播MAC地址的转换

    IPv4地址的组播MAC地址: 组播MAC地址高24位固定为0x01005E,第25位为0 组播MAC地址低23位为IPv4地址的低23位 以上规则是IANA规定的,因为IPv4组播地址的高4位是11 ...

  9. linux配置添加组播mac地址,端口静态添加组播MAC地址如何实现

    端口静态添加组播MAC地址如何实现 组播MAC地址是一类逻辑的MAC地址,该MAC地址代表一个组播组,所有属于该组的成员都接收以该组对应的组播MAC地址为目的地址的'数据帧.下面是YJBYS小编整理的 ...

最新文章

  1. 十六进制字符转化为十进制数字
  2. jquery操作复选框(checkbox)的12个小技巧总结
  3. python文档的数据读取,把读取数据写入到新的表里
  4. 3/14课程 第三章 结构化的项目前期和面向对象的项目前期实例
  5. Day16:面向对象编程——类和对象
  6. 查询每个班级排名第三的学生
  7. 博客园在升级的路上,不妨更自信些,同时说说我们可以为博客园做些什么
  8. 【深度学习】——训练过程
  9. OpenSSH 密钥管理:RSA/DSA 认证(转载)
  10. 微信web开发者工具初次安装无法打开的几种解决办法
  11. 正确使用招呼语、称呼语_5
  12. 计算机的五大组成部分(计组学习一)
  13. set 和 vector的简单比较
  14. python是什么软件-学习python用什么软件
  15. 学校多媒体讲台计算机怎么开,标准多媒体教室多媒体使用方法
  16. matlab多排图例,在Matlab中绘制多行的图例
  17. 12306对抢票软件“下手”了 1
  18. 超市会员管理系统php,最新超市商店会员刷卡消费综合管理系统C#源码分享,功能强大可二次开发或毕业设计等...
  19. 网络是怎样连接的学习笔记——从网线到网络设备
  20. Chapter 9 (Classical Statistical Inference): Binary Hypothesis Testing

热门文章

  1. 腾讯云cloudlite认证_国内首批可信物联网云平台认证公布,腾讯云上榜
  2. 微信小程序---上传图片(视频)功能(单个/多个)
  3. Microsoft Visual Studio 2012正式版官方下载
  4. 阿里云yum源报错Peer’s Certificate has expired原因及解决
  5. 操作系统-银行家算法(Java实现)
  6. Gateone初步--django堡垒机实现
  7. 年轻人,看看Redisson分布式锁—可重入锁吧!太重要了
  8. 双网卡绑定-bond
  9. react学习系列(二)
  10. mysql limit 菜鸟_MySQL之二---MySQL菜鸟入门“秘籍”