子网划分-详解为何两台主机网络掩码不一致却能ping通

30 篇文章 2 订阅
14 篇文章 1 订阅

 可参考:子网划分方法和例题详解_wj31932的博客-CSDN博客_ip子网划分方法

网络地址不同,没有网关,为什么直接能ping通?
    

看到网上有人问网络地址不同的两台pc,没配置网关,为啥能ping通?

Pc1的ip192.168.12.1/255.255.248.0,pc2的ip192.168.14.1/255.255.252.0,彼此网络地址不同,而且没有设置网关,直连能ping通,问为什么?

如上图,pc1去pingpc2,能够ping通。而且ttl为128没有减少,说明是直连路由通的。

同样pc2去ping pc1同样能ping通,而且ttl同样128,是直连路由。

为什么网络地址不同但能够ping通?

  首先我们必须明确,ip地址是用来标记一个硬件主机的,它用32位二进制表示,为了方便记忆,我们把32位分成四段,每段8位,为了记忆方便,我们用四个十进制数字加点来记忆。如192.168.10.25。

      ip地址用来寻址硬件设备,寻址就需要分拣,就像邮局处理邮件,每个邮局有个邮政编码,代表整个国家的邮局的唯一编号。其实就是把整个国家划分为了若干服务单位,每个邮局单位,管理一定区域的社区和单位。

      邮局处理辖区向外发送的信件,和上级局转发给本辖区的邮件。处理方式都是一样,有个算法,本地辖区的留下投送,非本地送到上级局处理。目的地址不明确的,退回。

      ip地址分拣就得给分拣的算法,给ip指明送到哪里去处理。ip地址有2^32种可能性,分拣的算法不可能把这么多ip列举处理,这样就需要一个把某一类ip和硬件设备对应起来,如ip地址前两段是222.90的分配给西安电信的pppoe服务器设备,222.100分配给西安联通的pppoe服务器,这两个地址最大有2^(32-16)个ip地址。这前16位就是一个ip地址集合,它和一个某一个运营商的一套设备对应。这样节点的分拣算法就大幅减小,前两段有数字,后面两段是集合里的设备ip,用网络位和掩码来表示,网络位用连续的二进制1表示,设备为主机位,用连续的0表示。若222.90.0.0/16。

    通信有网络,类似邮局的网络,有面向投递的基层邮局,处理上级投送过来的信件落地,有收本地发出邮件。有汇聚局,不面向具体客户,面向的基层邮局和上级市,省中心局。省中心局间有直接或者间接的中转业务。如陕西到周边省份有直接邮车发送,陕西到东北可能就发到北京,由北京中转发出。各地省公司再细化到市县,市县到乡镇。一封信发出就是先判断是否是本地落地,不是送到上级局去。是本地处理。上级判断是否本级下属,是送去下属,不是再送到外地。到目的地后再具体细化,最后找到具体收件人。

   如何判断是直连路由本地处理,就像打电话,一个8625518的号码,属于一个交换机局,交换局有86250000-86259999下所有的号码,当一个86255118拨打86255100时,号码分析就是截取被叫的前四位,和8625这几个数字比较,相同就是本地号码,就在本地处理。截取的位数,就相当于掩码,就是网络地址,一个电话局,有本地号码打出,也有外地号码打入,判断方法是一样的,是本地的就落地处理。

ip通信同样,要发一个数据包,首先判断是否本地能出来,就是按直连路由表判断是否本地网段?不是送到网关去,即走默认路由。收到一个包,首先要判断是否是自身ip是否要做落地处理,不是自己的是否查询出口剩余路由,是否要转出?

   所以,设备收到包,首先判断是否是直连路由,是要本地落地处理的,非直连路由就要送出到外部处理。

首先,要明白ping的过程,要根据目的ip地址确定是走直连路由还是其他(默认路由,网关的设置ip),就是要判断是否是同一网段(网络号是否相同)?是的话,查看mac地址缓存里是否有对应ip的mac地址,有的话,直接发包。没有的话,要发出arp请求来获取mac地址,得到响应后,组包发出。若不是直连路由,就检查是否网关配置,有的话,同样检查网关ip是否在同一网段,在,重复检查mac地址缓存表是否有网关的mac地址,有的话,直接组包,没有的话,发出arp请求,请求成功后,组包发出。没有网关设置,直接回显失败,没有获得对方mac地址,或者网关mac地址,回显失败。

