MAC地址组成

网络设备的MAC地址是全球唯一的。MAC地址长度为48比特,通常用十六进制表示。MAC地址包含两部分:前24比特是组织唯一标识符(OUI,OrganizationallyUniqueIdentifier),由IEEE统一分配给设备制造商。

例如,华为的网络产品的MAC地址前24比特是0x00e0fc。后24位序列号是厂商分配给每个产品的唯一数值,由各个厂商自行分配(这里所说的产品可以是网卡或者其他需要MAC地址的设备)。

MAC地址有单播、广播、组播之分

单播

局域网上的帧可以通过三种方式发送。第一种是单播,指从单一的源端发送到单一的目的端。每个主机接口由一个MAC地址唯一标识,MAC地址的OUI中,第一字节第8个比特表示地址类型。对于主机MAC地址,这个比特固定为0,表示目的MAC地址为此MAC地址的帧都是发送到某个唯一的目的端。在冲突域中,所有主机都能收到源主机发送的单播帧,但是其他主机发现目的地址与本地MAC地址不一致后会丢弃收到的帧,只有真正的目的主机才会接收并处理收到的帧。

广播

第二种发送方式是广播,表示帧从单一的源发送到共享以太网上的所有主机。广播帧的目的MAC地址为十六进制的FFFFFFFFFFFF,所有收到该广播帧的主机都要接收并处理这个帧。

广播方式会产生大量流量,导致带宽利用率降低,进而影响整个网络的性能。

当需要网络中的所有主机都能接收到相同的信息并进行处理的情况下,通常会使用广播方式。

组播

第三种发送方式为组播,组播比广播更加高效。组播转发可以理解为选择性的广播,主机侦听特定组播地址,接收并处理目的MAC地址为该组播MAC地址的帧。

组播MAC地址和单播MAC地址是通过第一字节中的第8个比特区分的。组播MAC地址的第8个比特为1,而单播MAC地址的第8个比特为0。

当需要网络上的一组主机(而不是全部主机)接收相同信息,并且其他主机不受影响的情况下通常会使用组播方式。

MAC在数据帧接收与发送的应用

帧从主机的物理接口发送出来后,通过传输介质传输到目的端。共享网络中,这个帧可能到达多个主机。主机检查帧头中的目的MAC地址,如果目的MAC地址不是本机MAC地址,也不是本机侦听的组播或广播MAC地址,则主机会丢弃收到的帧。

如果目的MAC地址是本机MAC地址,则接收该帧,检查帧校验序列(FCS)字段,并与本机计算的值对比来确定帧在传输过程中是否保持了完整性。如果帧的FCS值与本机计算的值不同,主机会认为帧已被破坏,并会丢弃该帧。如果该帧通过了FCS校验,则主机会根据帧头部中的Type字段来确定将帧发送给上层哪个协议处理。本例中,Type字段的值为0x0800,表明该帧需要发送到IP协议上处理。在发送给IP协议之前,帧的头部和尾部会被剥掉。

举例说明:主机A要发数据给主机B,主机A在封装Frame(OSI的第二层用的数据格式),要封装对方的MAC,查找ARP表发现不知道B的MAC,只知道IP,它就发送一个ARP包,源IP是自己的,目的IP是B的,源MAC是自己的,目的MAC是广播的。然后这个ARP请求在A所在的内网被广播,当其他机器接到这个包时,用目的IP和自己的IP比较,不是的话就丢弃;是的话,B接收后,就应答这个请求,把自己的MAC送给A。如果B是其他子网的主机,那么路由器根据子网掩码会判断出B是其他子网,然后路由器把自己的MAC返回给A,A以后再给B发包时,目的MAC封装的就是路由器的。总之,A和B如果是同一子网,A发送的目的MAC就是B的,否则A发送的目的MAC就是路由器的。

MAC出现的历史原因:以太网发明出来的时候,IP还没有垄断网络层协议,那时还有Novell网的IPX/SPX协议、DEC公司开发的CLNP网络协议,以及Apple公司开发的Apple Talk协议,以太网需要支持这所有的网络层协议,如果没有MAC地址,势必需要网卡解读网络层协议头的地址信息,而每一种网络层的地址都大相径庭,所以增加了以太网卡的实现复杂度。

而网卡有了MAC地址,可以不依赖于任何网络层协议,可以独立判断一个以太帧是否接收(依据MAC地址匹配),这样大大简化了网卡的实现。

即使以后出现更多的网络层协议,网卡也无需太多的改变,这就是网络分层的精髓,一层的内部实现无需知晓其上层、或下层协议字段。

二层交换机:交换机工作主要依靠MAC表(MAC和以太网端口映射表),交换机会记录每个端口连接的主机的MAC。当交换机收到主机的数据包,提取目的MAC地址,查看目的MAC地址的主机连接哪个端口,然后往那个端口发送数据。交换机不会改变数据包的任何信息,包括MAC。

