当前位置: 首页 > news >正文

【数通网络交换基础梳理1】二层交换机、以太网帧、MAC地址数据帧转发原理详解

一、网络模型

万年不变,先从模型结构分析,现在大家熟知的网络模型有两种。第一种是,OSI七层模型,第二种是TCP/IP模型。在实际运用中,参考更多的是TCP/IP模型。

OSI七层模型
在这里插入图片描述

TCP/IP模型在这里插入图片描述

不需要全部理解,只需要明白两点:1、数据包发送数据的过程是从上到下打包,接收数据是从下至上拆包。2、在二层数据链路层我们的数据已经被层层封装为以太网帧结构。现在有了下一个问题,以太网帧结构是什么?

二、以太网帧结构

在这里插入图片描述
在这里插入图片描述
以太网帧结构里有:DMAC、SMAC、Type、用户数据、FSC帧校验序列,我们挨个解释一下:

DMAC:目的MAC地址,被访问的MAC地址;
SMAC:源MAC地址,发起方的MAC地址;
Type:在数据中有一个type字段,是为了让交换机收到一个帧,拆开帧头,不用再进一步拆包就知道packet中类型,比如:
1、type=0X0800 代表的就是包内容是ipv4;
2、type=0X86DD 代表的就是IPv6;
3、type=0X0806 代表的就是ARP包;
4、type=0X8847 代表的就是MPLS unicast;
5、type=0X8848 代表的就是MPLS multicast;
用户数据:数据内容;
FSC帧校验序列:让接收帧的网卡或者网口判断是否有错误;

这里主要了解一下以太网帧头中有源MAC地址和目的MAC地址。

三、MAC地址

MAC地址(Media Access Control Address)也称为硬件地址或物理地址(Physical Address),它是一个用来确认网络设备位置的位址。在OSI模型中,第二层数据链路层则负责MAC位址 。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。

四、数据链路层>二层交换机

二层交换机能够基于数据链路层的 MAC 地址,进行数据帧或 VLAN 的传输功能。二层交换机内置MAC地址表,为二层设备提供了唯一的地址,用于标识数据下发的终端设备和节点。

优点:数据交换是靠硬件来实现的,其非常快速且有效地将数据从源端传输到目标端。

简单的说,MAC地址表是交换机等网络设备记录MAC地址和设备端口的映射关系,代表了交换机从哪个端口学习到了某个MAC地址,后续交换机需要转发数据的时候就可以根据报文中目的MAC地址去 对照设备中的MAC地址表进行数据转发。如果MAC地址表中已经存在该MAC地址表项,设备将通过重置该表项的老化时间,对该表项进行更新。
在这里插入图片描述

五、二层交换机MAC地址学习

实例解析:

在这里插入图片描述

主机 PC1向主机 PC2 发送数据,PC1不知道PC2的MAC地址,PC1就像所有端口发说ARP广播请求包说:谁告诉我IP地址为192.168.1.4的MAC地址是多少?

PC1发送时,交换机把PC1的端口0/0/1、 MAC地址更新记录到MAC地址表中。但是此时交换机不知道目的 PC2MAC地址在哪个端口,于是将数据帧进行ARP广播包请求泛洪,即转发到除端口 1 之外的所有端口。

PC3收到数据帧发现目的IP地址不是自己,将丢弃数据帧。PC2收到数据帧发现是源IP是自己请求自己的MAC地址,于是发送应答数据帧,交换机端口 0/0/2 收到数据帧,记录PC2 对应的端口、 MAC
地址表项。

于是交换机知道了主机PC1 和主机 PC2 的 端口、MAC 地址信息,之后会根据 MAC 地址表进行转发。

上面的描述看不懂的话这里我们可以抓包看一下:
设置PC1访问PC2,抓包抓取交换机G0/0/1端口流量,抓包设置显示1.4的IP流量信息:
在这里插入图片描述
PC1开始ping 192.168.1.4,抓包内容显示如下:
在这里插入图片描述

打开一个广播包,内容为:
交换机ARP广播包问谁是192.168.1.4,告诉192.168.1.2,数据包里有发送的MAC地址和IP、目标的IP地址、MAC地址为广播因为不知道是交换机向所有端口问。
在这里插入图片描述
ARP回包:
包含源为192.168.1.4和MAC地址、以及回应给请求的目标192.168.1.2和MAC地址信息。