对ping的响应,也是同样的过程,根据收到ping的request消息里的ip进行判断路由,进行和上面同样的过程。

其次,是否直连路由的判断是用pc自己的子网掩码去和目的ip相与,和自身网络地址相同,就是同一网段,不同就不是。

再者,掩码要借用主机位或者网络位,判断子网时要确定掩码在ip地址所在段,一个ip地址的网络号是ip地址和掩码相与得出的,掩码所在的那一段中的主机位若为m,代表主机的取值是2^m个,从0到2^m-1,主机位为全0是网络地址,主机位全1是广播地址。子网的个数是2^(8-m)个,取值从0到2^(8-m)-1,每一个值加上主机位为0的值就是网络地址的所在段值。这些子网都有各自的网络地址,每个子网可用的ip范围就是主机位非全0或者全1的ip,共2^m*后面几段的最多值-2个可用地址。

所以,划分子网就是要先确定子网地址在那一段变化,就是ip地址四段中,那一段既有网络地址位,还有主机位。该段的网络地址的可能值,就是网络地址变化。

然后确定主机位的可能性。

可用的ip地址范围是开始是网络地址+1,结束是广播地址-1。

  子网划分就是先确定在ip地址的四段里,那一段包括既包括网络地址位和还有主机地址位,要把256个分成均等的几块,每块大小多少?

    形象的比方就找出256张麻将牌,标上0到255,按从小到大排成一列,要把这一段分成几份,就是网络位m,分成2^m份,每份大小就是2^(8-m),每份的开头数字和结束数字就是对应网络地址和广播地址的第几段。如确定第二段既有网络位还有主机位,这个数字就是ip地址的第二段的网络地址,或广播地址。在第三段就是网络,广播地址第三段,第四段同样。子网地址就在那一段变化。

如192.168.205.201/19这个ip地址,掩码是255.255.224.0,我们以这个为例说明:

192.168.205.201  后两段用二进制来表示

192.168.1100  1101.1100  1001

255.255.1110  0000.0000  0000

192.168.1100  0000.0000  0000  网络地址是192.168.192.0

掩码是19,大于16小于24,所以ip第三段既有网络位还有主机位,就是第三段用了3位作为网络位,所以第三段第四段的网络位和主机位有下面的取值,最小值和最多值见下图:

1,确定既有网络位又有主机位的是ip地址的那一段

 方法:根据掩码进行判断,掩码有长度和ip形式两种。

a、掩码值为长度形式的,小于8,在第一段,大于8,小于16在第二段,大于16小于24在第三段,大于24,小于32,在第四段。如123.113.251.15/26,明显是在第四段变化。是8的倍数8,16,24,32这是一个标准abc地址,没有子网。

b、掩码是ip形式的,四段的。看是否有非0和255的数字,而且是128,192,224,240,248,252,254中的一个这些数字出现在ip第几段?这些数字出现在那一段,这段就是要找的变化段。因为,ip某一段,全主机位,掩码就是0,全网络位就是255,而变化段,肯定是偶数,而且大于等于128.
 

2、确定该段的主机位数n的数值,一个网络地址就代表主机位为全0到全1的2^n个ip地址,掩码=256-2^n

第一步中确定在第几段变化,令掩码长度为y,主机位n在第一段就8-y,第二段就是16-y,第三段就是24-y,第四段就是32-y
3、网络地址算法就是把网络位看成一个整体,计算出一个值k,k*2^n就是该段的值,广播地址就是(k+1)x2^n-1。因为网络位看成一个整体,权值就是2^n,而所有的主机位为0,所有网络位算出的值就是该段的值。广播地址主机位全1,+1就是后变成全0,网络位+1,所以广播地址就是下一个网络地址-1。
4、已知ip地址求网络地址就是该段ip/2^n,若是整数就是网络地址,若有余数且余数不为2^n-1就不是广播地址,就是合法可用地址。

