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.010.255.255.255,可以支持约 1677 万台设备的内网 IP 分配

另外,上面的 /8255.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.x192.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
【Ubuntu】【远程开发】技术方案分析:远程桌面

相关推荐
cccccc语言我来了2 小时前
(Linux (6):从包管理到工具探索,构建系统操作基础认知)
linux·运维·服务器
好望角雾眠2 小时前
第四阶段C#通讯开发-9:网络协议Modbus下的TCP与UDP
网络·笔记·网络协议·tcp/ip·c#·modbus
ben9518chen2 小时前
嵌入式Linux C语言程序设计九
linux·c语言
颜大哦3 小时前
linux安装mysql
linux·运维·mysql·adb
来知晓4 小时前
Linux:WSL内存空间管理之清完内存C盘可用空间不增问题解决
linux·运维·服务器
大聪明-PLUS4 小时前
嵌入式 Linux 初学者指南 – 第 2 部分
linux·嵌入式·arm·smarc
天一生水water4 小时前
ubuntu使用毫秒镜像方式安装docker mysql
ubuntu·阿里云·docker
feng_blog66884 小时前
【信创系统】统信UOS Linux4.19+libbpf开发ebpf程序实现文件操作的实时监控
linux·ebpf
虚伪的空想家6 小时前
华为A800I A2 arm64架构鲲鹏920cpu的ubuntu22.04 tls配置直通的grub配置
ubuntu·华为·架构·虚拟化·kvm·npu·国产化适配