上一小节介绍了 集线器 ,一种工作于物理层的简单网络设备。由于集线器采用广播的方式中继、转发物理信号,传输效率受到极大制约。

精准转发

为了解决集线器工作效率低下的尴尬,我们需要设计一种更高级的网络设备。新设备根据以太网帧的目的 MAC 地址,将它精准地转发到正确端口:

注释:这里 端口 ( port )指的是转发设备的插口,也可叫做网口。

如上图,中间节点是转发设备,它在内部维护着一张主机 MAC 地址与对应端口的映射表,现与 3 台主机相连。这样一来, 当转发设备接到主机 A 发给主机 C 的数据后,根据目的 MAC 地址搜索映射表,便可将数据准确地转发到对应的端口 3

现在,传输模式变得更有针对性了——数据帧被精准转发到正确的端口,其他端口不再收到多余的数据:

不仅如此,主机 AB 通讯的同时,其他计算机也可通讯,互不干扰。转发设备每个端口是一个独立的冲突域,带宽也是独立的。

集线器的缺陷全部避免了!

交换机

能够根据以太网帧目的地址转发数据的网络设备就是 以太网交换机 ( ethernet switch ):

交换机长相跟集线器没啥区别嘛。当然了,大部分网络设备都是一个布满端口的盒子,关键在于内部构造。

再看看现实中的交换机长啥样:

总结起来,以太网交换机属于 二层网络设备 ,特点如下:

  • 根据目的地址转发以太网帧;
  • 每个端口是独立冲突域;
  • 每个端口带宽独立;

Mac地址学习

交换机完美地解决集线器的缺点,但新问题又来了,映射表如何获得呢?

最原始的方式是:维护一张静态映射表。当新设备接入,向映射表添加一条记录;当设备移除,从映射表删除对应记录。然而,纯手工操作方式多少有些烦躁。

好在计算机领域可以实现各种花样的自动化——通过算法自动学习映射表。我们先来看看大致思路:

初始状态下,映射表是空的。现在,主机 AB 发送一个数据帧 FRAME1 。因为映射表中没有地址 B 的记录,交换机便将数据帧广播到其他所有端口。

由于交换机是从 Fa0/1 端口收到数据帧的,便知道 A 连接 Fa0/1 端口,而数据帧的源地址就是 A 的地址!此时,交换机可以将 A 的地址和端口 Fa0/1 作为一条记录加入映射表。交换机学习到 A 的地址!

接着,主机 BA 回复一个数据帧 FRAME2  。由于映射表中已经存在地址 A 的记录了,因此交换机将数据帧精准转发到端口 Fa0/1 。同理,交换机学习到主机 B 的地址。

当主机 C 开始发送数据时,交换机同样学到其地址,学习过程完成!

这就是 MAC地址自动学习 的基本原理。

小菜学网络】系列文章首发于公众号【小菜学编程】,敬请关注:

【小菜学网络】交换机与MAC地址学习的更多相关文章

  1. 【小菜学网络】MAC地址详解

    上一小节介绍了以太网帧的结构,以及帧中各个字段的作用.参与以太网通讯的实体,由以太网地址唯一标识.以太网地址也叫做 MAC 地址,我们对它仍知之甚少. 以太网地址在不同场景,称谓也不一样,常用叫法包括 ...

  2. Mininet实验 MAC地址学习

    实验目的 了解交换机的MAC地址学习过程. 了解交换机对已知单播.未知单播和广播帧的转发方式. 实验原理 MAC(media access control,介质访问控制)地址是识别LAN节点的标识.M ...

  3. 交换机的MAC地址作用

    交换机的MAC地址在交换机进行数据交换时是没有作用的,因为交换机并不对转发的数据帧进行拆包重封装. 如果只是完成数据帧交换,则可以不要MAC地址(仅指二层交换机,三层交换机完成路由功能自然每个端口得有 ...

  4. 【小菜学网络】MTU

    不同的以太网接入设备,一帧能传输的数据量是有差异的. 普通的以太网卡,一帧最多能够传输 1500 字节的数据:而某些虚拟设备,传输能力要打些折扣.此外,链路层除了以太网还有其他协议,这些协议中数据帧传 ...

  5. mac地址学习笔记

    MAC(Media Access Control或者Medium Access Control)地址, 意译为媒体访问控制,或称为物理地址.硬件地址,用来定义网络设备的位置. 在OSI模型中,第三层网 ...

  6. Mininet实验 MAC地址学习分析

    拓扑图 学习过程分析 首先交换机A和交换机B一开始的MAC地址表都是空的. 此时主机11向主机33发送一个数据帧. 数据帧会先到达交换机A,交换机A会获得主机11的MAC地址和端口号.(此时交换机A的 ...

  7. 思科交换机根据mac地址限制主机

    思科交换机可以根据客户端mac地址限制访问 查看对应IP的mac地址及vlan show arp | in 10.1.62.188 进入设置模式 configure terminal mac addr ...

  8. 交换机-查看mac地址表

    1.使用交换机命令行 en  或者  enable   进入特权模式 Switch> Switch>en Switch# Switch# 2.查看交换机中的MAC地址表 Switch#sh ...

  9. 网络知识===关于MAC地址和IP不能互相替代,缺一不可的原因

    最近在看书<图解TCP/IP>书中分别谈到了IP和MAC地址.于是我就有两个疑惑, 为什么有了IP地址,我们还要获取MAC地址? 为什么我们初始不直接使用MAC地址作为终点地址?还要那么复 ...

随机推荐

  1. # spring boot + mybatis 读取数据库

    spring boot + mybatis 读取数据库 创建数据库 use testdb; drop table if exists t_city; create table t_city( id i ...

  2. mini-web框架-WSGI-mini-web框架-web服务器集成动态请求的功能(5.1.2)

    @ 目录 1.说明 2.代码 关于作者 1.说明 WSGI是一个协议 WSGI如下图 浏览器请求动态页面的过程如下 2.代码 WSGI在python实现的关键代码如下 env是用来交互数据的 deal ...

  3. angular 8 表单带文件上传接口

    <div id="homework"> <form (ngSubmit)="doSubmit()" enctype="multipa ...

  4. 持久层之 MyBatis: 第二篇 :动态SQL And多表查询

    MyBatis入门到精通 完整CRUD UserDaoImpl 编写UserDao对应的UserDaoMapper.xml 添加UserDao的测试用例 编写UserDao的测试用例 解决数据库字段名 ...

  5. Linux系统搭建RabbitMQ

    下载erlang和rabbitmq-server 1.下载Erlang安装包 [root@VM_0_9_centos soft]# wget http://erlang.org/download/ot ...

  6. 记一次Ajax请求MVC调优

    问题描述 ASP.NETMVC项目,编辑页面赋值操作,ajax请求很慢. 对同一个控制器有2个请求 一个为获取该表的树形结构数据(绑定下拉框) 一个为获取某实体的单条记录(编辑操作) 排查过程 数据库 ...

  7. Mybatis Generator 最完整配置详解

    这是从CSDN找到的一篇翻译文章,尝试重新排版后转载. 1. < generatorConfiguration > 标签 1.1 可以用于加载配置项或者配置文件,在整个配置文件中就可以使用 ...

  8. 常见数据库的JDBC URL

    转自:http://blog.csdn.net/ring0hx/article/details/6152528 Microsoft SQL Server Microsoft SQL Server JD ...

  9. .NETCore使用EntityFrameworkCore连接数据库生成实体

    EF Core 通过数据库提供程序插件模型与 SQL Server/SQL Azure.SQLite.Azure Cosmos DB.MySQL.PostgreSQL 和更多数据库配合使用. 使用EF ...

  10. Redis 设计与实现 6:五大数据类型之列表

    列表对象有 3 种编码:ziplist.linkedlist.quicklist. ziplist 和 linkedlist 是 3.2 版本之前的编码. quicklist 是 3.2 版本新增的编 ...