如下图:n=5,2^5=32,网络位三位,取值000-111,0-7,kx2^5的取值0-224,k+1取值1-8,取值31-255

第三段bin        第四段bin   ip地址dec            第三段bin        第四段bin          ip地址dec             k  kx2^n

000   00000    0000 0000  192.168.0.0        000   11111       1111  1111       192.168.31.255     0        0

001   00000    0000 0000  192.168.32.0      001  11111       1111  1111        192.168.63.255    1      32

010   00000    0000 0000  192.168.64.0      010  11111       1111  1111        192.168.95.255    2      64

011   00000    0000 0000  192.168.96.0      011   11111       1111  1111        192.168.127.255  3     96

100   00000    0000 0000  192.168.128.0   100   11111       1111  1111       192.168.159.255   4   128

101   00000    0000 0000  192.168.160.0   101   11111       1111  1111       192.168.191.255   5   160

110   00000    0000 0000   192.168.192.0   110   11111       1111  1111       192.168.223.255  6    192

111   00000    0000 0000   192.168.224.0    111   11111       1111  1111       192.168.255.255  7    224

ip地址第三段网络位有3位, 第四段全是主机地址,所以子网数有2^3=8.

所以,掩码为19位的ip地址,有第三列的ip的最小值为子网号,第六列ip地址最大值作为广播地址。子网号的个数是2^3=8,可用主机数的为第三段主机位数5的平方乘以第四段的256,即2^5*256-2=2046个可用ip地址。192.168.205.201是在子网号192.168.192.0这个子网下。

Ping的过程分析:

pc1的ip 192.168.12.1/255.255.248.0,248就是二进制1111 1000就是掩码21位,n=3,第三段12/8取整为1,8*1=8,8*(1+1)-1=15,这样的子网号就是192.168.8.0,ip有效范围就是192.168.8.1~192.168.15.254。

Pc2的ip是192.168.14.1/255.255.252.0,252就是二进制1111 1100就是掩码22位,n=2,第三段14/2^2取整得3,3*2^2=12,4*2^2-1=15,这样子网号是192.168.12.0,ip的有效访问就是192.168.12.1~192.168.15.254。

ping命令执行时,要查路由表,直连路由优先,所以首先判断目的ip是否是和本身ip在同一网络地址下,用自身的子网掩码和目的ip去做与运算,判断结果是否与自身网络地址相同,192.168.14.1&&255.255.248.0=192.168.8.0,所以认为是同一网段,直接发出arp请求,pc2会响应目的ip是它自己的arp请求,同时记录pc1的mac地址和ip的对应关系。pc1会得到pc2的mac地址,ping的request消息会发出,pc2收到后,同样去查自身路由表,直连路由优先级高,会判断收到request消息请求的源ip和自身ip是否在同一网段, 192.168.14.1&&255.255.252.0=192.168.12.0,和自身网络地址相同,所以发出ping的应答reply消息,会回pc7的ping的request请求,mac地址缓存表里已经有pc1的mac,所以直接发包,而且ttl不会减1。

Pc2去ping pc1的过程正好和上面的相反,pc2去查自己的路由表,直连路由优先,发现pc1的ip和自己在同一网段192.168.12.0子网,就会发出arp查询,请求pc1 192.168.12.1的mac地址,得到后直接组包发出,pc1收到pc2的ping的request消息,查询路由表,发现同一网段,在192.168.8.0/21这个子网中,会响应ping的请求,发出reply消息。

结论:

之所以能ping通是因为两个子网的合法ip有交叉,彼此都在自己的子网中。判断是否在同一网段要根据自己的掩码与目的ip来与来计算,子网号就是一个网络地,每个网络地址下有对应的一个合法的ip段,在这个ip段的都是同一网段。不用发送到网关。

arp的查询的发出,一般是直连路由的目的ip才会发出arp查询消息,目的ip要么是同网段,要么是同网段的网关ip。回arp请求消息,一般只检查是否是本端口配置的有的ip地址,有的话,就回arp响应,告知自己的mac地址。

  • 14
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值