最近我写题的时候遇到了这么一个问题,却想了很久也想不通。
看起来非常简单,却引发了我的一系列思考。
我的想法分为好几个阶段。
初始阶段:同一网段就能PING通!
如果按照我最初的想法,我想的是,两个IP地址能否互相PING通,还得看他们是否属于同一网段。如果属于同一网段,就能PING通,反之则不能。
这个想法得出的结果就是:没有正确答案。
因为我的想法是,要处于同一网段,必然要保持网络号相同,那么网络号的位数也就是掩码位数也要保持相同。
题中IP的掩码是24位,选项中唯独C选项是24位掩码,但是一个是126一个是127,网络号依然不同。
所以我就进入了死胡同。
经过漫长的思考,我进入了想法的第二阶段。
第二阶段:分析选项IP的可用主机,题目IP在可用主机中就能通!
确立这个想法后,我立马排除了A选项,因为28位的掩码,可用主机范围肯定比题目IP要小得多,必然不会包含题目IP。
于是我开始分析剩下的选项,B类也立马排除,理由和初始阶段一样。
再剩下就是C选项,16位的掩码可以很容易得出可用的主机范围是从192.168.0.1---192.168.255.254这个区间内,网关还要再排除一位。
那么这个区间包括题目IP吗?按理来说是包括的。
但是我再仔细一想,题目IP不是C类地址吗?
那岂不是说,只要前几位相同,那么C类地址都包含在B类地址里?
这个疑问一直伴随我到下一个阶段。
关于D选项,它是一个无类IP地址,也是经过子网划分的地址。
它的可用主机范围是:192.168.112.1---192.168.127.254
似乎也是包含题目IP的。
那么岂不是说这道题有两个答案?
甚至我去请教了我身边一位考过了HCIE的学长,他给我的回答也是CD选项都是对的。
但我怎么想怎么不对劲。
起初我看见这个地址就觉得很诧异,192.168明明是一个C类地址的前缀,怎么会拥有20位的掩码?
如果是子网划分的话,怎么说也是借用主机位,掩码位应该增加才对,怎么会产生这种掩码搭配这种IP地址呢?
这个问题我在写这篇回答时依然一知半解。
包括我去查询资料,百科里也说无类IP地址理应当是相较于有类IP而变长的。
所以那不就是说这道题本身有问题?
实践阶段:利用ARP来判断二者是否处于同一网段
所谓“实践是最好的老师”。于是我立马开始动手,在ensp模拟器里做起了实验。
我先判断C选项。
建造一个如图所示的拓扑结构并配置IP。
我们用pc6去ping pc7,并抓一下g0/0/0的数据包,看看会有什么结果。
结果如图所示
不仅没ping通,甚至抓包也只抓到了几个arp的request包。
这是否能证明他们并不处于同一网段呢?
然而经过我的进一步实验,我发现有一种情况他们是能互相ping通的。
这种情况,因为路由器的一个端口在配置IP后会自动在路由表里添加这个IP的网段。
我发现经过一个是C类地址,一个是B类地址,只要掩码重合的几位保持一致,就可以ping通。
可以看见,当我把第一个路由器的端口改为192.166的时候,就ping不通了。
这印证了我的猜想。
也就是说,路由器对于“同网段”这个概念的判断机制是不一样的!它可以说是一种“取短机制”,只要掩码位较短的那个IP与另一端的IP能保持前半部分的重合,那么就是同一网段!
那么为什么第一次实验没有ping通呢?
查阅资料后,我发现原来是因为路由器并不转发广播包。
我们知道路由器是隔绝广播域的,所以对于广播包,路由器是不转发的。
并且我的实验是有错误的。因为路由器本身就是三层设备,它的作用是为不同网段的主机之间可以建立路由从而达到通讯的目的。
所以不管这两个IP是不是同网段,压根用不上路由器,路由器接收到交换机广播来的ARP请求直接丢弃掉了,除此以外再无其他工作。这也是为什么我在第一次实验抓包时只抓到几个没有response的ARP包。
因为路由器压根不回复ARP包。
就算要路由器,也是建立两台路由器,用两个网关。
如果IP是同网段,也不需要经过路由器。交换机就能把所有问题搞定。
但其实这样也就侧面证明了,这两个IP地址是不同网段的。
因为如果同网段,按理路由器应该会收到来自另一台主机发送并由交换机广播来的response包,但路由器并没有收到。
所以这就证明了二者不同网段,不可互通。
结论:
题目有问题。
没有正确答案。
IP地址不符合规范。
以上是我作为一个数通小白的一点点个人学习历程。
我知道一定会有很多让人啼笑皆非的错误。
还请指正,不胜感谢!