在这里插入图片描述

1、同一个MAC可以在同一台交换机的不同接口上出现吗 ?
不能。因为这样的交换机就不知道如何转发了

2、同一个MAC地址可以在不同交换机上的接口出现吗?
可以。

3、不同MAC地址可以在同一台交换机的相同接口出现吗?
可以。

4、既然通过ARP广播包发送请求是不是二层交换机也有ARP表?
没有,二层交换机有且只有一个关系表:MAC地址表
在这里插入图片描述

大白话翻译:

二层交换机只工作在二层数据链路层,所以咱们ping 192.168.1.4的时候二层交换机理解不了这个是什么意思,因为IP地址是三层网络层协议。而二层交换机通讯主要依靠ARP广播包识别各自交换机端口所接设备的MAC地址更新维护MAC地址表,又因数据最终转换成比特流通过物理介质发送出去,所以他要做一个转换就是从上往下打包发送(应用-传输-网络-数据链路),每上一层的信息逐步打包好了添加到下一层中,此时再来理解这一张图可能会稍微清晰一点。
在这里插入图片描述

六、ARP广播

ARP 协议的全称是 Address Resolution Protocol(地址解析协议),它是一个通过用于实现从 IP 地址到 MAC 地址的映射,即询问目标 IP 对应的 MAC 地址 的一种协议。ARP 协议在 IPv4 中极其重要。

以五中实验为例:

在PC1给PC1的发送数据的时候,是以数据帧的形式发送的,数据帧被网卡解析成电信号或者光信号传递到对端。数据帧里太网帧头由源MAC地址和目的MAC地址组成的,如果发送者只知道目的主机的IP地址,不知道目的主机的MAC地址,就不能把这个数据包转化成数据帧发走。而ARP 协议就是负责地址解析的,使用目的主机IP地址来解析对方的MAC地址。

七、不通网段如何通讯?

同网段可以依靠二层交换机通讯,当网络中存在多个网段192.168.1.1/24 172.16.1.1/24 173.73.1.1/24情况下交换机该如何互相通讯?请关注下一章
在这里插入图片描述

知识扩展:

冲突与冲突域

1、交换机每一个端口都是一个独立的冲突域,因此在其独立的冲突域中是不会发生任何通讯冲突的。
2、交换机通过分割冲突域来避免冲突的发生,同时提高传输效率。

冲突域与广播域

1、交换机每一个端口都是一个独立的冲突域,但交换机默认情况下,所有端口都工作在同一个广播域中。
2、所有端口都处于同一个广播域将会造成较大的安全隐患,因此交换机可通过额外的配置来分割广播域,该配置称之为VLAN【Virtual Local Area Network | 虚拟局域网】。

相关文章:

【数通网络交换基础梳理1】二层交换机、以太网帧、MAC地址数据帧转发原理详解

一、网络模型 万年不变,先从模型结构分析,现在大家熟知的网络模型有两种。第一种是,OSI七层模型,第二种是TCP/IP模型。在实际运用中,参考更多的是TCP/IP模型。 OSI七层模型 TCP/IP模型 不需要全部理解,…...

《分布式技术原理与算法解析》学习笔记Day22

哈希与一致性哈希 在分布式系统中,哈希和一致性哈希是数据索引或者数据分布的常见实现方式。 数据分布设计原则 在分布式数据存储系统中,做存储方案选型时,一般会考虑以下因素: 数据均匀数据稳定节点异构性隔离故障域性能稳定…...

[MySQL]MySQL数据类型

文章目录数据类型分类数值类型tinyint类型bit类型float类型decimal类型字符串类型char类型varchar类型char和varchar对比日期和时间类型enum和set类型数据类型分类 MySQL中,支持各种各样的类型,比如表示数值的整型浮点型,文本、二进制类型、…...

利用steam搬砖信息差赚钱,单账号200+,小白也能轻松上手!

现在很多人在做互联网而且也赚到钱了,但还是有很多人赚不到钱,这是为什么? 这里我不得不说一个词叫做赛道,也就是选择,选择大于努力,项目本身大于一切,90%的人都觉得直播带货赚钱,但…...

树与二叉树与森林的相关性质

文章目录树的度树的性质二叉树的性质二叉树与森林树的度 树的度指的是树内所有节点的度数的最大值。 节点的度:节点所拥有的子树的数量。简单来说,我们直接数分支即可,例如下图: 在这颗二叉树中,节点2的度为2&#…...

