很多客户和朋友都问过我这样的一个问题:如果掩码配置错误,比如针对 192.168.101.113这个 ip,本来应当配置为 255.255.255.0 的被配置成了 255.255.0.0 或 255.255.255.240,那么我们在 ping 测试网络连通时能不能 ping通,为什么不能又或为什么不能 ping 通勒?
本文就是通过试验、包分析、总结的方式解决这个疑惑的,如果大家知道为什么,就不用继续看,如果不知道为什么,那么在看下去之前,请确认具备以下知识:
1、 能识别 3000不同的汉字,简单语法知识具备,会用鼠标
2、 能敲 a~z 共计 27 个字母,会用金山词霸等翻译工具,语法知识没有也没关系;
3、 网络子网划分计算(基础即可)、简单的协议知识;
主机连通原理
两台主机之间能否进行通讯,关键是看目标主机的 IP 地址是否通源主机在同一网段,在发送通讯包之前,源主机将用目标主机的 IP 地址同本机的子网掩码进行位与操作,在同一网段则能通讯,不在同一网段则无法通讯。
二、测试内容及工具
我们将根据上面的基本拓扑图对各主机进行掩码、网关的配置,用 192.168.101.113 主机 ping192.168.101.101 主机,查看不同的结果,设置、测试内容如下:
在 ping 测试过程中,我们将使用 EtherPeekNX 来进行包的截取,以便对结果进行分析。为什么用 EtherPeekNX?因为我在网吧里面做的测试,机器有还原卡,装 sniffer 会要机器重启,EtherPeekNX 提示要重启,但是不启也是一样用的。而且发现针对不同的地址选择不同的协议来监听:比如可以只监听 A—本机的 ARP广播包,B—本机的 ICMP的包?
而且我们主要是进行协议分析学习,不是对某个工具的学习。
三、测试过程及结果分析
1、源和目的都是 24位掩码(正常配置)
测试拓扑:
测试过程(由于截图有误,没有截下 ping 192.168.101.101 的结果,大家将就一下,从包分析图中看啦!^_^)
测试结果(Reply from 192.168.101.101: bytes=32 time<10ms TTL=128)
测试分析
由于我们先清除了本机的 arp 缓存,因此在 JF3 向 WORK1 发送 ping 请求包时,发现没有WorK1(192.168.101.101)的主机的 mac 地址,无法完成完整包的封装,因此首先发起一个 ARP请求包,寻找 WORK1 的 mac 地址,当收到目标 IP的回应包后完成 PING 包的封装,向 work1发送了 4 个ping 请求包,并成功的收到 ping 回复。我们可以通过截取的包进行相应的了解:
<图中 IP包头中的信息将在另外一篇文档中进行说明,此处没有涉及故没有进行相应说明>
源 192.168.101.113/24 将目标 192.168.101.101/24 的地址进行位与操作:
192.168.101.101
255.255.255.0
目标工作站的网段为:192.168.101.0
同自己所在的网段 :192.168.101.0在同一网段,因此将包直接发给目标主机,通讯成功!
2、源为 16位掩码,目标为 24位掩码(网段大于实际网段)
测试拓扑:
测试过程
测试结果(Reply from 192.168.101.101: bytes=32 time<10ms TTL=128)
测试分析
此处获取的结果和数据包同“源和目的都是 24位掩码”时一样,因此不作详细介绍。
源 192.168.101.113/16 将目标 192.168.101.101/24 的地址进行位与操作:
192.168.101.101
255.255.0.0
目标工作站的网段为:192.168.0.0
同自己所在的网段 :192.168.0.0 在同一网段,因此将包直接发给目标主机,通讯成功!
3、源位 28位掩码_无网关,目标为 24位掩码无网关(网段小于实际网段)
测试拓扑:
测试过程
测试结果(Destination host unreachable)
此处显示的时目标主机不可达,无可分析的数据包。
测试分析
源 192.168.101.113/28 将目标 192.168.101.101/24 的地址进行位与操作:
192.168.101.101
255.255.255.240
目标工作站的网段为:192.168.101.96 (该主机为该网段的广播地址――本人计算有误)
同自己所在的网段 :192.168.101.112 不在同一网段,因此无法将包直接发给目标主机。根据通讯规则,在目标地址不在同一网段时,将把数据包发给网关,但是现在该主机没有配置正确的网关,因此通讯不成功!
4、源位 28位掩码_有网关,目标位 24位掩码有网关(网段小于实际网段)
测试拓扑:
测试过程
测试结果(Reply from 192.168.0.101: bytes=32 time<10ms TTL=128)
测试分析
上图中我不是很明确,arp 的请求包中看到的目标地址怎么会是忽略 192.168.101.101的 mac地址,希望有兄弟能告诉俺一下。
以下部分是论坛中的“lockets”对此疑问的解答,在此表示感谢:
由于你在接口上配置了 192.168.101.113 255.255.255.240 的接口地址
当接口物理态和管理态UP以后,产生了一条
192.168.101.112 255.255.255.240 出接口是 192.168.101.113 的直连路由
(为了以后说明方便我们叫他 "路由A" )
当你在 192.168.101.113 上PING 192.168.101.101 的时候
系统首先根据目的IP查找路由表,根据前缀匹配规则是无法匹配到"路由 A" 的
(由于: 十进制的112 是"01110000" ,十进制240 是"11110000" ,说明要匹配前4个 BIT "0111"
但是十进制101是"01100101" 前4个 BIT 是0110)
所以最终退而求其次的匹配了 0.0.0.0 /0 192.168.101.1 的默认路由
所以再发送ARP REQUEST 询问 192.168.101.1的 MAC 用来构造帧.
所以系统不关心192.168.101.101的MAC的原因是由于匹配不到路由.
补充:
如果匹配到了路由A,由于该路由没有下一跳信息,那么系统会自动的
认为IP包的DESTINATION就是下一跳,这种情况下,系统就会发送ARP 来请求
192.168.101.101 的MAC地址信息了~
后面的几个包都是 3、4、6 的重复。至此我们可以看到该包的走向:
Jf3——(ping 请求)――网关—-(ping 请求转发)-—work1——(ping回应)――jf3;
源 192.168.101.113/28 将目标 192.168.101.101/24 的地址进行位与操作:
192.168.101.101
255.255.255.240
目标工作站的网段为:192.168.101.96 (该主机为该网段的广播地址――本人计算有误)同自己所在的网段 :192.168.101.112 不在同一网段,因此无法将包直接发给目标主机。根据通讯规则,在目标地址不在同一网段时,将把数据包发给网关,同上一个环境不同,这次我们正确的配置勒网关,因此该 ping 请求交给了网关,网关再转发给目标主机,而目标主机判断如下:
源 192.168.101.101/24 将目标主机 192.168.101.113/28 的地址进行位与操作:
192.168.101.101
255.255.255.0
目标工作站的网段为:192.168.101.0
同自己所在的网段: 192.168.101.0 在同一网段,因此通讯成功!
5、交换环境下的测试 4(ICMP 重定向)
此环境下截取的包很有意思,接收到直接由网关发来的 ICMP 重定向的包,不知道具体的数据是什么,估计是告诉本机目标地址的 mac 是多少,是在同一网段可直接通讯,但是本机还是继续将包发到网关。整个测试平台跟测试 4 一样,但是连接的是交换机,不知是不是跟这个有关。
测试拓扑:
测试分析
在此环境中 ping 包的走向:
Jf3——(ping 请求)――网关—-(ping 请求转发)-—work1——(ping回应)――jf3;
Jf3——(ping 请求)――网关—-(ICMP 重定向)
由于用的是一般的交换机,不能做端口镜像,而网关又是 adsl 路由器,无法截取上面的包,故此网关到 work1 的包流向不清除。如果那位兄弟知道的话请告诉俺们,谢谢啦!
其数据包流向原因同测试 4 一样,在此就不做描述啦。
四、总结
通过以上的测试,我们可以得出如下结论:
两台主机之间能否进行通讯,关键是看目标主机的 IP 地址是否通源主机在同一网段,在发送通讯包之前,源主机将用目标主机的 IP 地址同本机的子网掩码进行位与操作,在同一网段则能通讯,不在同一网段则无法通讯。
但是如果双方都正确的配置了网关,则通讯正常。
具体而言就是一旦掩码配置有问题(主要是位数不对的情况),则网段大的一方可以 ping通网段小的,而网段小的无法 ping通网段大的,但是如果网段小的正确的配置了网关,则通讯依然正常。
至此,本测试结束。本来很简单的事情写了这么多,只是想从原理上知道为什么会有这种结果,如何使用工具进行原理的查找。
本人也是刚开始学习协议的,在这次测试中有很多地方还有不清楚的地方,写这个东西只是希望大家能一同学习协议和故障检测,不正确的地方请大家指正分享。
自由广告区 |
分类导航 |
邮件新闻资讯: IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮 电子邮箱 | 反垃圾邮件|邮件客户端|网络安全 行业数据 | 邮件人物 | 网站公告 | 行业法规 网络技术: 邮件原理 | 网络协议 | 网络管理 | 传输介质 线路接入 | 路由接口 | 邮件存储 | 华为3Com CISCO技术 | 网络与服务器硬件 操作系统: Windows 9X | Linux&Uinx | Windows NT Windows Vista | FreeBSD | 其它操作系统 邮件服务器: 程序与开发 | Exchange | Qmail | Postfix Sendmail | MDaemon | Domino | Foxmail KerioMail | JavaMail | Winwebmail |James Merak&VisNetic | CMailServer | WinMail 金笛邮件系统 | 其它 | 反垃圾邮件: 综述| 客户端反垃圾邮件|服务器端反垃圾邮件 邮件客户端软件: Outlook | Foxmail | DreamMail| KooMail The bat | 雷鸟 | Eudora |Becky! |Pegasus IncrediMail |其它 电子邮箱: 个人邮箱 | 企业邮箱 |Gmail 移动电子邮件:服务器 | 客户端 | 技术前沿 邮件网络安全: 软件漏洞 | 安全知识 | 病毒公告 |防火墙 攻防技术 | 病毒查杀| ISA | 数字签名 邮件营销: Email营销 | 网络营销 | 营销技巧 |营销案例 邮件人才:招聘 | 职场 | 培训 | 指南 | 职场 解决方案: 邮件系统|反垃圾邮件 |安全 |移动电邮 |招标 产品评测: 邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端 |