【小菜学网络】交换机与MAC地址学习
上一小节介绍了 集线器 ,一种工作于物理层的简单网络设备。由于集线器采用广播的方式中继、转发物理信号,传输效率受到极大制约。
精准转发
为了解决集线器工作效率低下的尴尬,我们需要设计一种更高级的网络设备。新设备根据以太网帧的目的 MAC 地址,将它精准地转发到正确端口:

注释:这里 端口 ( port )指的是转发设备的插口,也可叫做网口。
如上图,中间节点是转发设备,它在内部维护着一张主机 MAC 地址与对应端口的映射表,现与 3 台主机相连。这样一来, 当转发设备接到主机 A 发给主机 C 的数据后,根据目的 MAC 地址搜索映射表,便可将数据准确地转发到对应的端口 3 。
现在,传输模式变得更有针对性了——数据帧被精准转发到正确的端口,其他端口不再收到多余的数据:

不仅如此,主机 A 与 B 通讯的同时,其他计算机也可通讯,互不干扰。转发设备每个端口是一个独立的冲突域,带宽也是独立的。
集线器的缺陷全部避免了!
交换机
能够根据以太网帧目的地址转发数据的网络设备就是 以太网交换机 ( ethernet switch ):

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

总结起来,以太网交换机属于 二层网络设备 ,特点如下:
- 根据目的地址转发以太网帧;
- 每个端口是独立冲突域;
- 每个端口带宽独立;
Mac地址学习
交换机完美地解决集线器的缺点,但新问题又来了,映射表如何获得呢?
最原始的方式是:维护一张静态映射表。当新设备接入,向映射表添加一条记录;当设备移除,从映射表删除对应记录。然而,纯手工操作方式多少有些烦躁。
好在计算机领域可以实现各种花样的自动化——通过算法自动学习映射表。我们先来看看大致思路:

初始状态下,映射表是空的。现在,主机 A 向 B 发送一个数据帧 FRAME1 。因为映射表中没有地址 B 的记录,交换机便将数据帧广播到其他所有端口。
由于交换机是从 Fa0/1 端口收到数据帧的,便知道 A 连接 Fa0/1 端口,而数据帧的源地址就是 A 的地址!此时,交换机可以将 A 的地址和端口 Fa0/1 作为一条记录加入映射表。交换机学习到 A 的地址!

接着,主机 B 向 A 回复一个数据帧 FRAME2 。由于映射表中已经存在地址 A 的记录了,因此交换机将数据帧精准转发到端口 Fa0/1 。同理,交换机学习到主机 B 的地址。
当主机 C 开始发送数据时,交换机同样学到其地址,学习过程完成!

这就是 MAC地址自动学习 的基本原理。
【小菜学网络】系列文章首发于公众号【小菜学编程】,敬请关注:

