首先我们来看看以下这两个地址是否可以相互通信呢?初步一看|a、b、lsw3之间无法互通的问题

首先我们来看看以下这两个地址是否可以相互通信呢?
首先我们来看看以下这两个地址是否可以相互通信呢?初步一看|a、b、lsw3之间无法互通的问题
文章图片
初步一看 , 貌似可以通信 , 但是再细看 , 发现两者的掩码完全不同 , 故而肯定不能通信了?然而并非如此 , 如果对两者通信有更深刻的认识 , 相信就会发现他们到底能否相互连通了!接下来我们通过实验来解答这个问题:
首先搭建测试环境 , 下面是作者搭建的测试环境 , 关于每个设备的配置都做了大概的罗列:
首先我们来看看以下这两个地址是否可以相互通信呢?初步一看|a、b、lsw3之间无法互通的问题
文章图片
在这个环境中 , 用两台交换机来充当网络的DCE设备 , 同时用两台PC来充当两个服务器A、B 。 现在分别通过以上问题的题干信息配置两台服务器A和服务器B(下文简称A、B) , 当配置完成后直接用BpingA , 可以看到以下信息:
首先我们来看看以下这两个地址是否可以相互通信呢?初步一看|a、b、lsw3之间无法互通的问题
文章图片
那为什么会是“From192.168.26.3:Destinationhostunreachable”这个信息呢?来进行分析 , 由上面的网络拓扑可以清晰看到 , A和B是通过交换机LSW3相连接的 , 也就是三者处在同一个“广播域”中 , 照理说如果A和B地址都在同一子网中 , A和B之间的通信则会直接进行 , 也就是A、B、LSW3组成的系统将会是一个连通的完整网络系统 , 而他们之间的通信也是可以正常进行的 。 然而通过该图信息可以发现:目标主机不可达 , 显然是A和B没有在同一子网中 , 导致连建立连接之初的ARP广播包都无法应答 , 故而报错是目标不可达;反过来 , 用A去pingB又会是怎样呢?带着这个疑问我们果断进行了操作 , 然而 , 依然无法互通 , 只是结果有了变化:
首先我们来看看以下这两个地址是否可以相互通信呢?初步一看|a、b、lsw3之间无法互通的问题
文章图片
看到这个结果是不是很意外?这表明至少ARP广播已经得到应答 , 那为什么会不通呢?这些问题就交给下文来解答吧!继续上述问题 , 既然是这样 , 那么是不是说明上面的问题已经有了答案 , 就是A和B相互之间无法通信呢?
做信息化运维的我们 , 当然不可以这么粗心大意 , 别忘了我们的网关还没有真正使用上呢!现在我们在LSW4上配置网关地址192.168.26.2(友情提示:交换机上配置地址可以在vlanif1下配置 , 后期有vlan划分的话就在具体vlan下面配置;如果此处是路由器 , 则设置路由器该端口的ip即可)来充当这个网络系统的网关 , 看看是什么结果?现在同样用BPingA:
首先我们来看看以下这两个地址是否可以相互通信呢?初步一看|a、b、lsw3之间无法互通的问题
文章图片
看到结果是不是很惊奇?先不管这些 , 继续在A中来pingB看看:
首先我们来看看以下这两个地址是否可以相互通信呢?初步一看|a、b、lsw3之间无法互通的问题
文章图片
结果不是意外 , 是太意外了 , 互相都可以通信了 , 只是怎么在刚开始发数据包的时候有一条超时呢?
首先我们来看看以下这两个地址是否可以相互通信呢?初步一看|a、b、lsw3之间无法互通的问题】这就是接下来要说的了 , 相信大家都使用过WireShark这个堪称无所不能的神器吧?那就来看看有多神奇!我们还是在A中pingB , 但是在A的网口进行抓包:
首先我们来看看以下这两个地址是否可以相互通信呢?初步一看|a、b、lsw3之间无法互通的问题
文章图片
从抓包信息中可以很明确的看到 , 在A中发起ping之后 , A首先会发出ARP广播数据包 , 目的地址直接是B的ip地址:“whohas192.168.26.3?tell192.168.26.129” , 因为A在ping发出时候 , 利用自己的掩码和B的ip地址进行了AND操作 , 得到网络号和自己的ip得到的网络号相同 , 所以它认为两者就在同一子网中 , 所以A会直接通过ARP寻找B的mac地址来进行通信 。 当B主机收到该广播包后发现是在寻找自己 , 于是赶紧回答说:“192.168.26.3is自己的mac地址” , 但是自己的回答无法送达A , 于是赶紧用A的ip地址和自己的掩码来确定网络号 , 可悲的是该网络号和自己ip计算的并不在同一个子网 , 那怎么办?于是开始请求网关的mac地址 , 试图让网关帮自己送达给A , 于是赶紧发一条ARP广播信息给网关寻求帮助 , 网关以B的ip地址和自己的mac地址为源地址 , 将回答响应给A , 而在这个过程中 , A的第一个ICMP包已过生存周期 , 所以会显示“timeout!”超时 , 当A中第二个ICMP包发送给B之后 , 链路中已经有了相关信息 , 所以正常通信了!