为什么访问不了同事的服务器或者ping不通地址了?
遇到问题:有部分电脑能够访问后端发出来的接口地址,部分电脑又无法访问,有可能是网络地址不在一个子网上。
网络地址 = ipv4地址 & 子网掩码 (&:与运算)
解决问题:改变子网掩码地址让两台电脑处于同一个网络地址上
详细案例说明 :
电脑A
ipv4地址 172.16.1.68
子网掩码 255.255.255
网关是 172.16.0.1
电脑C
ipv4地址 172.16.0.218
子网掩码 255.255.252
网关172.16.0.1
电脑A (原始掩码255.255.255.0):
网络地址计算:172.16.1.68 & 255.255.255.0 = 172.16.1.0/24
因此,电脑A认为它所在的网络是172.16.1.0/24。
电脑C (掩码255.255.252.0):
网络地址计算:172.16.0.218 & 255.255.252.0
172.16.0.218:10101100.00010000.00000000.11011010
按位与:10101100.00010000.00000000.00000000 -> 172.16.0.0/22
所以电脑C认为它所在的网络也是172.16.0.0/22。
导致问题:
因此C电脑给出地址,A电脑可能无法访问。
最直接的反应就是: C电脑给出后端接口或者前端项目地址,A电脑无法访问C电脑的后端接口或者前端项目地址
解决方法
想要两台电脑处于同一网络地址,可以把c电脑的子网掩码改为255.255.255.0
然后C电脑的网络地址 : 172.16.0.218 & 255.255.255.0 = 172.16.0.0
因此,电脑C认为它所在的网络是172.16.0.0/24。
拓展
与运算
IP地址:172.16.0.218
子网掩码:255.255.255.0(/24)
运算过程(可以把ip地址和子网掩码丢给AI去运算)
-
IP地址
172: 10101100
16: 00010000
0: 00000000
218: 11011010
-
子网掩码:255.255.255.0
255: 11111111
255: 11111111
255: 11111111
0: 00000000
-
与运算
IP: 10101100.00010000.00000000.11011010
Mask: 11111111.11111111.11111111.00000000
AND: -------------------------------------------------
10101100.00010000.00000000.00000000
- 转换为十进制:
10101100 = 172
00010000 = 16
00000000 = 0
00000000 = 0
网络地址:172.16.0.0