目录

MAC 地址

每个网卡或三层网口都有一个 MAC 地址, MAC 地址是烧录到硬件上,因此也称为硬件地址。MAC 地址作为数据链路设备的地址标识符,需要保证网络中的每个 MAC 地址都是唯一的,才能正确识别到数据链路上的设备。

MAC 地址由 6 个字节组成。前 3 个字节表示厂商识别码,每个网卡厂商都有特定唯一的识别数字。后 3 个字节由厂商给每个网卡进行分配。厂商可以保证生产出来的网卡不会有相同 MAC 地址的网卡。

MAC地址

现在可以通过软件修改 MAC 地址,虚拟机使用物理机网卡的 MAC 地址,并不能保证 MAC 地址是唯一的。但是只要 MAC 地址相同的设备不在同一个数据链路上就没问题。

为了查看方便, 6 个字节的 MAC 地址使用十六进制来表示。每个字节的 8 位二进制数分别用 2 个十六进制数来表示,例如我的网卡 MAC 地址是 E0-06-E6-39-86-31

什么是字节?什么是比特?

比特,英文名 bit ,也叫。二进制中最小单位,一个比特的值要么是 0 要么是 1 。

字节,英文名 Byte 。一个字节由八个比特构成。

MAC 地址怎么使用?

最常用的以太网和无线局域网,都是使用 MAC 地址作为地址标识符进行通信的。

以太网

有线局域网中普遍使用以太网,以太网标准简单,传输速率高。常见的网络拓扑结构如下图。

以太网

什么是网络拓扑?

网络的连接和构成的形态称为网络拓扑。它不仅可以直观的看到网络物理连接方式,还可以表示网络的逻辑结构。

以太网数据格式

当今最常用的以太网协议标准是 ETHERNET II 标准。ETHERNET II 标准定义的数据帧格式如下图。

以太网帧格式
  • 前导码( Preamble )

前导码由 7 个字节组成,每个字节固定为 10101010 。之后的 1 个字节称为帧起始定界符,这个字节固定为 10101011 。这 8 个字节表示以太网帧的开始,也是对端网卡能够确保与其同步的标志。帧起始定界符的最后两位比特被定义为 11 ,之后就是以太网数据帧的本体。

前导码
  • 目的地址( Destination Address )

    目的地址由 6 个字节组成,用来标识数据帧的目的设备,类似于快递的收件人地址。

  • 源地址( Source Address )

    源地址由 6 个字节组成,用来标识数据帧的始发设备,类似于快递的发件人地址。

  • 类型( Type )

    类型字段由 2 个字节组成。类型字段是表明上一层(即网络层)的协议类型,可以让接收方使用相同的协议进行数据帧的解封装。

  • 数据( Data )

    帧头后就是数据。一个数据帧所能容纳的最大数据范围是 46 ~ 1500 个字节。如果数据部分不足 46 个字节,则填充这个数据帧,让它的长度可以满足最小长度的要求。

  • FCS( Frame Check Sequence )

    FCS 由 4 个字节组成,位于数据帧的尾部,用来检查帧是否有所损坏。通过检查 FCS 字段的值将受到噪声干扰的错误帧丢弃。

最小的数据帧是多少字节?

数据帧的各字段加起来一共是 64 字节,其中数据是 46 字节。再加上前导码就是 72 字节。因此最小的数据帧是 72 字节。在传输过程中,每个数据帧还有 12 字节的数据帧间隙,所以最小的可传输数据帧长度是 84 字节,即 672 比特。

交换机二层转发原理

交换机有多个网络端口,它通过识别数据帧的目标 MAC 地址,根据 MAC 地址表决定从哪个端口发送数据。MAC 地址表不需要在交换机上手工设置,而是可以自动生成的。

交换机二层转发

交换机是如何添加、更新、删除 MAC 地址表条目的?

在初始状态下,交换机的 MAC 地址表是空的,不包含任何条目。当交换机的某个端口接收到一个数据帧时,它就会将这个数据帧的源 MAC 地址、接收数据帧的端口号作为一个条目保存在自己的 MAC 地址表中,同时在接收到这个数据帧时重置这个条目的老化计时器时间。这就是交换机自动添加 MAC 地址表条目的方式。

自动添加MAC地址表条目

