🌐 IP地址与子网掩码
240822,有几位同学在龙大的选课培训直播间提出几个网络问题 (见下图)。这时候大学尚未开学,且10.20.219.31 显然是个私有 IP 地址,不可能从外网直接访问。也就是说,只有当网络状态处于 10.0.0.0(即龙大的子网地址)时才可能访问。
全球范围内,局域网(LAN)中常用的私有 IP 地址前缀(前一到两组十进制数)有以下几种,这些前缀是根据 RFC 1918 定义的:
-
10.0.0.0/8 - 覆盖范围为 10.0.0.0 到 10.255.255.255。这是一个非常大的地址空间,通常用于大型企业网络。(你龙专竟然用这么大的网络)
-
172.16.0.0/12 - 覆盖范围为 172.16.0.0 到 172.31.255.255。这个地址空间相对较小,常见于中型网络。
-
192.168.0.0/16 - 覆盖范围为 192.168.0.0 到 192.168.255.255。这是最常见的家用路由器和小型网络中使用的地址空间。 这些IP地址前缀是私有的,不能在互联网中路由,主要用于内网通信。
以下以我的家用路由器局域网为例。“IP 地址”是私有的,不能在互联网中路由,主要用于内网通信。那么为什么 IP 地址是“软地址”?为什么非要折腾一个出 MAC 地址?显然,仅仅靠192.168后面几位数字,不可能在整个互联网上不重复。其中192.168.0.0是网络地址;192.168.255.255是广播地址,都不能用做主机地址,那也就是说一共只有2^8-2=254个不同地址名。所以肯定需要一个更长的数字编码来表示一个绝不重复的地址,所以有 MAC 地址。
所谓子网掩码就是帮助路由器知道一个网络地址是否属于其下的子网的。一个主机的IP地址,比如192.168.50.137中,192.168.50是网络部分,而.137是主机部分,因为我的私有网络地址为192.168.50.0,所以在子网中前缀为192.168.50的网络地址都属于这个子网内,.137可以被隐去。这时候子网掩码255.255.255.0就起作用了,因为二进制运算逻辑AND中,1 AND 1 = 1,1 AND 0 = 0,0 AND 0 = 0,所以255.255.255.0 与 IP地址进行 AND 运算时,11111111.11111111.11111111.0 会把前三位数字原封不动保留,而把最后一位同一变成 0。这样,所有IP地址属于这个路由器下的设备在子网掩码计算后都是192.168.50.0。这也就解释了为什么在龙大的网络10.0.0.0下的任意一台设备都可以路由到10.20.219.31,而从外网不行了。