二层交换与MAC地址
根据国际标准化组织(ISO)提出的开放系统互连参考模型(OSI-RM),依据链路层(二层)进行数据帧转发的称为二层交换。相应地,仅支持二层交换的交换机称为二层交换机。
二层交换机工作在数据链路层,它对数据包的转发是建立在MAC地址的基础上的。二层交换机内部通常使用称为ASIC的芯片来实现对数据包的转发,由于是硬件转发,性能非常高。
MAC地址是二层交换机转发数据包的依据。先来看一下MAC地址。MAC地址有48位(6字节)。在常用的以太网帧结构中,帧头有一个目的MAC地址(6字节),一个源MAC地址(6字节),分别标志帧的目的节点和源节点的物理地址。
目的MAC
(6字节)
|
源MAC
(6字节)
|
类型
(2字节)
|
数据 |
(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地址相关推荐
- MAC地址、MAC地址表、端口安全、MAC地址漂移
一.MAC地址 mac地址主要工作在数据链路层,主要用于单个广播域内的数据传输 1.组成 总共48Bit,前24bit是通过向IETF等机构申请用来标识厂商的代码,后24bit由是厂商分配给产品的唯一 ...
- mac地址容量的作用_在交换机或路由器中怎么来表明mac地址容量的
.交换机根据收到数据帧中的源MAC地址建立该地址同交换机端口的映射,并将其写入MAC地址表中. 2.交换机将数据帧中的目的MAC地址同已建立的MAC地址表进行比较,以决定由哪个端口进行转发. 3.如数 ...
- 网桥、vlan、源目MAC地址的链路层处理
一,链路层 在报文接收方向上,网卡驱动把接收到的数据按照其对应的链路层协议(如以太网)组装成报文,然后把它上交给链路层,接口是netif_receive_skb,至此网卡驱动的任务就结束了,报文交给链 ...
- python获取mac、计算机id_python 获取本机IP、mac地址、计算机名的简单示例
这篇文章主要为大家详细介绍了python 获取本机IP.mac地址.计算机名的简单示例,具有一定的参考价值,可以用来参考一下. 对python获取本机IP.mac地址.计算机名感兴趣的小伙伴,下面一起 ...
- java 根据ip获取mac地址_利用java如何根据IP获取mac地址
利用java如何根据IP获取mac地址 发布时间:2020-11-25 15:49:42 来源:亿速云 阅读:74 作者:Leah 利用java如何根据IP获取mac地址?针对这个问题,这篇文章详细介 ...
- JAVA获取局域网内对应IP电脑的MAC地址(物理地址)
创建类UdpGetClientMacAddr.java package com.shuzhiqiang.common;import java.io.IOException; import java.n ...
- vmware克隆centos修改linux mac地址
故障背景: 在vmware workstation中了完全克隆了一个已经存在的centos的虚拟机,启动之后发现网卡没有启动.于是重启一下network服务,发现提示错误信息"Device ...
- 获取远程网卡MAC地址
出自: http://blog.joycode.com/liuhuimiao/ 朋友mingal急问我有关获取远程网卡MAC地址的ASP.net实现.我一开始以为是获取本机MAC地址,说了几种方法给他 ...
- android mac测试地址,android获取有线网的Mac地址
Android TV开发中有的机器会接有线网,需要获取Mac地址,下面是我测试的两种Mac地址的获取方式. 1.一共两个方法,目前第二个方法获取的不准,最后一位数取的不对. private Strin ...
最新文章
- 唯一聚集索引上的唯一和非唯一非聚集索引
- Git之hotfix热修复分支
- Pycharm下载 安装 和谐 与 卸载
- 图片序列化和反序列化成图片文件(代码)
- 一段让人瑟瑟发抖的ABAP代码
- LeetCode 697. 数组的度
- Android高德地图自定义Markers的例子
- CS0656	缺少编译器要求的成员“Microsoft.CSharp..........
- 谷歌身份认证 Python实现
- 无需担心架构演变 入云的Teradata无处不在
- 2017web前端面试总结
- Edmonds-Karp算法
- 如何在Mac上使用听写进行语音到文本的键入
- UNIX/Linux RHEL6.3 root密码破解,GRUB加密(图文并茂)
- am3352 项目记录
- beego 2.0升级的巨坑,graceful错误
- DNS-域名系统 【应用层】【计算机网络】
- (个人记录)Ensight后处理EDEM学习笔记
- python 根据x的值和函数y=20+x2,计算y_new,算出y_new和y的差,记为delta_y。¶绘制x和delt_y的点图,并计算y的方差。有关方差的计算参阅数学资料。
- 配置运营商光猫做交换机拓展网络
热门文章
- 基于微信小程序的每日签到打卡
- Conflux 请你“出名”啦!
- 为什么梦幻西游服务器名字有显示但是区名字没有了,梦幻西游:三月份的第一个新区注定要变鬼,从名字就能看得出来...
- 如何把Word中艺术字转换为图片
- 白苹果了怎么办_ios13更新遭遇白苹果了怎么办?
- cakephp视图用php文件,CakePHP的视图
- 关于解决idea 输入法不跟随问题
- 英语面试对话场景[进入外企的敲门砖]
- win10修改系统配置处理器引导参数后,系统无限蓝屏解决办法
- 现代程序员 VS. 古典程序员,你属于哪一类?