在新增这一条 MAC 地址条目后,如果交换机再次从同一个端口收到相同 MAC 地址为源 MAC 地址的数据帧时,交换机就会更新这个条目的老化计时器,确保活跃的的条目不会老化。但是如果在老化时间内都没收到匹配这个条目的数据帧,交换机就会将这个老化的条目从自己的 MAC 地址表中删除

老化条目被删除

还可以手动在交换机的 MAC 地址表中添加静态条目。静态添加的 MAC 地址条目优先动态学习的条目进行转发,而且静态条目没有老化时间,会一直保存在交换机的 MAC 地址表中。

如何使用 MAC 地址表条目进行转发?

当交换机的某个端口收到一个单播数据帧时,它会查看这个数据帧的二层头部信息,并进行两个操作。一个操作是根据源 MAC 地址和端口信息添加或更新 MAC 地址表。另一个操作是查看数据帧的目的 MAC 地址,并根据数据帧的目的 MAC 地址查找自己的 MAC 地址表。在查找 MAC 地址表后,交换机会根据查找结果对数据帧进行处理,这里有 3 中情况:

  1. 交换机没有在 MAC 地址表中找到这个数据帧的目的 MAC 地址,因此交换机不知道自己的端口是否有连接这个 MAC 地址的设备。于是,交换机将这个数据帧从除了接收端口之外的所有端口泛洪出去。

泛洪
  1. 交换机的 MAC 地址表中有这个数据帧的目的 MAC 地址,且对应端口不是接收到这个数据帧的端口,交换机知道目的设备连接在哪个端口上,因此交换机会根据 MAC 地址表中的条目将数据帧从对应端口单播转发出去,而其它与交换机相连的设备则不会收到这个数据帧。

转发
  1. 交换机的 MAC 地址表中有这个数据帧的目的 MAC 地址,且对应端口就是接收到这个数据帧的端口。这种情况下,交换机会认为数据帧的目的地址就在这个端口所连接的范围内,因此目的设备应该已经收到数据帧。这个数据帧与其它端口的设备无关,不会将数据帧从其它端口转发出去。于是,交换机会丢弃数据帧。

丢弃

单播:主机一对一的发送数据。单播地址是主机的 MAC 地址。
广播:向局域网内所有设备发送数据。只有全 1 的 MAC 地址为广播 MAC 地址,即 FF-FF-FF-FF-FF-FF 。
泛洪:将某个端口收到的数据从除该端口之外的所有端口发送出去。泛洪操作广播的是普通数据帧而不是广播帧。

单播

广播

VLAN

广播域是广播帧可以到达的区域。换句话说,由多个交换机和主机组成的网络就是一个广播域。

网络规模越大,广播域就越大,泛洪流量也越来越大,降低通信效率。在一个广播域内的任意两台主机之间可以任意通信,通信数据有被窃取的风险。

泛洪攻击

为了解决广播域扩大带来的性能问题和安全性降低问题, VLAN 技术应运而生。VLAN 技术能够在逻辑上把一个物理局域网分隔为多个广播域,每个广播域称为一个虚拟局域网(即 VLAN )。每台主机只能属于一个 VLAN ,同属一个 VLAN 的主机通过二层直接通信,属于不同 VLAN 的主机只能通过 IP 路由功能才能实现通信。通过划分多个 VLAN ,从而减小广播域传播的范围,过滤多余的包,提高网络的传输效率,同时提高了网络的安全性。

VLAN

VLAN 原理

VLAN 技术通过给数据帧插入 VLAN 标签(又叫 VLAN TAG)的方式,让交换机能够分辨出各个数据帧所属的 VLAN 。

VLAN 标签是用来区分数据帧所属 VLAN 的,是 4 个字节长度的字段,插入到以太网帧头部上。VLAN 标签会插入到源 MAC 地址后面, IEEE 802.1Q 标准有这个格式定义和字段构成说明。

VLAN TAG
  • TPID (标签协议标识符):
    长度 2 个字节,值为 0x8100 ,用来表示这个数据帧携带了 802.1Q 标签。不支持 802.1Q 标准的设备收到这类数据帧,会把它丢弃。

  • TCI (标签控制信息):
    长度 2 个字节,又分为三个子字段,用来表示数据帧的控制信息:

  • 优先级( Priority ):长度为 3 比特,取值范围 0 ~ 7 ,用来表示数据帧的优先级。取值越大,优先级越高。当交换机发送拥塞是,优先转发优先级高的数据帧。

  • CFI (规范格式指示器):长度为 1 比特,取值非 0 即 1 。

  • VLAN ID ( VLAN 标识符):长度为 12 比特,用来表示 VLAN 标签的数值。取值范围是 1 ~ 4094 。

