根据国际标准化组织(ISO)提出的开放系统互连参考模型(OSI-RM),依据链路层(二层)进行数据帧转发的称为二层交换。相应地,仅支持二层交换的交换机称为二层交换机。

二层交换机工作在数据链路层,它对数据包的转发是建立在MAC地址的基础上的。二层交换机内部通常使用称为ASIC的芯片来实现对数据包的转发,由于是硬件转发,性能非常高。

MAC地址是二层交换机转发数据包的依据。先来看一下MAC地址。MAC地址有48位(6字节)。在常用的以太网帧结构中,帧头有一个目的MAC地址(6字节),一个源MAC地址(6字节),分别标志帧的目的节点和源节点的物理地址。

目的MAC
(6字节)
源MAC
(6字节)
类型
(2字节)
数据
        MAC地址一般可以分为单播地址、组播地址和广播地址。

(1)单播地址:第一个字节的最低位为0,如:00-12-34-56-78-90。向单一设备或端口转发数据包。

(2)组播地址:第一个字节的最低位为1,如:01-00-5e-00-00-01。向一组设备或端口转发数据包。

(3)广播地址:全1。即:FF-FF-FF-FF-FF-FF。将向所有设备或端口转发数据包。

        二层交换基本流程:1.交换机接收到以太网帧后,会将以太网帧中的源MAC地址与接收端口的对应关系写入MAC地址表中,作为以后转发的依据。如果MAC地址表中已经有相同的表项,那么就刷新该表项的老化时间。2.交换机根据接收到的以太网帧的目的MAC地址查找MAC地址表,如果在MAC地址表中找到该MAC目的地址,那么就向对应的端口转发(如果对应的端口与接收端口相同,那么将丢弃该以太网帧)。如果没有找到匹配表项,那么将向除接收端口之外的所有端口转发。

可以看出,二层交换通过记录源MAC与接收端口的对应关系来维护MAC地址表,同时通过目的MAC查找MAC地址表来向相应的端口转发数据包。

动态MAC地址表的表项采取一定的老化更新机制来维护MAC地址表,一定时间内未被刷新的表项将被删除掉。

二层交换机的老化和刷新通常直接由硬件ASIC芯片完成。关于这个机制,查找到一些资料如下:

        1.在芯片中储存的每一个动态添加的MAC地址表项都有一个 1 bit 长度的老化标志,同时芯片有一个老化定时器用于控制地址老化。
        2.对于新学习到的MAC地址表项,其老化标志位置1;对于已经学习到MAC表项,如果后续有报文的源MAC与表项相同,那么将其老化标志位刷新为1。
        3.每当芯片的老化定时器超时后,将MAC地址表中老化标志位等于1的项目,修改其老化标志位等于0;对于MAC地址表中老化标志位等于0的项目,直接删除。

在这样的老化机制下,老化时间是不确定的,为1~2倍的老化定时器时间

二层交换与MAC地址相关推荐

  1. MAC地址、MAC地址表、端口安全、MAC地址漂移

    一.MAC地址 mac地址主要工作在数据链路层,主要用于单个广播域内的数据传输 1.组成 总共48Bit,前24bit是通过向IETF等机构申请用来标识厂商的代码,后24bit由是厂商分配给产品的唯一 ...

  2. mac地址容量的作用_在交换机或路由器中怎么来表明mac地址容量的

    .交换机根据收到数据帧中的源MAC地址建立该地址同交换机端口的映射,并将其写入MAC地址表中. 2.交换机将数据帧中的目的MAC地址同已建立的MAC地址表进行比较,以决定由哪个端口进行转发. 3.如数 ...

  3. 网桥、vlan、源目MAC地址的链路层处理

    一,链路层 在报文接收方向上,网卡驱动把接收到的数据按照其对应的链路层协议(如以太网)组装成报文,然后把它上交给链路层,接口是netif_receive_skb,至此网卡驱动的任务就结束了,报文交给链 ...

  4. python获取mac、计算机id_python 获取本机IP、mac地址、计算机名的简单示例

    这篇文章主要为大家详细介绍了python 获取本机IP.mac地址.计算机名的简单示例,具有一定的参考价值,可以用来参考一下. 对python获取本机IP.mac地址.计算机名感兴趣的小伙伴,下面一起 ...

  5. java 根据ip获取mac地址_利用java如何根据IP获取mac地址

    利用java如何根据IP获取mac地址 发布时间:2020-11-25 15:49:42 来源:亿速云 阅读:74 作者:Leah 利用java如何根据IP获取mac地址?针对这个问题,这篇文章详细介 ...

  6. JAVA获取局域网内对应IP电脑的MAC地址(物理地址)

    创建类UdpGetClientMacAddr.java package com.shuzhiqiang.common;import java.io.IOException; import java.n ...

  7. vmware克隆centos修改linux mac地址

    故障背景:  在vmware workstation中了完全克隆了一个已经存在的centos的虚拟机,启动之后发现网卡没有启动.于是重启一下network服务,发现提示错误信息"Device ...

  8. 获取远程网卡MAC地址

    出自: http://blog.joycode.com/liuhuimiao/ 朋友mingal急问我有关获取远程网卡MAC地址的ASP.net实现.我一开始以为是获取本机MAC地址,说了几种方法给他 ...

  9. android mac测试地址,android获取有线网的Mac地址

    Android TV开发中有的机器会接有线网,需要获取Mac地址,下面是我测试的两种Mac地址的获取方式. 1.一共两个方法,目前第二个方法获取的不准,最后一位数取的不对. private Strin ...

最新文章

  1. 唯一聚集索引上的唯一和非唯一非聚集索引
  2. Git之hotfix热修复分支
  3. Pycharm下载 安装 和谐 与 卸载
  4. 图片序列化和反序列化成图片文件(代码)
  5. 一段让人瑟瑟发抖的ABAP代码
  6. LeetCode 697. 数组的度
  7. Android高德地图自定义Markers的例子
  8. CS0656 缺少编译器要求的成员“Microsoft.CSharp..........
  9. 谷歌身份认证 Python实现
  10. 无需担心架构演变 入云的Teradata无处不在
  11. 2017web前端面试总结
  12. Edmonds-Karp算法
  13. 如何在Mac上使用听写进行语音到文本的键入
  14. UNIX/Linux RHEL6.3 root密码破解,GRUB加密(图文并茂)
  15. am3352 项目记录
  16. beego 2.0升级的巨坑,graceful错误
  17. DNS-域名系统 【应用层】【计算机网络】
  18. (个人记录)Ensight后处理EDEM学习笔记
  19. python 根据x的值和函数y=20+x2,计算y_new,算出y_new和y的差,记为delta_y。¶绘制x和delt_y的点图,并计算y的方差。有关方差的计算参阅数学资料。
  20. 配置运营商光猫做交换机拓展网络

热门文章

  1. 基于微信小程序的每日签到打卡
  2. Conflux 请你“出名”啦!
  3. 为什么梦幻西游服务器名字有显示但是区名字没有了,梦幻西游:三月份的第一个新区注定要变鬼,从名字就能看得出来...
  4. 如何把Word中艺术字转换为图片
  5. 白苹果了怎么办_ios13更新遭遇白苹果了怎么办?
  6. cakephp视图用php文件,CakePHP的视图
  7. 关于解决idea 输入法不跟随问题
  8. 英语面试对话场景[进入外企的敲门砖]
  9. win10修改系统配置处理器引导参数后,系统无限蓝屏解决办法
  10. 现代程序员 VS. 古典程序员,你属于哪一类?