同一交换机下不同网段的终端通信

文章目录

  • 一个有趣的实验

大家都知道不同网段的IP地址要想通信需要通过网关进行路由转发,而一般通过路由器来做默认网关。

一个有趣的实验

一台二层交换机下,连接两个不同网段的PC,实现彼此之间的通信。
一台S3700交换机,两台PC。
在这里插入图片描述
在这里插入图片描述
拓扑图如下:
在这里插入图片描述
显然 PC1-1和PC2-1的IP地址不是同一网段的。此时 通过PC1-1 ping PC2-1会发生什么?
在PC1-1上 首次ping 192.168.2.10 时,首先 PC1-1 会根据自己的子网掩码来计算192.168.2.10的网段,得到的网段为192.168.2.0。
和自己IP地址的网段192.168.1.0不是同一网段,那么PC1-1会先查看自己PC上配置的网关地址。然后根据网关地址再查看自己本地ARP表中,是否有此网关IP地址及MAC映射 记录。如果PC主机没有配置网关地址,那么也就不会查看PC主机的ARP表。PC1-1不会对ping命令发送任何的数据帧。
注意:即使PC主机上有网关地址的ARP表缓存,但是 我们手动把IPv4配置里的网关去掉了,同样PC1-1不会对ping命令发送任何的请求数据
帧。
因为PC主机要先看网关地址是否有配置,若有配置,再看ARP表缓存。没有配置网关地址也就不会看ARP表,不会发送任何的数据
帧。

如上图PC1-1中,我们没有配置PC1-1的网关地址。那么PC1-1不会对ping命令发送任何的数据帧。
下面给PC1-1配置上网关地址,网关地址配置成多少呢?我们这里把PC1-1主机的网关地址,配置成PC2-1主机的地址。
在这里插入图片描述
然后,再通过PC1-1 ping PC2-1 。此时 PC1-1 会发送 ARP广播帧,目标MAC地址为广播地址,目标IP地址(PC1-1的网关地址):192.168.2.10。
交换机收到 ARP广播帧后,会先学习源MAC地址及入数据端口记录到MAC地址表中,然后对ARP广播帧进行广播。当PC2-1收到ARP广播帧后,将源IP地址及源MAC地址缓存到ARP表中,然后发送ARP响应报文,注意在发送PC2-1ARP响应报文时,虽然目标IP地址为192.168.1.10,和PC2-1不是同一网段,但是不会查看PC2-1的网关地址是否有配置。所以ARP响应报文是否能正常发送和PC2-1是否配置网关地址无关。PC2-1的ARP单播响应报文,到达交换机后,交换机同样学习源MAC地址及入数据端口。然后根据已有MAC地址表,将数据转发到PC1-1上。PC1-1在收到ARP单播响应报文后,将源IP地址及源MAC地址缓存到ARP表中。
此时PC2-1的MAC地址及IP地址在PC1-1的ARP表中有缓存。
交换机上也有PC1-1/PC2-1 对应的MAC地址表。
PC1-1的MAC地址及IP地址在PC2-1的ARP表中也有缓存。

此时PC1-1 开始送ICMP请求报文,因为是跨网段通信,所以PC1-1先查看自己主机上的网关地址(必须要配置上),网关地址为192.168.2.10,然后根据此地址,再去本机ARP表中查找对应的MAC地址,因为此前经过ARP报文的请求和响应,所以已经有对应的ARP缓存信息。那么ICMP请求报文中,会把PC1-1网关地址对应的MAC地址,做为目标MAC地址,目标IP地址为 ping命令后的地址,这里也就是PC1-1的网关地址,两者相同了。当交换机收到ICMP请求报文时,先学习MAC地址表,然后根据目标MAC地址 ,在MAC地址表,找到转发的端口,进行转发。此时PC2-1会收到ICMP请求报文。PC2-1拆开三层报文,获得目标IP地址,和自己的IP地址相同则接收,然后准备发送ICMP响应报文,此时查看到源IP地址为192.168.1.10,和自己不是同一个网段。那么PC2-1会查看自己的网关地址,发现网关IP没有设置(如上图PC2-1中IPv4设置里)。
则不会PC2-1发送响应报文。
所以出现了以下报文:
在这里插入图片描述
下面给PC2-1配置上,网关地址,网关地址配置多少呢,因为是要和PC1-1通信,这里就设置为PC1-1的IP地址。
如下图:
在这里插入图片描述
配置好PC2-1的网关之后,那么再收到来自PC1-1的ICMP请求报文时,因为是不同网段,PC2-1 首先根据设置的网关地址(而不是根据ICMP请求报文的源IP地址),去自己本地的ARP表中去找网关地址对应的MAC地址,如果没有找到那么 PC2-1 会发送一个ARP广播包,通过这个来获得到网关的MAC地址,存储到本地ARP表中,然后把网关地址对应的MAC地址做为ICMP响应报文的里的目标MAC地址,ICMP请求报文中的源IP地址做为目标IP地址。源MAC地址和源IP地址 就是原ICMP请求报文中目标MAC地址和目标IP地址。然后进行ICMP报文的响应。
注意:因为我们这里设置的PC2-1的网关地址正好是PC1-1的IP地址,因为之前的PC2-1收到PC1-1的ARP请求报文时,已经把对应的IP地址和MAC地址的映射关系缓存到ARP表里了,所以这里PC2-1没有再发送ARP请求报文获取自己网关的MAC地址。
在这里插入图片描述