划分 VLAN 后,交换机如何处理广播报文?

交换机上划分了多个 VLAN 时,在交换机接收到广播数据帧时,只会将这个数据帧在相同 VLAN 的端口进行广播

广播帧在相同VLAN内广播

划分 VLAN 后,交换机如何处理目的 MAC 地址不在 MAC 地址表中的单播数据帧?

交换机上划分了多个 VLAN 时,当交换机接收到一个目的 MAC 地址不存在于自己 MAC 地址表中的单播数据帧时,只会将这个数据帧在相同 VLAN 的端口进行泛洪

单播帧在相同VLAN内泛洪

划分 VLAN 后,不同 VLAN 的主机能否通信?

划分多 VLAN 的环境中,即使交换机 MAC 地址表里保存了某个数据帧的目的 MAC 地址条目,若这个目的 MAC 地址所对应的端口与数据帧的入端口在不同的 VLAN 中,交换机也不会通过 MAC 地址表中的端口发送数据帧。

不同VLAN的主机不能通信

小结:在不使用路由转发的前提下,交换机不会从一个 VLAN 的端口中接收到的数据帧,转发给其它 VLAN 的端口。

怎么区分不同的 VLAN ?

通过 VLAN ID 进行区分,例如 VLAN 10 和 VLAN 20 就是不同的 VLAN 。

VLAN 技术有哪些好处?

  • 增加了广播域的数量,减小了每个广播域的规模,也减少了每个广播域中终端设备的数量;

  • 增强了网络安全性,保障网络安全的方法增加了;

  • 提高了网络设计的逻辑性,可以规避地理、物理等因素对于网络设计的限制。

划分 VLAN

我们可以使用不同的方法,把交换机上的每个端口划分到某个 VLAN 中,以此在逻辑上分隔广播域。

交换机通常会使用基于端口划分 VLAN 的方法。在交换机上手动配置,绑定交换机端口和 VLAN ID 的关系。

优点:配置简单。想要把某个端口划分到某个 VLAN 中,只需要把端口的 PVID (端口 VLAN ID )配置到相应的 VLAN ID 即可。

缺点:当终端设备移动位置是,可能需要为终端设备连接的新端口重新划分 VLAN 。

除了这种方法外,还可以使用基于 MAC 地址划分 VLAN 、基于 IP 地址划分 VLAN 、基于协议划分 VLAN 、基于策略划分 VLAN 等方法来划分 VLAN。

PVID :接口默认 VLAN ID ,是交换机端口配置的参数,默认值是 1 。

跨交换机 VLAN 原理

终端设备不会生成带 VLAN 标签的数据帧,它们发出的数据帧叫做无标记帧( Untagged )。它们连接的交换机会给无标记帧打上 VLAN 标签。交换机通过每个端口的 PVID ,判断从这个接口收到的无标记帧属于哪个 VLAN ,并在转发时,插入相应的 VLAN 标签,从而将无标记帧变为标记帧( Tagged )。

当两台交换机通过端口连接时,收到的数据帧是标记帧还是无标记帧?交换机端口会如何处理呢?

跨交换机的VLAN

交换机根据连接的设备类型,判断各个接口收到的数据帧是否打标,来配置交换机接口的类型。

  • 如果交换机接口收到无标记帧,由交换机根据这个接口所在 VLAN 为数据帧打上 VLAN 标签;同时接口发送数据帧时,也不携带 VLAN 标签。应该把这类接口配置为 Access (接入)接口, Access 接口连接的链路称为 Access 链路。

  • 如果交换机接口收到多个 VLAN 的流量,也就是收到了标记帧;同时为了让对端设备能够区分不同 VLAN 的流量,通过接口发出的流量会打上 VLAN 标签。应该把这类接口配置为 Trunk (干道)接口,相应的链路称为 Trunk 链路。

跨交换机发送数据

跨交换机VLAN实例

主机 A 以主机 F 的 MAC 地址作为目的 MAC 地址封装了一个数据帧,从网卡发送出去。

