组播MAC地址和各类IP地址

本文详细介绍了MAC地址的构成及分类,包括单播、组播和广播地址,并解释了其与IP地址之间的映射关系。此外,还探讨了不同类型的IP地址及其应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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类 : 1 0000000 ,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.0239.255.255.255

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

其中224.0.0.0224.0.0.255是被保留的地址

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

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

224.0.0.5表示OSPFOpen 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换算成110101111001000111100110,取最后23位放到MAC地址中的23位可以计算得出答案是A
    显然有32IP地址(有5y可以不一样)对应一个MAC地址,所以要避免在同一网络中使用的多个组播IP地址对应一个MAC地址

各类地址:

一、
Windows系统下,该地址还有一个别名叫
二、172.16.*.*――172.31.*.*
上面三个网段是私有地址,可以用于自己组网使用,这些地址主要用于企业内部网络中,但不能够在Internet网没有这些地址的路由,而使用这三个网段的计算机要上网必须要通过地址翻译IP地址。一些带宽路由器或是其它的网络设备,往往使用IP地址,保留这三个网段的

三、
严格意义上来说,ip地址了它表示的是这样一个集合,所有不清楚的主机和目的网络。这里的不清楚是指在本机的路由表里没有特定条目指明如何到达。对本机来说,它就是一个收容所,所有不认识的三无人员,一律送进去。如果你在网络设置中设置了缺省网关,那么0.0.0.0的缺省路由。255.255.255.255
(同一个广播域IP数据包的目的地址,这时主机可能还不知道它所在网络的网络掩码,甚至连它的
五、
这是一组组播地址,需要注意它与广播地址的区别,其中224.0.0.2特指所有的路由器,OSPF路由器地址,PIMV2路由器的地址。另外从239.0.0.0――239.255.255.255是私有地址 192.168. *.*功能一样224.0.1.0—238.255.255.255可以用于IRDp(Internet路由发现协议,使用组播功能
六、
如果你的主机使用了ip地址,那么当你的windows系统会为你分配这样一个地址。如果你发现你的主机<span font-size:16px;"="" style="word-wrap: break-word; ">ip地址是个诸如此类的地址,很不幸,十有八九是你的网络不能正常运行了。

### 如何捕获区分不同类型的MAC帧 在网络通信中,数据帧分为多种类型,包括单(Unicast)、广(Broadcast)(Multicast)。以下是关于如何使用网络抓包工具(如Wireshark)来捕获并区分这些不同类型的数据帧的方法。 #### 工具简介 Wireshark 是一款功能强大的网络协议分析器[^1]。它能够实时捕获网络流量,并提供详细的报文解析能力。通过 Wireshark 的过滤机制,可以轻松筛选出特定类型的 MAC 帧。 --- #### 捕获本机发出的帧 要捕获由本地主机发送的数据帧,可以通过设置显示过滤器 `eth.src` 来实现。该过滤器仅匹配源地址为当前设备 MAC 地址的帧。 ```plaintext eth.src == <Your_MAC_Address> ``` 其中 `<Your_MAC_Address>` 需替换为实际的本机 MAC 地址。此操作允许用户专注于观察从本机发出的所有数据帧[^3]。 --- #### 捕获发往本机的帧 针对目标是本机的数据帧,则可利用 `eth.dst` 过滤条件完成捕捉工作: ```plaintext eth.dst == <Your_MAC_Address> ``` 上述命令将帮助识别那些目的地指向本计算机的具体消息流[^4]。 --- #### 捕获广帧 广帧的特点在于其目的 MAC 地址全为 FF (即 ff:ff:ff:ff:ff:ff),因此可通过以下表达式获取所有的广通信记录: ```plaintext eth.dst == ff:ff:ff:ff:ff:ff ``` --- #### 捕获多帧 多帧通常具有特殊的 MAC 地址范围(01-xx-xx 开头),所以采用通配符形式定义一个多地址集合即可满足需求: ```plaintext ether dst host 01:00:5e:00:00:00/24 ``` 这里 `/24` 表示掩码长度,用于限定具体的子网部分。 --- #### 实际应用案例说明 当执行具体任务时,例如学习 ARP 请求行为差异或者研究 TCP/IP 协议栈细节过程中,合理运用以上提到的各种过滤手段将会极大提高效率与准确性。此外,在某些特殊场景下可能还需要借助其他辅助软件像 Fiddler 结合 HTTPS 抓包技术进一步扩展视野[^2]。 --- ### 总结 通过对 Wireshark 显示过滤器的学习掌握,我们可以精确地区分并收集各类所需的数据帧样本,从而深入理解现代计算机网络运作原理及其内部交互过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值