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

news2024/11/6 9:52:11

一、网络模型

万年不变,先从模型结构分析,现在大家熟知的网络模型有两种。第一种是,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地址。

七、VLAN

上面有提到二层交换机通过使用 VLAN 分隔广播域,位于同一个 VLAN 下的终端才能进行数据帧交互。何为VLAN?VLAN全称“Virtual LAN”,中文意思为“虚拟局域网”,是对连接到的第二层交换机端口的网络用户的逻辑分段,不受网络用户的物理位置限制而根据用户需求进行网络分段。VLAN可以根据网络用户的位置、作用、部门或者根据网络用户所使用的应用程序和协议来进行分组。基于交换机的虚拟局域网能够为局域网解决冲突域、广播域、带宽问题。

扩展:为什么要用VLAN?

一台二层交换机PC1发送广播包询问所有端口谁是PC2的时候设备资源使用是巨大的,如果一个网络中有上百台设备那很难想象会耗费多大资源。所以用VLAN隔离广播域,降低不必要的设备资源损耗。
在这里插入图片描述

二层交换机通过使用 VLAN 分隔广播域,位于同一个 VLAN 下的终端才能进行数据帧交互。对于不同 VLAN 的终端有通信需求时,就必须使用路由功能,也就是需要额外添加路由器。
在这里插入图片描述
二层交换机和路由器组合使用,才能完成跨 VLAN 的通信,但使用三层交换机就不需要其它网络设备,能够直接完成不同 VLAN 之间的通信。
在这里插入图片描述

八、不通网段如何通讯?

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

知识扩展:

冲突与冲突域

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

冲突域与广播域

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/370150.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从 JDK 8 到 JDK 18,Java 垃圾回收的十次进化

经历了数千次改进,Java 的垃圾回收在吞吐量、延迟和内存大小方面有了巨大的进步。 2014 年3 月 JDK 8 发布,自那以来 JDK 又连续发布了许多版本,直到今日的 JDK 18 是 Java 的第十个版本。借此机会,我们来回顾一下 HotSpot JVM 的…

Python稀疏矩阵最小二乘法

文章目录最小二乘法返回值测试最小二乘法 scipy.sparse.linalg实现了两种稀疏矩阵最小二乘法lsqr和lsmr,前者是经典算法,后者来自斯坦福优化实验室,据称可以比lsqr更快收敛。 这两个函数可以求解AxbAxbAxb,或arg min⁡x∥Ax−b…

行业观察 | SoC

本文对 SoC 进行不完全总结。 更新:2022 / 02 / 25 行业观察 | SoC总览概念组成周期原因产业链及市场上游下游产品厂商SoC V.S MCUMCUSoCMCU V.S SoC参考链接总览 概念 SoC 1‘ 2’ 3’ 4, 全称 System On Chip,又称 系统级芯片、片上系统&#xff0c…

顺序表(超详解哦)

全文目录引言顺序表定义静态顺序表动态顺序表动态顺序表的接口实现顺序表的初始化与销毁顺序表尾插/尾删顺序表头插/头删顺序表在pos位置插入/删除顺序表的打印顺序表中的查找总结引言 在生产中,为了方便管理数据,我们经常会需要将一些数据连续的存储起…

MyBatis——创建与使用

概念 当我们使用传统的jdbc进行数据库与程序的连接时,每一个操作都需要写一条sql语句,并且没法调试和修改 jdbc连接数据库流程: 创建数据库连接池DataSource获取数据库连接Connection执行带占位符的sql语句通过Connection创建操作对象Stat…

【LeetCode】剑指 Offer(8)

目录 题目:剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过啦!!! 题目:剑指 Offer 24. 反转链表 - …

HTTP 返回码

HTTP 返回码1XX 指示信息2XX 成功3XX 重定向301 Moved Permanently302 Found304 Not Modified4XX 客户端错误400 Bad Request401 Unauthorized403 Forbidden404 Not Found405 Method Not Allowed411 Length Requied413 Request Entity Too Large414 Request Uri Too Long5XX 服…

学习 Python 之 Pygame 开发魂斗罗(一)

学习 Python 之 Pygame 开发魂斗罗(一)Pygame回忆Pygame1. 使用pygame创建窗口2. 设置窗口背景颜色3. 获取窗口中的事件4. 在窗口中展示图片(1). pygame中的直角坐标系(2). 展示图片(3). 给部分区域设置颜色5. 在窗口中显示文字6. 播放音乐7. 图片翻转与…