如果我们加一台PC3-1,来充当PC2-1的网关会怎样呢?
此时的拓扑如下:
在这里插入图片描述
在这里插入图片描述
其他保持不变
然后清空PC上的ARP表及交换机上MAC地址表,
在PC1-1 上 ping PC2-1
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
所以,最终 在 PC2-1上抓取报文看似请求和响应正常,其实 PC2-1把PC1-1对其发送的ICMP请求报文,对应的响应报文却发送到了PC3-1上了。这样显然不合理,所以跨网段的通信一定要配置正确的网关。

注意:虽然上面配置的主机网关和主机的IP地址不是同一个网段,但是也通信正常。但是我们需要在作为网关的主机上还需要给网关ip配置网关才能互相通信。但是实际场景中,没人这么配置。实际场景中一个网关下,会接一个交换机,交换机下接入多台设备终端。所有终端的网关地址都配成同一个。而且网关ip地址和终端设备的IP地址保持同一个网段。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LabelImg:一个简单易用的图像标注工具

目录 LabelImg是什么? 如何使用LabelImg进行图像标注? LabelImg的优势和应用场景 在哪里下载它 随着人工智能技术的不断发展,机器学习和深度学习在图像识别、目标检测等领域中得到了广泛的应用。而要训练一个有效的模型,通常需…

如何提高内存和cpu使用率呢?-Linux类资源

最近公司项目上线时,红蓝线巡检时,部分服务器因配置高但使用率低而需要降级。 为了避免降级,如何增加内存和CPU使用率? 这可以通过脚本来实现。 当前服务器操作系统版本:-7_5。 连接服务器后,登录账号。 …

JVM系列:垃圾回收器(GC)

JVM系列:垃圾回收器(GC) 😀 执行引擎将class文件加载至JVM内存中运行。在运行过程中,需要在内存中动态创建和销毁对象。在传统的C/C语言中,需要手动进行对象销毁以避免内存泄漏。而在Java中,引入…

Leetcode笔记——二叉树的迭代遍历

中序遍历: 定义一个 保存中间量的栈 和一个 结果数组 1. 模板写法 注释版: 背诵版: 前序遍历 1. 中 右 左 的顺序遍历 2. 模板写法,按中 左 右 的顺序遍历 后序遍历 1. 模板写法,按左 右 中 的顺序遍历 注释版&am…

STM32单片机基本原理与应用(十一)

