admin管理员组文章数量:1516870
这两天做实验发现这个问题:
192.168.1.1/24(网络号:192.168.1.0)和192.168.1.2/23(网络号:192.168.0.0)这两个ip网络号不同,但是能相互ping通;同样的,192.168.1.2/23和192.168.0.1/24网络号相同,反倒不通。原因到底是什么?
Q1: 192.168.1.1/24(网络号:192.168.1.0)和192.168.1.2/23(网络号:192.168.0.0)这两个ip网络号不同,但是能相互ping通?
唯心主义错误,总是“ 我以为。。 。”,要学会“ 计算机以为。。。 ”
计算机 192.168.1.1 上 Ping 192.168.1.2 时。
在计算机 192.168.1.1 的眼里,首先判断被Ping的主机 192.168.1.2 是否和自己在相同的网段。
如果yes,只要ARP广播获取 192.168.1.2 的MAC地址,就可以通信了。
如果no,看看是否有gateway?
如果有,ARP广播获取 gateway 的MAC地址,将Ping包发给gateway,然后gateway再发给 192.168.1.1 。
如果没有gateway,意味着没有0.0.0.0/0这条神奇的路由,丢包,就Ping不通了。
这种问题写了不下10次以上了,总以为很简单,直到今天看了知乎热榜问题“
钱学森说「人就算再笨还能学不会微积分吗」,难道智力正常的人都能学会微积分吗?
有初等数学基础,微积分很好学,也能学会。可是如果 0.12 和 0.9 谁大谁小都能搞错,微积分还是不要学了,因为小学数学都没有学会。
希望这是最后一次写类似的答案,学会用计算机的视角学计算机。
如何判断被Ping的主机 192.168.1.2 和自己( 192.168.1.1 ) 是否在相同的网段呢?
很简单,用自己的 192.168.1.1 对应的网络掩码,是多少?
24
这个24其实代表的是24个2进制的1,写成:
11111111.11111111.11111111
在它右侧用8个二进制0补足,成32位。
11111111.11111111.11111111.00000000
将自己的IP = 192.168.1.1 ,也转换成二进制。
IP = 192.168.1.1 = 11000000.10101000.00000001.00000001
计算自己的Network ID :
将IP、掩码一一对齐,按bit位 与 操作,1 与 1 =1, 1 与 0 =0 , 0 与 0=0。
将计算得到的值放入 Network ID 对应的位。
IP =192.168.1.1 | 11000000.10101000.00000001.00000001 |
掩码= 255.255.255 =/24 | 11111111.11111111.11111111.00000000 |
Network ID | 11000000.10101000.00000001.00000000 |
计算对方的Network ID :
IP =192.168.1.2 | 11000000.10101000.00000001.00000010 |
掩码= 255.255.255 =/24 | 11111111.11111111.11111111.00000000 |
Network ID | 11000000.10101000.00000001.00000000 |
很显然2个 Network ID 完全相同,都是:
Network ID = 11000000.10101000.00000001.00000000 = 192.168.1.0
以上计算都是基于计算机192.168.1.1的视角!
以上计算都是基于计算机192.168.1.1的视角!
以上计算都是基于计算机192.168.1.1的视角!
重要的事情说三遍!
从192.168.1.1的视角看来,只知道自己的掩码=24,管你192.168.1.2/23掩码是23、24、32、或者随便什么,都不重要,因为压根不会用,也不知道。只用自己的掩码24来计算!
问题主一个问题,你知道要访问的8.8.8.8这个IP地址的掩码是多少吗?
你无法知道,管它是32、31、8,都不影响你访问它。因为你只用本地IP地址的掩码来判断8.8.8.8是否和自己一个网段。如果一个网段,直接通信。如果不是一个网段,使用gateway中继通信,就这么简单。
你不能让计算机192.168.1.1 用对方的192.168.1.2/ 23 的掩码 23 , 来计算192.168.1.2的 Network ID , 这是错误的源头! 这是你的视角!!!却不是计算机192.168.1.1的视角!
Q2:同样的,192.168.1.2/23和192.168.0.1/24网络号相同,反倒不通。原因到底是什么?
如果题主看懂第一个答案,这个问题就变成多余的了。
计算机的192.168.0.1视角:
自己的 Network ID = 192.168.0.0
对方的 Network ID = 192.168.1.0
很显然,2个Network ID不相同,需要 gateway 才能通信。
没有配置 gateway ,就无法通信,丢包,就是题主所谓的Ping不通。
作者|车小胖谈网络|公众号
版权声明:本文标题:穿越网络迷雾:理解192.168.1段的不同子网如何连通 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.betaflare.com/web/1771464447a3265823.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论