交换机 A 在 Access 接口收到数据帧。查询 MAC 地址表,发现数据帧的目的地址是与交换机 B 相连的 Trunk 接口。于是交换机给数据帧打上 Access 接口的 PVID 配置,即给数据帧打上 VLAN 10 的标签,并从 Trunk 接口转发给交换机 B 。

交换机 B 在 trunk 接口收到数据帧。查看 MAC 地址表,发现是 VLAN 10 的数据帧,目的地址设备是连接在 VLAN 10 的一个 Access 接口上。于是去掉数据帧的 VLAN 标签,并从这个 Access 接口转发给主机 F 。

模拟实验

Access 接口和 Trunk 接口的配置

实验拓扑图

Access接口和Trunk接口配置的拓扑图

实验要求

  • 将 SW 1 (即交换机 1)和 SW 2 (即交换机 2)相连的接口配置为 Trunk 接口,允许传输 VLAN 5 的数据;

  • 将 PC (即主机) 与 SW 相连接口配置为 Access 接口,接口的 PVID 配置为 VLAN 5 。

实验步骤

  1. SW 1 上的配置如下:

SW1配置
  1. 检查 SW 1 的接口配置,使用命令 display vlan 查看接口 VLAN 情况。

检查VLAN配置

Hybrid 接口的配置

三种接口类型特点:

  • Access 接口:这种接口只能属于一个 VLAN,只能接收和发送一个 VLAN 的数据。通常用于连接终端设备,比如主机或服务器等。

  • Trunk 接口:这种接口能够接收和发送多个 VLAN 的数据,通常用于连接交换机。

  • Hybrid 接口:这种接口能够接收和发送多个 VLAN 的数据,可用于交换机的链路,也可用于终端设备。与 Trunk 接口的区别是,发送数据时 Trunk 接口只会摘掉 PVID 标签,而 Hybrid 接口能够不携带 VLAN 标签发送多个 VLAN 数据。

实验拓扑图

Hybrid接口配置的拓扑图

实验要求

  • 新建 3 个 VLAN ,PC 1 属于 VLAN 2 ,PC 2 属于 VLAN 3 ,Server 1 (即服务器 1)属于 VLAN 10 ;

  • 通过 Hybrid 接口实现 VLAN 2 和 VLAN 3 不能互通,但 VLAN 2 和 VLAN 3 都能与 VLAN 10 进行通信。

实验步骤

  1. SW 1 的 E0/0/2 接口,只允许通过 VLAN 2 , PC 1 又需要访问 VLAN 10 ,但是无法识别 VLAN 标签信息,因此配置 Hybrid 的 PVID 为 VLAN 2 ,同时放通 VLAN 2 和 VLAN 10 。E0/0/3 接口配置同理。E0/0/1 接口需要放通 VLAN 2 、 VLAN 3 和 VLAN 10 的流量,对端交换机又需要识别 VLAN 标签,因此以带 VLAN 标签的形式放通 VLAN 2 、 VLAN 3 和 VLAN 10 的流量。SW 1 上的配置如下:

SW1配置
  1. SW 2 的 E0/0/1 接口配置和 SW 1 的 E0/0/1 接口同理。SW 2 的 E0/0/10 接口,只允许通过 VLAN 10 , Server 1 又需要放通 VLAN 2 和 VLAN 3 的流量,因此配置 Hybrid 的 PVID 为 VLAN 10 ,同时放通 VLAN 2 、 VLAN 3 和 VLAN 10 。SW2 上的配置如下:

SW2配置
  1. 检查 VLAN 10 信息,分别在 SW 1 和 SW 2 上使用命令 display vlan 10 查看配置是否正确。

查看SW1的VLAN 10信息

查看SW2的VLAN 10信息

结尾

Access 接口接收数据帧处理过程

Access接口接收数据帧流程图

Access 接口发送数据帧处理过程

Access接口发送数据帧流程图

Trunk 接口接收数据帧处理过程

Trunk接口接收数据帧流程图

Trunk 接口发送数据帧处理过程

Trunk接口发送数据帧流程图

参考资料:

图解TCP/IP - 竹下隆史

网络基础 - 田果

路由与交换技术 - 刘丹宁

点击下方阅读原文加入社区会员

