18、【Ubuntu】【远程开发】技术方案分析:私网ip掩码
【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除
背景
上篇 blog
【Ubuntu】【远程开发】技术方案分析:公私网ip
远程办公里面关于公网 IP 和局域网 IP 的一个概念,下面继续分析
远程开发
上篇 blog 提到了局域网常用地址包括
10.0.0.0 ~ 10.255.255.255(掩码 255.0.0.0 或 /8)
172.16.0.0 ~ 172.31.255.255(掩码 255.240.0.0 或 /12)
192.168.0.0 ~ 192.168.255.255(掩码 255.255.0.0 或 /16)
下面继续说下这里的掩码含义
这里的掩码和 /8,/12、/16 是描述 IP 地址网络范围的核心概念,它们都用于定义一个 网络前缀,用来告诉计算机或路由器,在这个 IP 地址中,哪一部分是网络地址,哪一部分是主机地址
子网掩码(比如上面的 255.0.0.0)和 IP 地址一样,由 4 个 8 位数组成(共 32 位),其中掩码中的 1 表示网络部分,0 表示主机部分,这里把 255.0.0.0 转成二进制可以得到
255.0.0.0 = 11111111.00000000.00000000.00000000
可以看到,前 8 位是 1,表示这 8 位是网络地址,后 24 位是 0,表示这 24 位可以分配给主机或设备,所以网络地址是 10.x.x.x 中的 10 固定不变,主机地址范围是后面的 24 位,主机地址范围可以变化,从 10.0.0.0 到 10.255.255.255,可以支持约 1677 万台设备的内网 IP 分配

另外,上面的 /8 和 255.0.0.0 含义是一样的,表示前 8 位是网络前缀,255.0.0.0 是掩码写法,/8 是 CIDR(Classless Inter-Domain Routing)无类别域间路由表示法,是对子网掩码的简洁写法

CIDR 中 /N 表示 IP 地址的前 N 位是网络前缀,剩下的 (32-N) 位用于主机和设备,比如上面的
/8对应二进制11111111.00000000.00000000.00000000,掩码255.0.0.0,前 8 位是网络,可支持主机数量 2²⁴ 约 1677 万,主要用于大型企业内网(公司内网环境一般以10开头)/12对应二进制11111111.11110000.00000000.00000000,掩码255.240.0.0,前 12 位是网络

可支持主机数量 2²⁰ 约 104 万,用于中大型网络/16对应二进制11111111.11111111.00000000.00000000,掩码255.255.0.0,前 16 位是网络,主机数量 2¹⁶ 约 65536 个地址,一般家庭,小型办公室很常见(比如192.168.1.x或192.168.0.x)
再补充个公网 IP 和私网 IP 的形象化例子,公网 IP 就像家里的街道地址,快递员(互联网数据)可以根据这个地址把快递送到家附近的菜鸟驿站,局域网 IP 就像家里的具体的楼栋号和房间号(如 A 栋 XXX 室)
- 只有公网 IP,没有局域网 IP 时(网络地址转换),快递员只能把快递送到菜鸟驿站,然后由于没人接收,这个快递就被返件(数据被丢弃)了
- 只有局域网 IP,没有公网 IP 时,这就好比网上买个东西,地址填的 A 栋 XXX 室,全世界的 A 栋这么多,天知道要送往哪个 A 栋
- 只有当公网 IP 和局域网 IP (网络地址转换)同时具备时,快递员才能将快递(互联网数据)准确无误地送到家门口
上面提到了网络地址转换机制(NAT,Network Address Translation),举个例子
- 当家里的某台设备(比如 IP
192.168.1.x)要访问某个网站时,数据包先发给路由器 - 路由器将源 IP(是局域网 IP) 替换为自己的公网 IP,并记录下这个转换关系
- 网站返回数据时,发回路由器的公网 IP
- 路由器根据之前的记录,将数据转发给正确的局域网设备,比如上面的
192.168.1.100
示意图如下

ok,先到这里,下篇 blog 继续
