10.0.10.10/16与10.0.11.11/16通信
如上图所示:
PC1的IP地址为10.0.10.10/16
PC2的IP地址为10.0.11.11/16
运行结果:
经过测试,PC1和PC2能通信
我们知道这两个PC是相同网段的,一定能通信,那是因为我们同时看到了两个IP地址和子网掩码,我们能通过子网掩码判出两个IP地址是相同网段,但是PC机是怎么判断的呢?
分析:
测试连通性时用的Ping命令,命令后是对方主机的IP地址,也就是说根本没有注明对方主机的子网掩码。
所以无法判断对方主机是否与自己是同网段,因此PC1发包时,看自己的掩码是16位(前2个字节),也就是判断对方是否与自己同网段,只需要看前16位是否一致即可。
PC1的前2个字节是10.0,PC2的前2个字节也是10.0。所以PC1与PC2相通。
10.0.10.10/16与10.0.11.11/8通信
如上图所示:
PC1的IP地址为10.0.10.10/16
PC2的IP地址为10.0.11.11/8
运行结果:
经过测试,PC1和PC2能通信
分析:
根据子网掩码的作用来看,以上两个PC的子网掩码不同,网络位不同,并不在同一个网段,但为什么也能通信呢?
其实第一个案例我已经分析过了,用Ping测试连通性时,PC机是并不知道目标主机的子网掩码,也就不知道是否与自己在同一个网段,它只能通过自己的子网掩码来判断要检查对方的几个字节来判断是否为同一个网段。
PC1发包时知道自己的子网掩码是255.255.0.0 也就是自己的前2个字节是网络位,它就会检查目标主机的IP地址前2个字节是否与自己的IP地址前2个字节是否同一个网段(而不是对方的子网掩码)。
PC1的IP地址的前2个字节是10.0,PC2的IP地址的前2个字节也是10.0。所以PC1和PC2相通。
相反,PC2给PC1回包时,知道自己的子网掩码是255.0.0.0。也就是知道自己IP地址的第一个字节是网络位,则发包时会检查PC1的IP地址的第一个字节。自己的是10,PC1的也是10,所以通信。
不同网段通信
如上图所示:
PC1的IP地址为10.0.10.10/16
PC2的IP地址为10.1.11.11/8
运行结果:
经过测试,PC1和PC2不能通信
分析:
经过上面案例的分析,我们知道PC1发送数据时,知道自己的网络位是前2个字节,它会去检查目标IP的前两个字节。
自己是10.0,目标是10.1。不是同一个网段,当网段不同时,会先找自己的网关,但PC1并没有配置网关,所以PC1的数据根本就发不出去,报错“destination host unreachabel(目标主机不可达)”。
今天的分享就到这里啦~欢迎添加我的微信与我沟通技术哦!