一文掌握MAC地址、以太网、二层转发、VLAN相关推荐

  1. 交换机MAC地址学习和转发数据帧的原理

    1 :交换机 MAC 地址学习   在交换机初始化的,也就是刚启动的时候,交换机的MAC地址表是没有任何MAC地址和端口的映射条目的   当PCA要想和PCC,PCB,PCD进行通信时,当该二层数据帧 ...

  2. 【计算机网络】数据链路层 : 以太网 ( 无连接、不可靠服务 | 以太网发展 | 10BASE-T 以太网 | MAC 地址 | 以太网 MAC 帧 | 高速以太网 )

    文章目录 一. 以太网 ( Ethernet ) 概述 二. 以太网 ( Ethernet ) 服务 三. 以太网 ( Ethernet ) 发展 四. 10BASE-T 以太网 五. 适配器 与 M ...

  3. TCP/IP协议专栏——MAC地址详解——网络入门和工程维护必看

    以太帧格式 前导同步符:共8字节,由7个字节的前同步信号和一个分界符开始字节构成. DA/SA:共6个字节,前3个字节代表供应商代码,后3个字节代表厂商序列号. TPID:标记协议标识符,2个字节,值 ...

  4. 以太网交换机MAC地址表格式 IVL和SVL

    网上有很多说到关于IVL和SVL的东西,说得很好,但是对于一点基础都没有的人估计不能看得很明白.我这里从交换机收到packet开始讲两种情况交换机的行为. IVL(independentvlan le ...

  5. cisco 2960 VLAN MAC_华为网络初级工程师快速掌握基于MAC地址的VLAN划分实用收藏

    点上方蓝字关注公众号 学网络,就在IE-LAB 国内最著名的高端网络工程师培养基地 HCIA DATCOM基础入门技术基于MAC地址的VLAN划分 基于mac 地址VLAN划分方式,是一种动态的VLA ...

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

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

  7. 2022-09-07 网工进阶(三十)以太网交换安全-端口隔离、MAC地址表安全、端口安全、MAC地址漂移防止与检测、链路层安全、流量抑制、风暴控制、IPSG(IP Source Guard)

    概述 目前网络中以太网技术的应用非常广泛.然而,各种网络攻击的存在,不仅造成了网络合法用户无法正常访问网络资源,而且对网络信息安全构成严重威胁,因此以太网交换的安全性越来越重要. 端口隔离 大型网络中 ...

  8. 二层交换与MAC地址

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

  9. 华为数通笔记-MAC地址

    MAC简介 MAC基本概念 MAC(Media Access Control)地址用来定义网络设备的位置.MAC地址由48比特长.12位的16进制数字组成,其中从左到右开始,0到23bit是厂商向IE ...

最新文章

  1. python并发编程之多进程理论部分
  2. MySQL主从复制延迟的监测及缓解
  3. C++ 模板详解(二)
  4. 01-MPLS产生的背景/以及和其他技术比较的优势
  5. 回归、插值、逼近、拟合的区别
  6. git bash here创建项目无法选择m_版本控制Git基础及使用详解
  7. 分布式架构网络通信——netty
  8. 高校就业管理系统数据库设计
  9. hdfs高可用与高拓展机制分析
  10. 我用 10 张脑图,征服了一系列大厂面试官。
  11. 市场的霸主:对冲基金世界的超额回报大师
  12. matlab强制转换向量或矩阵为行向量,列向量
  13. ZK可视化神器prettyZoo玩耍
  14. linux 设备文件动态,使用 udev 高效、动态地管理 Linux 设备文件
  15. java引入包_java如何导入包
  16. pc端和移动端px和rem的转换
  17. 呼叫中心服务器怎么选,如何挑选呼叫中心系统
  18. php中继承过来的类初始化顺序,java_图文详解Java中class的初始化顺序,class的装载 在讲class的初始化 - phpStudy...
  19. Java API操作MongoDB
  20. 超级兔子虚拟磁盘加速器_《使命召唤:战区》内存不足很卡的解决办法(虚拟内存篇)...

热门文章

  1. Promise用法及理解
  2. 100内加减法自动生成器
  3. 第五篇——胡咧咧之动漫素材分类如何妙用?
  4. PCIe锁定事务(Locked Transactions)介绍
  5. TypeError: expected str, bytes or os.PathLike object, not int(解决方法)
  6. Flutter+FishRedux高仿网易云音乐
  7. 魅族16s是Android几,魅族16S,距离完美只差“一点点”
  8. 老人意外保险怎么买?除了意外险还有哪些老人保险值得买?
  9. 什么是可视化开发平台?拥有什么优势?
  10. FPGA实现LCD显示屏显示彩条