位于同一子网下的ip在子网掩码配置错误的情况下如何进行通信(wireshrak抓包分析)

本文主要是介绍位于同一子网下的ip在子网掩码配置错误的情况下如何进行通信(wireshrak抓包分析),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

最近看书发现个问题,正好想学习下wireshark的使用,于是抓包做了下实验。
问题是这样的,假设有服务器A和服务器B,正确配置下两者处于同一子网;此时B的网络配置正确,而A在配置子网掩码时出了错,导致在A中计算B的网段时发现二者不处于同一子网;而它们之间存在网关,恰巧与AB都处于同一网段,此时A想要ping通B,可以成功吗?

文字描述的不是很清楚,直接上例子。

A的ip为16(完整ip为192.168.1.16,16是省略写法,下文亦同),B的ip为103,网关ip为1,A的子网掩码被配置为224(255.255.255.224),B为0(255.255.255.0)。

由下图与运算可得A的子网为0000 0000,B的子网也为0000 0000,但在A的视角看来,当他想要ping通B时,使用自己的子网掩码224算出B的网段为0110 0000,明显二者不位于同一网段,A无法直接通过ARP解析到B的mac地址。

在这里插入图片描述

那它们通信的过程具体是怎么样的呢?让我们接着往下看

上述数据是由我的实验中抽出来的,我将电脑wlan网卡的配置修改了一下,相当于服务器A,我的手机为服务器B,它们连接同一个路由器,则路由器相当于网关。
出于隐私考虑,我把mac地址打码了,留最后两位作为区分

服务器A :IP 192.168.1.16    mac:ef 子网掩码:255.255.255.224 (ping之前A的arp缓存中已有网关mac地址)服务器B: IP 192.168.1.103   mac:8e 子网掩码:255.255.255.0网关:IP 192.168.1.1    mac:ce

实验过程

实验开始前,使用arp -a命令查询arp缓存,发现此时A中已有网关的mac地址
在这里插入图片描述
接下了开始ping,同时使用wireshrak抓取wlan网卡的网络包
在这里插入图片描述
ping请求完成后,arp缓存中增加了B的mac地址
在这里插入图片描述

网络包分析

接下了到分析网络包的时间了
因为第一次ping请求最有价值,于是我只把一开始的数据包截取出来,让我们仔细分析一下。
在这里插入图片描述
插入一段名词解释
Redirect for host

ICMP 重定向(ICMP Redirect)就是路由器收到数据包的接口正是去往目的地的出口时,则会向源发送 ICMP重定向(ICMPRedirect),通告对方直接将数据包发向自己的下一跳即可,不要再发给自己。

91号
在这里插入图片描述
服务器A(Inter)向服务器B发送ping请求,但目的地是网关mac地址(我的路由器是tplink,上面也看得出来==),因为在它看来B和自己不在同一个子网内,无法直接通过ARP广播查询B的mac地址,于是它请求网关转发它对B的ping请求,因此dst为网关(这是基于A本来就知道B的mac地址,否则应该还需要通过ARP广播(broadcast)查询网关的mac地址后才能进行发送,这一步我没有验证)

92号
在这里插入图片描述
网关向服务器A发送icmp重定向,这时它可能将包转发给了服务器B,但无从得知

94号
在这里插入图片描述
服务器A收到了来自服务器B的广播,此时B在广播查询服务器A的mac地址
因为在B的视角看来,A和它同处于同一网段,因此它直接使用ARP广播来查找A
95号
在这里插入图片描述
服务器A(ef)向服务器B(8e)响应自己的mac地址,证明A在响应arp请求时不会考虑子网是否相同
此时B中已经得知A的mac地址,可以直接响应

在这里插入图片描述
服务器B响应服务器A的ping请求,通信完成

这篇关于位于同一子网下的ip在子网掩码配置错误的情况下如何进行通信(wireshrak抓包分析)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/221483

相关文章

Python Transformer 库安装配置及使用方法

《PythonTransformer库安装配置及使用方法》HuggingFaceTransformers是自然语言处理(NLP)领域最流行的开源库之一,支持基于Transformer架构的预训练模... 目录python 中的 Transformer 库及使用方法一、库的概述二、安装与配置三、基础使用:Pi

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地

通过Spring层面进行事务回滚的实现

《通过Spring层面进行事务回滚的实现》本文主要介绍了通过Spring层面进行事务回滚的实现,包括声明式事务和编程式事务,具有一定的参考价值,感兴趣的可以了解一下... 目录声明式事务回滚:1. 基础注解配置2. 指定回滚异常类型3. ​不回滚特殊场景编程式事务回滚:1. ​使用 TransactionT

SpringQuartz定时任务核心组件JobDetail与Trigger配置

《SpringQuartz定时任务核心组件JobDetail与Trigger配置》Spring框架与Quartz调度器的集成提供了强大而灵活的定时任务解决方案,本文主要介绍了SpringQuartz定... 目录引言一、Spring Quartz基础架构1.1 核心组件概述1.2 Spring集成优势二、J

Android Studio 配置国内镜像源的实现步骤

《AndroidStudio配置国内镜像源的实现步骤》本文主要介绍了AndroidStudio配置国内镜像源的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、修改 hosts,解决 SDK 下载失败的问题二、修改 gradle 地址,解决 gradle

如何配置Spring Boot中的Jackson序列化

《如何配置SpringBoot中的Jackson序列化》在开发基于SpringBoot的应用程序时,Jackson是默认的JSON序列化和反序列化工具,本文将详细介绍如何在SpringBoot中配置... 目录配置Spring Boot中的Jackson序列化1. 为什么需要自定义Jackson配置?2.

Java中使用Hutool进行AES加密解密的方法举例

《Java中使用Hutool进行AES加密解密的方法举例》AES是一种对称加密,所谓对称加密就是加密与解密使用的秘钥是一个,下面:本文主要介绍Java中使用Hutool进行AES加密解密的相关资料... 目录前言一、Hutool简介与引入1.1 Hutool简介1.2 引入Hutool二、AES加密解密基础

Python 迭代器和生成器概念及场景分析

《Python迭代器和生成器概念及场景分析》yield是Python中实现惰性计算和协程的核心工具,结合send()、throw()、close()等方法,能够构建高效、灵活的数据流和控制流模型,这... 目录迭代器的介绍自定义迭代器省略的迭代器生产器的介绍yield的普通用法yield的高级用法yidle

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt

Spring中配置ContextLoaderListener方式

《Spring中配置ContextLoaderListener方式》:本文主要介绍Spring中配置ContextLoaderListener方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录Spring中配置ContextLoaderLishttp://www.chinasem.cntene