博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
取证分析:在通信过程中不关心目标的子网掩码
阅读量:7066 次
发布时间:2019-06-28

本文共 2133 字,大约阅读时间需要 7 分钟。

取证分析:在通信过程中不关心目标的子网掩码

有几组让网络学习者感到很疑惑的IP地址组,现在就针对两组典型的地址做分析:

第一组:    IP:192.168.1.1     与      192.168.2.1

               255.0.0.0               255.255.0.0

如果把这两组地址直接填写到利用二层交换机或集线器相连的两台主机上,这两个地址不经过路由能ping通吗?正确的回答是:能ping通!

如果将192.168.1.1/8位作为信源主机(发起通信的源主机),192.168.2.1/16作为信宿主机(接收通信的目标主机),在IP地址求“与”时,这两个IP在去和回的路径上都是处于一个子网中,所以能通信。在这里提出知识点的误区:在确定两个IP地址是否在同一个子网的方式有误。如第一组所示的地址。如果我们在判断两个IP是否在一个子网时利用下图2.26方式是正确的,那么大家在分析192.168.1.1/8与192.168.2.1/16就应该需要路由才能通信,具体如图2.27所示。但实验结果会告诉读者,192.168.1.1/8 与192.168.2.1/16根本就是在一个子网,因为它们不需要路由也能通信!读者可把这两个地址放在两台计算机上试一试就可证明。

正确的理解IP求“与”来确定是否在一个子网中的技巧:

IPV4的通信,源主机根本不需要关心目标主机的子网掩码,而求“与”的正确过程应该是:将目标主机的IP与源主机的子网掩码求“与”,再将源主机的IP与源主机的子网掩码求“与”,得出两个主机是否在同一个子网,如图2.28所示。

所以ICMP的请求报文能够准确地从192.168.1.1/8发到192.168.2.1/16。

接下来看一下:192.168.2.1/16返回给192.168.1.1/8的ICMP应答报文,在这个过程中我们可以将192.168.2.1理解成应答回送报文的源主机,而192.168.1.1是应答回送报文的目标主机,所以仍然以IPV4通信不要求关心目标子网的原则,如上图2.28所示,从192.168.2.1返回给192.168.2.1 的ICMP通信仍在同一子网。

将这组IP地址分析到这个程度上就可以很明确的得出一个结论:192.168.1.1/8在没有三层路由设备的情况下,直接与192.168.2.1/24相连,是能ping通的,因为ICMP的请求与应答消息都是在一个子网中,它们没理由需要三层路由设备。

第二组地址:192.168.1.1       192.168.2.1

            255.255.255.0      255.255.0.0

如果把这两组地址直接填写到利用二层交换机或集线器相连的两台主机上,这两个地址不经过路由能ping通吗?

答:不能ping通。当192.168.1.1/24主机ping192.168.2.1/16时,在192.168.1.1/24的主机上会报告“Destination hostunreachable.”,当从192.168.2.1/16主机ping192.168.1.1/24的主机时会报告“Request timed out”,ping不通。为什么还会出现报告不同的错误的提示?原因很简单,当192.168.1.1/24主动发起对192.168.2.1/16的ping时,根据第一组地址分析得出一个结论:当192.168.2.1作为目标时,不关心它的子网掩码,所以通过“与”方式,192.168.1.1/24与192.168.2.1/16不在同一子网,这时ICMP的请求消息都到不了目标主机,所以就直接报告:“Destination hostunreachable”目标主机不可达。但相反,从192.168.2.1/16主动ping 192.168.1.1/24主机时,目标就是192.168.1.1/24所以可以不关心目标IP地址的子网掩码,此时,192.168.2.1主机的ICMP的请求消息能够到达192.168.1.1/24的主机,因为ICMP发送ICMP请求消息时它们在同一个子网中的。换言之,192.168.2.1的ICMP请求消息可以正确的发到192.168.1.1。但是大家千万不要忘记通信是一个双向的过程,特别是ICMP的请求消息能发到目标主机,这并不表示ping就会成功,必须要192.168.1.1对192.168.2.1的应答消息能被准确的送到192.168.2.1时,一个完整的ping过程才完成。问题也就在这里,因为当192.168.1.1作为源地址去响应192.168.2.1的ICMP请求时,192.168.2.1就是目标地址,使用第一组地址中“与”计算的方式,我们可以明确看到,192.168.1.1无法将ICMP的应答消息传递到192.168.2.1,因为它们不在同一个子网中。大家再联动起来分析:当192.168.2.1主动ping192.168.1.1时,它的请求消息能被传递到192.168.1.1,然后它就等待192.168.1.1为它做ICMP应答,但是应答消息永远不会被传递到192.168.2.1,所以192.168.2.1的等待就超时了,报告:“Request timed out”。

转载地址:http://votll.baihongyu.com/

你可能感兴趣的文章
CentOS 7.0安装配置LAMP服务器(Apache+PHP+MariaDB)
查看>>
Django 跨表查询--神奇的双下划线和点
查看>>
h3cte D图 搭建
查看>>
Linux 文件基本属性
查看>>
【转】js获取当前指定的前几天的日期(如当前时间的前七天的日期)
查看>>
javascript中对象字面量的理解
查看>>
centos 普通用户获得sudo超级权限
查看>>
Web内容管理系统 Magnolia
查看>>
tmux命令使用总结
查看>>
百度--买帽子
查看>>
SDWebImage的使用
查看>>
PC端和移动端测试区别
查看>>
TCP/IP中的四元组、五元组、七元组
查看>>
用代码告诉你“问世间情为何物,直教人生死相许”
查看>>
(PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
查看>>
使用sqlite保存数据返回主键
查看>>
js循环生成多个easyui datagrid数据网格时,初始化表格
查看>>
Python编程笔记(第三篇)【补充】三元运算、文件处理、检测文件编码、递归、斐波那契数列、名称空间、作用域、生成器...
查看>>
获取用户信息
查看>>
洛谷P3952 时间复杂度
查看>>