无线路由器:目前的无线路由器同时扮演有线网络中交换机与路由器的角色。传统有线网络中的交换机与路由器一般是分离的,客户端要传输数据时,若在同一子网在交换机上传输无须经过路由器,若跨子网传输数据时就要通过交换机与路由器了。无线路由器能接收发送给子网的数据包,也能接收发往外网的数据包。当接收到子网的数据包,无线路由器只起到交换机的作用;当接收到发往外网的数据包,通过NAT协议发送出去。

转载于:https://www.cnblogs.com/god-of-death/p/7191684.html

MAC地址的介绍(单播、广播、组播、数据收发)相关推荐

  1. 单播 广播 组播_【技术解析】关于组播概念那些你需要知道的~

    点击蓝字关注我 今天,小盟带大家继续学习一下组播知识~ 一.IGMP Message 1.组成员一旦开启IGMP,会自动发送Membership Report消息到叶路由器 2.IGMPv2版本,组成 ...

  2. 单播 广播 组播_组播概念3

    一.IGMP Message 1.组成员一旦开启IGMP,会自动发送Membership Report消息到叶路由器 2.IGMPv2版本,组成员退出组会发送leave消息,IGMPv1不会 3.也就 ...

  3. MAC地址的介绍(单播、广播、组播)

    MAC地址组成 网络设备的MAC地址是全球唯一的.MAC地址长度为48比特,通常用十六进制表示.MAC地址包含两部分:前24比特是组织唯一标识符(OUI,OrganizationallyUniqueI ...

  4. 单播 广播 组播区别

    一:通信方式分类 在IPv4网络中,主机可采用的通信方式有如下三种: 1.单播:单台主机与单台主机之间的数据通信 带宽端口有多少台就发多少个数据 2.广播:单台主机向网络中所有主机发送数据包的过程 发 ...

  5. 2022-10-31 网工进阶(三十三) IP组播-流量模型、组播概念、组播报文结构、组播地址与MAC、组播网络架构、组播服务模型、组播数据转发原理(RPF检查、组播分发树、组播协议介绍)

    IP组播概念 流量模型 网络中存在各种各样的业务,从流量模型看一般可以将业务分为两类: 点到点业务:比如FTP,WEB业务,此类业务主要特点是不同的用户有不同的需求,比如用户A需要下载资料A,用户B需 ...

  6. 判断mac地址单播还是组播(shell脚本)

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

  7. Python 创建随机mac地址(单播、组播)

    创建随机mac地址 import random def randomMAC(): mac = [ random.randint(0x00, 0x7f), random.randint(0x00, 0x ...

  8. 怎么样区分单播、组播、广播和任意播?

    单播MAC地址:指第一个字节的最低位是0的MAC地址. 如:xxxxxxx0-xxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx 组播MAC地址:指第一个字节的最 ...

  9. 【TCP/IP】单播与组播

    [TCP/IP]单播与组播 三种IP地址: 单播地址.广播地址和组播地址 广播和多播仅应用于UDP. TCP是一个面向连接的协议,TCP一定是点对点的,一点是两个主机来建立连接的,TCP肯定是单播.只 ...

  10. HCIA-RS自用笔记(9)数据转发过程、单播/多播/组播

    数据转发过程(7/13,29min) 网关(Gateway) 不同网络的主机需要通讯,首先要把数据转发给网关,网关代表一条缺省路由 查看Windows主机路由表: C:\Users\Admin> ...

最新文章

  1. 20135234mqy 实验四
  2. 【Qt】Qt编码风格、命名约定
  3. 面向对象的程序开发技术C++教学课件系列之四
  4. Nature重磅:管轶等发现穿山甲是SARS-CoV-2的中间宿主
  5. PPPOE/PPPOA白皮书小结
  6. linux实现时间服务器视频,linux实现时间同步有哪几种方法
  7. oracle join详解,inner join和left join之间的区别详解
  8. 「数据ETL」从数据民工到数据白领蜕变之旅(六)-将Python的能力嫁接到SSIS中...
  9. linux 故障注入_用软件中断实现的Linux内核故障注入方法
  10. Flutter修仙传第二章:路由详解
  11. 认识div(division)在排版中的作用
  12. 网站成功的三十三个法则
  13. 浅析java垃圾回收机制
  14. cryptojs php 互通_AES 加密解密 CryptoJS + php 方案
  15. 自学是一门手艺 python_《自学是门手艺》:Python自学指南(内附PPT)
  16. 【文本挖掘】关键词提取
  17. Python 操作 Excel 表格
  18. 软件系统开发|公众号都有哪些展现形式?
  19. python opencv BGR2RGB转换原理
  20. linux5关闭apic服务,阐述Linux内核里面的APIC编程

热门文章

  1. 西铁城s621c打印机调试说明,西铁城CL-S621CII驱动
  2. 【笔记】斜线(slash)和反斜线“\”(backslash)的区别总结
  3. C语言实现多线程的归并排序
  4. ECMAScript 6 字符串和数值的拓展
  5. (转)看穿机器学习(W-GAN模型)的黑箱
  6. lm35温度转换c语言,Arduino基础入门篇29—模拟温度传感器LM35
  7. Springboot:拦截器和过滤器
  8. 找论文的几个实用网站
  9. 触发器 jackey
  10. Polygon已在测试网中实现EIP-1559