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

news2024/9/29 23:26:08

文章目录

  • 一个有趣的实验

大家都知道不同网段的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地址保持同一个网段。

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

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

相关文章

【金三银四】Spring面试题

目录 1、什么是Spring2、说一下Spring的IOC3、Spring的AOP4、连接点?切入点?5、Spring AOP 是通过什么实现的6、Spring Bean的生命周期是怎么样的?7、Spring Bean的初始化过程是怎么样8、Spring的事务传播机制有哪些?9、Autowired…

Qt 中Json文件的操作

Json文件的读取 QFile file("data.json"); //准备好的文件file.open(QIODevice::ReadOnly|QIODevice::Text);QByteArray arr file.readAll();QJsonDocument jsonDoc QJsonDocument::fromJson(arr);QJsonObject jsonObj jsonDoc.object();qint32 id jsonObj["…

网络工程师笔记10 ( RIP / OSPF协议 )

RIP 学习路由信息的时候需要配认证 RIP规定超过15跳认定网络不可达 链路状态路由协议-OSPF 1. 产生lsa 2. 生成LSDB数据库 3. 进行spf算法,生成最有最短路径 4. 得出路由表

Python错题集-8:AttributeError(找不到对应的对象的属性)

1问题描述 AttributeError: AxesSubplot object has no attribute arc 2代码详情 import matplotlib.pyplot as plt# 创建一个新的图形和坐标轴 fig, ax plt.subplots()# 定义弧线的参数 center (0.5, 0.5) # 圆心坐标 (x, y) width 1.0 # 半径 height 0.5 # 半径 ang…

学习笔记。。。

1.字符串的拼接 1.sprintf() 往字符串的前面或中间、后面拼接一个字符串。 2.strncpy()用来复制字符串的前n个字符 //dest为目标数组,src为源数组,n为要复制的字符个数 2.char* My_strncpy(char* dest, const char* src, int n) 3.char *strcat(ch…

【Axure高保真原型】可视化动点素材

今天和粉丝们免费分享可视化动点素材的原型模板,该模板使用简单,复制粘贴,预览时即可实现动点效果,本案例提供红黄蓝绿4中颜色的动点,如果需要其他颜色,可以自行编辑svg里面的代码 【原型效果】 【模板下载…

Leetcode 59.螺旋矩阵Ⅱ

1.题目 2.思路 (借用代码随想录的图) 1.我们将转一圈看作一个循环(1->2->3->4->5->6->7->8 这是一个循环) 2.在这个循环里,我们要画四条边(上右下左) 填充上行从左到右 填…

[天天向上] 学习方法论-事半功倍的问题解决方法

目录 一、尝试独立解决问题1. 关于独立2. 像密室逃脱一样 二、提问的艺术1. 合适的自我介绍1.1 群名片2.2 研究方向/业务内容 2. 详细的问题描述2.1 问题描述要点2.2 描述格式2.3 问题内容描述,尤其是当前进展和问题 3. 如何让更多的人为你解答4. 如何结束提问更优雅…

ThreadLocal使用,配合拦截器HandlerInterceptor使用

ThreadLocal使用,配合拦截器HandlerInterceptor使用 ThreadLocal的使用场景通常涉及多线程环境下需要为每个线程保留独立状态的情况。它提供了一种简单的方式来管理线程本地变量,使得每个线程都可以独立地访问和修改自己的变量副本,而不会影…

《C语言文件操作》

目录 1. 文本数据和二进制 1.1 文本数据 1.2 二进制数据 1.3文本文件和二进制文件 2. 文件的打开和关闭 2.1 文件指针 2.2 打开文件 2.3 关闭文件 2.4 注意事项: 3. 文本文件的读写 3.1 向文件中写入数据 3.2 从文件中读取数据 3.3 注意事项 4. 二进制文件的读写…

如何对于单元格数据进行清洗处理

如何对于单元格数据进行清洗处理 陪伴意味着有人愿意把最美好的东西给你, 那就是时间。 当然陪伴也是一个很平常的事情, 日复一日,年复一年。 到最后陪伴就成了一种习惯。 约定好的相逢,伴你天荒地老! 陪伴是最长情的告…

Git分支管理(Git分支的原理、创建、切换、合并、删除分支)

系列文章目录 文章一:Git基本操作 文章目录 系列文章目录前言一、Git分支是什么二、Git分支的原理三、创建分支四、切换分支五、合并分支六、删除分支 前言 在上一篇文章中,我们学习了如何使用Git的一些基本操作,例如安装Git、创建本地仓库…

Unity使用Addressable热更新

先看热更新的gif: Addressable是Unity推出的打ab包方案。不需要手动写AB打包脚手架了,不需要关心依赖,这也简化了ab热更新的流程。Addressable打包需要先将资源放入group中,按group来打包,每个group对应一个ScriptableObject的配置…

Unity 关节:铰链、弹簧、固定、物理材质:摩檫力、 特效:拖尾、

组件-物理-关节:铰链(类似门轴) 自动动作、多少力可以将其断开、 弹簧可以连接另一个刚体(拖动即可) 固定一般是等待一个断裂力,造成四分五裂的效果。 物理材质 设置摩檫力,则可以创造冰面的…

【算法面试题】-04

执行时长 def min_execution_time(n, size, tasks):a 0ans sizei 0while i < size:tmp tasks[i]a tmpif a < n:a 0else:a - ni 1ans a // nif a % n ! 0:ans 1return ans# 读取输入 n int(input()) size int(input()) tasks list(map(int, input().split()))…

macOS14.4安装FFmpeg及编译FFmpeg源码

下载二进制及源码包 二进制 使用brew安装ffmpeg : brew install ffmpeg 成功更新到ffmpeg6.1 下载FFmpeg源码

SMART PLC自适应低通滤波器(收放卷线速度滤波)

一阶低通滤波器更多内容请参考信号处理专栏相关文章,常用链接如下: 1、SMART PLC 低通滤波器和模拟量采集应用 https://rxxw-control.blog.csdn.net/article/details/136595982https://rxxw-control.blog.csdn.net/article/details/1365959822、SMART PLC双线性变换和后向差…

实拆一个Philips剃须刀

拆卸难度很大&#xff0c;怪不得防水 FR&#xff1a;徐海涛(hunkXu)

【Prometheus】DataModel

数据模型 DataModel 指标 Metric metric 包含 metric name 和 metric label 格式&#xff1a; <metric name>{<label name><label value>, ...}例如&#xff1a;服务器 HTTP 接口 /messages 的总请求数 api_http_requests_total{method"POST",…

算法第二十六天-删除有序数组中的重复项Ⅱ

删除有序数组中的重复项 题目要求 解题思路 题目要求中提到原地修改&#xff0c;那么肯定需要一个指针指向当前即将放置元素的位置&#xff0c;需要另外一个指针向后遍历所有元素&#xff0c;所以[双指针]解法呼之欲出。 慢指针slow&#xff1a;指向当前元素放置的位置&…