语音识别实验 此实验采用STM32核心板 LD3320模块,通过初始化LD3320并写入待识别关键词,对麦克风说出相应关键词,实现实训平台上的流水灯相应变化的效果。 LD3320 是一颗基于非特定人语音识别 (SI-ASR:Speaker-Indepen…

【深度学习笔记】优化算法——Adam算法

Adam算法 🏷sec_adam 本章我们已经学习了许多有效优化的技术。 在本节讨论之前,我们先详细回顾一下这些技术: 在 :numref:sec_sgd中,我们学习了:随机梯度下降在解决优化问题时比梯度下降更有效。在 :numref:sec_min…

从element-plus 引入ILoadingInstance 出现类型错误

具体报错如下图所示: 1、引入ILoadingInstance 出现错误: 解决问题如下所示: 可能是因为element-plus 多次升级原因,将原来的内部代码多次改下了,原来是loading.type文件,现在变成loading.js,包…

卷积神经网络必备基础

卷积神经网络(Convolutional Neural Network, CNN) 传统的全连接神经网络并不适用于图像处理,这是因为:每个像素点都是一个输入特征,随着层数的增加,参数以指数级增长,而图片的像素点往往非常…

【STM32】HAL库 CubeMX 教程 --- 高级定时器 TIM1 定时

实验目标: 通过CUbeMXHAL,配置TIM1,1s中断一次,闪烁LED。 一、常用型号的TIM时钟频率 1. STM32F103系列: 所有 TIM 的时钟频率都是72MHz;F103C8不带基本定时器,F103RC及以上才带基本定时器。…

2024.3.10 win11系统设置环境变量的方法

2024.3.10 win11系统设置环境变量的方法 win11和其他版本略有区别,以安装maven为例进行操作。 一、鼠标右键点击下拉菜单中选择“个性化” 二、点击个性化中选项后在左侧菜单选择“系统” 三、在右侧系统项目中选择“系统信息” 四、在系统信息中选择“高级系统…

Android将自己写的maven库上传至jitpack(2024靠谱版)

浏览了一堆陈年旧贴,终于实验成功了 第一步 将自建空项目同步至github并保证能正常运行第二步新增一个library类型的modul第三步 在新建的library里面写一些测试用的代码第四步在library的gradle文件增加插件和发布脚本第五步新建一个配置文件第六步 把所有更改push…

面试题:分布式锁用了 Redis 的什么数据结构

在使用 Redis 实现分布式锁时,通常使用 Redis 的字符串(String)。Redis 的字符串是最基本的数据类型,一个键对应一个值,它能够存储任何形式的字符串,包括二进制数据。字符串类型的值最多可以是 512MB。 Re…

基于java+springboot+vue实现的火车票订票系统(文末源码+Lw)294

摘要 火车票订票系统可以对火车票订票系统信息进行集中管理,可以真正避免传统管理的缺陷。火车票订票系统是一款运用软件开发技术设计实现的应用系统,在信息处理上可以达到快速的目的,不管是针对数据添加,数据维护和统计&#xf…

SaulLM-7B: A pioneering Large Language Model for Law

SaulLM-7B: A pioneering Large Language Model for Law 相关链接:arxiv 关键字:Large Language Model、Legal Domain、SaulLM-7B、Instructional Fine-tuning、Legal Corpora 摘要 本文中,我们介绍了SaulLM-7B,这是为法律领域量…

Keepalived+LVS构建高可用集群

目录 一、Keepalive基础介绍 1. Keepalive与VRRP 2. VRRP相关技术 3. 工作原理 4. 模块 5. 架构 6. 安装 7. Keepalived 相关文件 7.1 配置组成 7.2 全局配置 7.3 VRRP实例配置(lvs调度器) 7.4 虚拟服务器与真实服务器配置 二、Keepalived…

用*把棱形画出来

输入一个整数n表示棱形的对角半长度&#xff0c;请你用*把这个棱形画出来。 输入&#xff1a;1输出&#xff1a;*输入&#xff1a;3输出&#xff1a;**** *********输入输出格式 输入描述: 输入一个整数n&#xff08;n < 10&#xff09;。 输出描述: 按题目要求输出字符棱…

Jobs Portal求职招聘系统源码v3.5版本

源码介绍: Jobs Portal 求职招聘系统 是为求职者和公司发布职位而开发的交互式求职招聘源码。它使求职者能够发布简历、搜索工作、查看个人工作列表。它将提供各种公司在网站上放置他们的职位空缺资料&#xff0c;并且还可以选择搜索候选人简历。除此之外&#xff0c;还有一个…

Jupyter Notebook使用教程——从Anaconda环境构建到Markdown、LaTex语法介绍

0. 前言 按照国际惯例&#xff0c;首先声明&#xff1a;本文只是我自己学习的理解&#xff0c;虽然参考了他人的宝贵见解及成果&#xff0c;但是内容可能存在不准确的地方。如果发现文中错误&#xff0c;希望批评指正&#xff0c;共同进步。 你是否在视频教程或说明文档或Githu…

TC7.0简单编程十六进制跟十进制转化函数

写脚本的时候&#xff0c;没用内存的功能什么的&#xff0c;基本跟十六进制用得都比较少。最近因为易语言的一个代码要转化过来&#xff0c;看到易语言里面有现成的函数 16到10 跟10 到16&#xff0c;就想着TC是否也有这样的函数。找来找去没找到。其实TC也有这样的函数来的。藏…

misc49

下载附件是个txt文件&#xff0c;打开发现是个压缩包的头 后缀改成zip后打开 base解码无果&#xff0c;我们尝试字母解码 然后音符解码得到 ❀✿✼❇❃❆❇✿❁❇✻✿❀✾✿✻❀❊❆❃❀❊✻❅❀❄✼❂❊❊✾❇❁✽✽✼❁❂❀❀❀❉❃❂❀❉❃❂❊❊✾✼✻✻❀❆✻✻❀❀✻✻✿…