【小菜学网络】交换机与MAC地址学习的更多相关文章
- 【小菜学网络】MAC地址详解
上一小节介绍了以太网帧的结构,以及帧中各个字段的作用.参与以太网通讯的实体,由以太网地址唯一标识.以太网地址也叫做 MAC 地址,我们对它仍知之甚少. 以太网地址在不同场景,称谓也不一样,常用叫法包括 ...
- Mininet实验 MAC地址学习
实验目的 了解交换机的MAC地址学习过程. 了解交换机对已知单播.未知单播和广播帧的转发方式. 实验原理 MAC(media access control,介质访问控制)地址是识别LAN节点的标识.M ...
- 交换机的MAC地址作用
交换机的MAC地址在交换机进行数据交换时是没有作用的,因为交换机并不对转发的数据帧进行拆包重封装. 如果只是完成数据帧交换,则可以不要MAC地址(仅指二层交换机,三层交换机完成路由功能自然每个端口得有 ...
- 【小菜学网络】MTU
不同的以太网接入设备,一帧能传输的数据量是有差异的. 普通的以太网卡,一帧最多能够传输 1500 字节的数据:而某些虚拟设备,传输能力要打些折扣.此外,链路层除了以太网还有其他协议,这些协议中数据帧传 ...
- mac地址学习笔记
MAC(Media Access Control或者Medium Access Control)地址, 意译为媒体访问控制,或称为物理地址.硬件地址,用来定义网络设备的位置. 在OSI模型中,第三层网 ...
- Mininet实验 MAC地址学习分析
拓扑图 学习过程分析 首先交换机A和交换机B一开始的MAC地址表都是空的. 此时主机11向主机33发送一个数据帧. 数据帧会先到达交换机A,交换机A会获得主机11的MAC地址和端口号.(此时交换机A的 ...
- 思科交换机根据mac地址限制主机
思科交换机可以根据客户端mac地址限制访问 查看对应IP的mac地址及vlan show arp | in 10.1.62.188 进入设置模式 configure terminal mac addr ...
- 交换机-查看mac地址表
1.使用交换机命令行 en 或者 enable 进入特权模式 Switch> Switch>en Switch# Switch# 2.查看交换机中的MAC地址表 Switch#sh ...
- 网络知识===关于MAC地址和IP不能互相替代,缺一不可的原因
最近在看书<图解TCP/IP>书中分别谈到了IP和MAC地址.于是我就有两个疑惑, 为什么有了IP地址,我们还要获取MAC地址? 为什么我们初始不直接使用MAC地址作为终点地址?还要那么复 ...
随机推荐
- pytorch和tensorflow的爱恨情仇之一元线性回归例子(keras插足啦)
直接看代码: 一.tensorflow #tensorflow import tensorflow as tf import random import numpy as np x_data = np ...
- day109:MoFang:好友列表显示&添加好友页面初始化&添加好友后端接口
目录 1.好友列表 2.添加好友-前端 3.服务端提供添加好友的后端接口 1.好友列表 1.在用户中心页面添加好友列表点击入口 html/user.html,用户中心添加好友列表点击入口,代码: &l ...
- webpack入门级 - 从0开始搭建单页项目配置
前言 webpack 作为前端最知名的打包工具,能够把散落的模块打包成一个完整的应用,大多数的知名框架 cli 都是基于 webpack 来编写.这些 cli 为使用者预设好各种处理配置,使用多了就会 ...
- matlab多项式拟合以及指定函数拟合
clc;clear all;close all;%% 多项式拟合指令:% X = [1 2 3 4 5 6 7 8 9 ];% Y = [9 7 6 3 -1 2 5 7 20]; % P= poly ...
- ES6语法:class类,从了解到使用
前期提要: JavaScript 语言中,在使用类之前,生成实例对象的传统方法是通过使用构造函数. 一.构造函数: 定义:通过 new 函数名 来实例化对象的函数叫构造函数. 主要功能:为初 ...
- JAVA基础之接口
接口 学习完框架之后,整合SSM过程中对于接口的认识加深了许多.根据<java核心技术>这本书进一步研究了一下. 1.概念 java核心技术是这样说的:"在Java程序设计中,接 ...
- 多线程写法,消除同步bug
public class Demo01 implements Runnable { private int ticket = 10; @Override public void run() { for ...
- 事务的概念,以及事务在JDBC编程中处理事务的步骤
事务是作为单个逻辑工作单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为原子性.一致性.隔离性和持久性 (ACID) 属性,只有这样才能成为一个事务 .JDBC处理事务有如下操作: 1,con ...
- Docker下配置KeepAlive支持nginx高可用
案例子任务一.安装配置keepalived 步骤1:使用nginx镜像生成nginx-keep镜像 1) 启动nginx容器并进入 docker run -d --privileged nginx / ...
- Mysql 实战关于date,datetime,timestamp类型使用
最近在做一个项目 项目中 不同的小伙伴同时在不同的业务模块中用到了date,datetime,timestamp这三个类型 特别是datetime,timestamp这两个 如果不能理解到位 其实很 ...