MySQL面试题

文章目录MySQL索引Mysql索引分类InnDB索引与MyISAM索引实现有什么区别一个表中如果没有创建索引,那么还会创建B树么?B树原理B树怎么来的B树 叶子节点和非叶子节点B树能存储多少数据?MySQL索引 Mysql索引分类 mysql 索引分为三类&#xff1a…...

【蓝桥OJ—C语言】高斯日记、马虎的算式、第39级台阶

文章目录高斯日记马虎的算式第39级台阶总结高斯日记 题目: 大数学家高斯有个好习惯:无论如何都要记日记。 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210。 后来人们知道&am…...

基于深度学习的三维重建网络PatchMatchNet(二):dtu数据集介绍及PatchMatchNet中加载数据部分代码解析

目录 1.dtu数据集介绍 2. PatchMatchNet中数据加载模块详解(dtu_yao_eval.py) 1.dtu数据集介绍 dtu数据集下载地址:dtu...

一文3000字从0到1实现基于requests框架接口自动化测试项目实战(建议收藏)

requests库是一个常用的用于http请求的模块,它使用python语言编写,在当下python系列的接口自动化中应用广泛,本文将带领大家深入学习这个库 Python环境的安装就不在这里赘述了,我们直接开干。 01、requests的安装 windows下执行…...

【RockerMQ】001-RockerMQ 概述

【RockerMQ】001-RockerMQ 概述 文章目录【RockerMQ】001-RockerMQ 概述一、MQ 概述1、MQ 简介2、MQ 用途限流削峰异步解耦数据收集3、常见 MQ 产品概述对比4、MQ 常见协议二、RocketMQ 概述1、简介2、发展历史一、MQ 概述 1、MQ 简介 MQ,Message Queue&#xff0…...

阿里是如何做Code Review的?

作为卓越工程文化的一部分,Code Review其实一直在进行中,只是各团队根据自身情况张驰有度,松紧可能也不一,这里简单梳理一下CR的方法和团队实践。 一、为什么要CR 提前发现缺陷 在CodeReview阶段发现的逻辑错误、业务理解偏差、性…...

内核调试:一次多线程调试与KASAN检测实例

内核调试:一次多线程调试与KASAN检测实例1. 环境说明2. 问题描述3. 问题排查与定位3.1 线程并发问题(减少线程数)3.2 轻量地跟踪对象的分配与释放3.3 检查空指针与潜在修改者3.4 KASAN检查4. 总结博主最近遇到一个非常顽固的多线程BUG&#x…...

Java - 数据结构,队列

一、什么是队列 普通队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(FirstIn First Out) 入队列:进行插入操作的一端称为队尾(Tail/Rear) 出队列&#xf…...

ccc-pytorch-感知机算法(3)

文章目录单一输出感知机多输出感知机MLP反向传播单一输出感知机 内容解释: w001w^1_{00}w001​:输入标号1连接标号0(第一层)x00x_0^0x00​:第0层的标号为0的值O11O_1^1O11​:第一层的标号为0的输出值t:真实…...

LeetCode 225.用队列实现栈

请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() …...

【面试】spring控制反转IOC

目录一.说明二.ioc的概念和作用三.优点四.实现机制五.IOC和DI的区别六.设计原则一.说明 1.ioc的概念2.ioc的作用3.ioc的优点4.ioc的实现机制 二.ioc的概念和作用 1.全称Inversion of Control2.控制:创建对象的控制权3.反转:以前对象是程序员主动去new…...

Spring 事务管理详解及使用

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...

LeetCode 232.用栈实现队列

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元…...

go面向对象思想封装继承多态

go貌似都没有听说过继承,当然这个继承不像c中通过class类的方式去继承,还是通过struct的方式,所以go严格来说不是面向对象编程的语言,c和java才是,不过还是可以基于自身的一些的特性实现面向对象的功能,面向…...

【网络原理9】HTTP响应篇

在前两篇文章当中,已经分别介绍了HTTP是什么,以及常见的请求头当中的属性。【网络原理7】认识HTTP_革凡成圣211的博客-CSDN博客HTTP抓包,Fiddler的使用https://blog.csdn.net/weixin_56738054/article/details/129148515?spm1001.2014.3001.…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...