php使用wangeditor实现富文本

官网参考连接&#xff1a;https://www.wangeditor.com/v5/getting-started.html样式&#xff1a;前端代码&#xff1a;搭建前端部分样式&#xff1a;<tr><td><span style"color:red">*</span>内容</td><td colspan"20"&g…

锁屏面试题百日百刷-Hive篇(二)

锁屏面试题百日百刷&#xff0c;每个工作日坚持更新面试题。锁屏面试题app、小程序现已上线&#xff0c;官网地址&#xff1a;https://www.demosoftware.cn/#/introductionPage。已收录了每日更新的面试题的所有内容&#xff0c;还包含特色的解锁屏幕复习面试题、每日编程题目邮…

【华为OD机试模拟题】用 C++ 实现 - 机器人活动区域(2023.Q1)

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

django项目实战十四(django+bootstrap实现增删改查)进阶混合数据使用modelform上传

目录 一、启用media 1、URL设置 2、settings.py配置 二、url 三、upload.py 新增upload_modelform方法 四、form.py新增UpModelForm 五、创建city表 六、创建city_list.html 接上一篇《django项目实战十三&#xff08;djangobootstrap实现增删改查&#xff09;进阶混合数据f…

【信管12.5】项目集与项目组合管理

项目集与项目组合管理之前学习的 PMP 相关的项目管理知识&#xff0c;其实都是针对一个项目的管理过程。但是&#xff0c;在一个组织企业中&#xff0c;往往不止一个项目&#xff0c;可能会有多个相关联的项目&#xff0c;这种情况就叫做项目集。另外&#xff0c;多个项目一起完…

值得推荐!安利5款良心又好用的小众软件

电脑上的各类软件有很多&#xff0c;除了那些常见的大众化软件&#xff0c;还有很多不为人知的小众软件&#xff0c;专注于实用功能&#xff0c;简洁干净、功能强悍。今天分享5个实用的软件&#xff0c;简单实用&#xff0c;效果拉满&#xff0c;堪称工作生活必备&#xff01; …

MXNet中使用双向循环神经网络BiRNN对文本进行情感分类

文本分类类似于图片分类&#xff0c;也是很常见的一种分类任务&#xff0c;将一段不定长的文本序列变换为文本的类别。这节主要就是关注文本的情感分析(sentiment analysis)&#xff0c;对电影的评论进行一个正面情绪与负面情绪的分类。整理数据集第一步都是将数据集整理好&…

对restful的支持 rust-grpc-proxy

目录前言快速体验说明1. 启动目标服务2. 启动代理3. 测试4. example.sh尾语前言 继上一篇博文的展望&#xff0c;这个月rust-grpc-proxy提供了对restful的简单支持。 并且提供了完成的用例&#xff0c;见地址如下&#xff0c; https://github.com/woshihaoren4/grpc-proxy/tre…

函数指针、函数指针的数组、QT中的函数指针

一、函数指针三种定义方法 函数名本质就是函数指针&#xff0c;函数实际上就是返回的是函数指针 //函数指针#include <iostream> using namespace std;void func(int a){cout << "hello world" << endl; }int main(){//函数指针 三种定义方法//一…

WindownsPowershell中的单引号和双引号

WindownsPowershell中的单引号和双引号 目录标题WindownsPowershell中的单引号和双引号单引号对中,可以直接写双引号双引号对中,可以直接写单引号反引号 可以在 双引号对中表示转义双引号对中, 可以用 反引号双引号 表示一个双引号双引号对中, 可以用 反引号单引号 表示一个单引…

【华为OD机试模拟题】用 C++ 实现 - 构成的正方形数量(2023.Q1)

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

极品笔记,阿里P7爆款《K8s+Jenkins》技术笔记,职场必备

前些日子从阿里的朋友那里取得这两份K8sJenkins的爆款技术笔记&#xff1a;《K8S(kubernetes)学习指南》《Jenkins持续集成从入门到精通》&#xff0c;非常高质量的干货&#xff0c;我立马收藏&#xff01; 而今天咱们文章的主角就是这非常之干货的技术笔记&#xff1a;K8SJenk…