IP 地址与子网划分

1. IP 地址是什么

1.1 类比

IP 地址就像门牌号。

复制代码
现实世界:  北京市 → 朝阳区 → 某某街 → 42号
IP 世界:   192  .  168  .  104  .  20

每台联网设备都需要一个 IP 地址来标识自己,就像每栋楼需要门牌号才能收快递。

1.2 IPv4 的格式

IPv4 地址由 4 个数字 组成,每个数字范围是 0~255,用点分隔:

复制代码
192.168.104.20
 │    │   │   │
 │    │   │   └── 第四段(主机号的一部分)
 │    │   └────── 第三段
 │    └────────── 第二段
 └─────────────── 第一段

每个数字实际上是 8 位二进制(8 bit = 1 Byte),所以 IPv4 总共是 32 位。

1.3 公网 IP vs 内网 IP

复制代码
公网 IP(全球唯一):
  119.8.178.32          ← 你公司新加坡出口
  8.8.8.8               ← Google DNS
  可以在互联网上直接访问

内网 IP(局域网内使用,可以重复):
  192.168.x.x           ← 最常见的家庭/办公内网
  10.x.x.x              ← 大型企业内网
  172.16.x.x ~ 172.31.x.x  ← 中型企业内网
  不能直接被外网访问

为什么要分公网和内网?

IPv4 总共只有约 43 亿个地址,不够全球设备用。所以大家在内网共享,通过 NAT(后面会讲)共用一个公网 IP 出去。你公司几十台电脑,对外只显示一个新加坡 IP,就是这个原理。

1.4 特殊 IP 地址

复制代码
127.0.0.1         ← localhost,自己访问自己
0.0.0.0           ← 代表"所有地址",服务器监听时常用
255.255.255.255   ← 广播地址,发给子网内所有设备
169.254.x.x       ← DHCP 分配失败时自动分配的,说明网络有问题

2. 二进制------理解 IP 的钥匙

要真正理解子网掩码,必须懂二进制。不难,花 5 分钟就行。

2.1 十进制 vs 二进制

复制代码
十进制    二进制
  0    =  00000000
  1    =  00000001
  2    =  00000010
  3    =  00000011
  4    =  00000100
...
128    =  10000000
192    =  11000000
254    =  11111110
255    =  11111111

位置:    7    6    5    4    3    2    1    0
值:    128   64   32   16    8    4    2    1

例子:192 怎么算?

复制代码
192 = 128 + 64 = 11000000

  128  64  32  16   8   4   2   1
   1    1   0   0   0   0   0   0  = 192

2.2 把 IP 地址写成二进制

复制代码
192.168.104.20 的二进制:

192     = 11000000
168     = 10101000
104     = 01101000
20      = 00010100

完整:11000000.10101000.01101000.00010100

2.3 为什么每段最大 255?

复制代码
8 位全部为 1:11111111 = 128+64+32+16+8+4+2+1 = 255
所以每段最大值就是 255

3. 子网掩码------划分网络的刀

3.1 核心概念

一个 IP 地址其实包含两部分信息:

复制代码
IP 地址 = 网络号 + 主机号
          ~~~~~~   ~~~~~~
          你在哪个小区   你是小区里的几号楼

子网掩码就是那把刀,决定了从哪里切开------哪些位是网络号,哪些位是主机号。

复制代码
规则:
  掩码中 1 的位 → 对应 IP 中的"网络号"
  掩码中 0 的位 → 对应 IP 中的"主机号"

3.2 最常见的例子:255.255.255.0

复制代码
掩码:255  .255  .255  .  0
二进制:11111111.11111111.11111111.00000000
       ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^
       网络号    网络号    网络号    主机号

IP:   192  .168  .104  . 20
      ───────────────────  ──
         网络号部分         主机号

网络号:192.168.104(前 24 位)
主机号:20(后 8 位)

意味着什么?

  • 网络号相同的设备在同一个子网,可以直接通信
  • 192.168.104.1 和 192.168.104.20 → 网络号都是 192.168.104 → ✅ 同一子网
  • 192.168.104.1 和 192.168.105.20 → 网络号分别是 104 和 105 → ❌ 不同子网

3.3 你公司的例子:255.255.254.0

复制代码
掩码:255  .255  .254  .  0
二进制:11111111.11111111.11111110.00000000
       ^^^^^^^^ ^^^^^^^^ ^^^^^^^ ^^^^^^^^^
       网络号    网络号   网络号↑  主机号
                               │
                         注意!这里最后一位是 0
                         属于主机号部分

前 23 位 是网络号,后 9 位是主机号。

现在来看为什么 104 和 105 在同一个子网:

复制代码
104 的二进制:01101000
105 的二进制:01101001
                    ^
                    只有最后一位不同

掩码 254 = 11111110
           ^^^^^^^
           这 7 位是网络号部分

104: 0110100 | 0    ← 网络号 0110100,主机号部分的起始位 0
105: 0110100 | 1    ← 网络号 0110100,主机号部分的起始位 1
     ^^^^^^^
     网络号相同!

所以 192.168.104.x 和 192.168.105.x 属于同一个子网

3.4 AND 运算------判断是否同子网

计算机用**按位与(AND)**来提取网络号:

复制代码
AND 规则:1 AND 1 = 1,其他都 = 0

计算 192.168.104.20 的网络号:
  IP:    11000000.10101000.01101000.00010100
  掩码:  11111111.11111111.11111110.00000000
  AND:   11000000.10101000.01101000.00000000
  结果 = 192.168.104.0  ← 网络号

计算 192.168.105.20 的网络号:
  IP:    11000000.10101000.01101001.00010100
  掩码:  11111111.11111111.11111110.00000000
  AND:   11000000.10101000.01101000.00000000
  结果 = 192.168.104.0  ← 网络号

两个网络号相同 → 同一子网 ✅

如果掩码是 255.255.255.0:

复制代码
计算 192.168.105.20 的网络号:
  IP:    11000000.10101000.01101001.00010100
  掩码:  11111111.11111111.11111111.00000000
  AND:   11000000.10101000.01101001.00000000
  结果 = 192.168.105.0  ← 网络号

192.168.104.0 ≠ 192.168.105.0 → 不同子网 ❌
网关 192.168.104.1 不在你的子网里,找不到它,上不了网

3.5 一个子网能容纳多少台设备?

复制代码
公式:可用主机数 = 2^(主机号位数) - 2

为什么 -2?
  全 0 → 网络地址(代表这个子网本身)
  全 1 → 广播地址(发给子网内所有人)
  这两个不能分配给设备

例子:
  /24(255.255.255.0):  主机号 8 位  → 2^8 - 2 = 254 台
  /23(255.255.254.0):  主机号 9 位  → 2^9 - 2 = 510 台
  /16(255.255.0.0):    主机号 16 位 → 2^16 - 2 = 65534 台

你公司用 /23,所以同一个子网最多可以放 510 台设备。

3.6 子网的地址范围

你公司子网(192.168.104.0/23)的完整范围:

复制代码
网络地址:  192.168.104.0      ← 不可分配
第一个可用: 192.168.104.1      ← 你们的网关
  ...
            192.168.104.255
            192.168.105.0
  ...
最后一个可用:192.168.105.254
广播地址:  192.168.105.255    ← 不可分配

可用 IP:192.168.104.1 ~ 192.168.105.254(共 510 个)

4. 网关------子网的出口大门

4.1 是什么

网关(Gateway)是子网通往外部世界的唯一出口。

复制代码
你要访问 8.8.8.8(Google DNS):

1. 电脑先算:8.8.8.8 和我在同一子网吗?
   我的网络号:192.168.104.0
   8.8.8.8 AND 掩码 → 明显不在同一子网

2. 不在同一子网 → 把数据包交给网关
   "网关大哥,这个包我发不出去,你帮我转发"

3. 网关收到包,通过自己的路由表决定下一步怎么走

4.2 同子网 vs 跨子网通信

复制代码
同子网通信(直接通信):
  192.168.104.20 → 192.168.104.30
  直接通过交换机转发,不需要网关

跨子网通信(必须经过网关):
  192.168.104.20 → 8.8.8.8
  192.168.104.20 → 192.168.200.1(另一个子网)
  都必须先发给网关 192.168.104.1,由它转发

4.3 为什么网关必须在你的子网内

复制代码
你的 IP:    192.168.105.20
掩码:       255.255.255.0(/24)
网关:       192.168.104.1

电脑想发包给网关,先判断:网关在我的子网内吗?
  我的网络号:192.168.105.0
  网关网络号:192.168.104.0
  不同子网!

问题来了:要到不同子网得通过网关,但网关本身就不在我的子网...
→ 死循环,完全无法通信 💀

所以掩码必须改成 255.255.254.0(/23),让 104 和 105 在同一子网
这样网关 192.168.104.1 就在你的子网内了

5. CIDR 表示法

5.1 什么是 CIDR

CIDR(无类别域间路由)是一种简写方式,用 /数字 表示掩码中有多少个 1:

复制代码
192.168.104.0/24

  /24 = 前 24 位是 1
  = 11111111.11111111.11111111.00000000
  = 255.255.255.0

5.2 常见对照

复制代码
/8   = 255.0.0.0          = 16,777,214 台主机
/16  = 255.255.0.0        = 65,534 台主机
/23  = 255.255.254.0      = 510 台主机     ← 你公司
/24  = 255.255.255.0      = 254 台主机     ← 最常见
/25  = 255.255.255.128    = 126 台主机
/26  = 255.255.255.192    = 62 台主机
/27  = 255.255.255.224    = 30 台主机
/28  = 255.255.255.240    = 14 台主机
/30  = 255.255.255.252    = 2 台主机       ← 点对点链路
/32  = 255.255.255.255    = 1 台主机       ← 单个地址

5.3 快速心算技巧

复制代码
主机数 = 2^(32 - CIDR位数) - 2

/24 → 2^(32-24) - 2 = 2^8 - 2 = 254
/23 → 2^(32-23) - 2 = 2^9 - 2 = 510
/26 → 2^(32-26) - 2 = 2^6 - 2 = 62

6. 子网划分实战

6.1 场景:把一个 /24 切成多个小子网

公司分了 4 个部门,每个最多 50 人,你有一个 192.168.1.0/24。

思路:

复制代码
每组最多 50 人 → 需要至少 50+2=52 个地址(加上网络地址和广播地址)
2^6 = 64 ≥ 52 ✅  → 主机号需要 6 位
网络号位数 = 32 - 6 = 26 → 每组是 /26
一个 /24 可以切出 2^(26-24) = 4 个 /26,刚好 4 个部门

划分结果:

复制代码
子网 1(开发部):  192.168.1.0/26
  范围:192.168.1.1 ~ 192.168.1.62
  网关:192.168.1.1
  广播:192.168.1.63

子网 2(设计部):  192.168.1.64/26
  范围:192.168.1.65 ~ 192.168.1.126
  网关:192.168.1.65
  广播:192.168.1.127

子网 3(市场部):  192.168.1.128/26
  范围:192.168.1.129 ~ 192.168.1.190
  网关:192.168.1.129
  广播:192.168.1.191

子网 4(行政部):  192.168.1.192/26
  范围:192.168.1.193 ~ 192.168.1.254
  网关:192.168.1.193
  广播:192.168.1.255

6.2 怎么快速算子网范围

技巧:看掩码最后一个不是 255 的那段

复制代码
掩码 255.255.255.192 → 看第四段
  256 - 192 = 64 → 每个子网间隔 64
  子网:.0, .64, .128, .192

掩码 255.255.254.0 → 看第三段
  256 - 254 = 2 → 每个子网间隔 2
  子网:.0.0, .2.0, .4.0, .6.0 ...
  你公司 104 和 105 就是一组(间隔 2)

掩码 255.255.255.0 → 看第三段
  256 - 255 = 1 → 每个子网间隔 1
  104 和 105 是两个不同子网

7. 你公司网络的完整解析

7.1 你的网络配置

复制代码
电脑 1(之前的配置):
  IP:     192.168.104.20
  掩码:   255.255.255.0  (/24)
  网关:   192.168.104.1

电脑 2(后来改的):
  IP:     192.168.105.20
  掩码:   255.255.254.0  (/23)
  网关:   192.168.104.1

7.2 为什么两种配置都能用

配置 1:IP 在 104 段,掩码 /24

复制代码
子网范围:192.168.104.0 ~ 192.168.104.255
网关 192.168.104.1 在这个范围内 → ✅ 能上网

配置 2:IP 在 105 段,掩码 /23

复制代码
子网范围:192.168.104.0 ~ 192.168.105.255
网关 192.168.104.1 在这个范围内 → ✅ 能上网

7.3 如果配错了会怎样

复制代码
错误配置:IP 192.168.105.20 + 掩码 255.255.255.0
子网范围:192.168.105.0 ~ 192.168.105.255
网关 192.168.104.1 不在范围内 → ❌ 完全断网

7.4 你公司的 IP 分配逻辑

网管用了 /23 把 104 和 105 合成一个大子网,可能的分配方式:

复制代码
192.168.104.1        ← 网关(代理服务器)
192.168.104.2~254    ← 第一批工位(约 253 台)
192.168.105.1~254    ← 第二批工位(约 254 台)

总共可容纳 510 台设备,一层楼或一个部门绰绰有余

7.5 你那四个网络适配器的作用

从截图里看到你有 4 个网络适配器:

复制代码
1. 本地连接 --- Array Networks TAP-Windows Adapter    [禁用]
   → VPN 虚拟网卡(TAP 设备),Array SSL VPN 创建的

2. 以太网 --- Array Networks SSL VPN Adapter           [启用]
   → SSL VPN 客户端的虚拟网卡
   → 你可能同时还有一套 VPN 可以用

3. 以太网 3 --- Intel I225-T1                          [未连接/禁用]
   → 第二个物理网口(2.5G 网卡),没插线

4. 以太网 2 --- Intel I219-LM                          [启用,在用]
   → 你当前使用的物理网口(千兆)
   → IP: 192.168.105.20
   → 链接速度 1000 Mbps,已运行 12 小时 50 分钟

你目前的流量走的是 以太网 2(物理网卡)→ 交换机 → 代理网关 → 新加坡。


8. 常见子网速查表

8.1 完整对照表

复制代码
CIDR   掩码               主机数      典型用途
────   ────               ──────      ────────
/8     255.0.0.0          16,777,214  超大企业内网(10.0.0.0/8)
/12    255.240.0.0        1,048,574   大型数据中心
/16    255.255.0.0        65,534      中型企业(172.16.0.0/16)
/20    255.255.240.0      4,094       云服务 VPC 子网
/21    255.255.248.0      2,046       大型办公楼
/22    255.255.252.0      1,022       中型办公楼
/23    255.255.254.0      510         你公司 ←
/24    255.255.255.0      254         最常见,家庭/小办公室
/25    255.255.255.128    126         小型办公室
/26    255.255.255.192    62          部门子网
/27    255.255.255.224    30          小组/会议室
/28    255.255.255.240    14          服务器区
/29    255.255.255.248    6           极小子网
/30    255.255.255.252    2           路由器之间的点对点链路
/31    255.255.255.254    2*          点对点(无广播,特殊)
/32    255.255.255.255    1           单台主机路由

8.2 掩码中不是 255 和 0 的那些数字

只有这几个值会出现在子网掩码中:

复制代码
二进制        十进制    对应 CIDR 位
00000000  =   0       +0 位
10000000  =   128     +1 位
11000000  =   192     +2 位
11100000  =   224     +3 位
11110000  =   240     +4 位
11111000  =   248     +5 位
11111100  =   252     +6 位
11111110  =   254     +7 位
11111111  =   255     +8 位

掩码必须是连续的 1 后面跟连续的 0
所以 255.255.253.0 这种是非法的(253 = 11111101,中间有个 0)

9. 进阶:VLAN、NAT、DNS

9.1 VLAN --- 虚拟局域网

问题:100 台电脑插在同一个交换机上,默认都在同一个广播域。广播风暴会影响性能,而且安全隔离差。

解决:在交换机上划分 VLAN,逻辑上把一个物理网络分成多个虚拟网络。

复制代码
物理上都在同一个交换机:
  ┌─────────────────────────┐
  │        交换机             │
  │  口1  口2  口3  口4  口5  │
  └─┬────┬────┬────┬────┬───┘
    │    │    │    │    │
   PC1  PC2  PC3  PC4  PC5

逻辑上被 VLAN 隔离:
  VLAN 10(开发部): 口1, 口2    → 192.168.10.0/24
  VLAN 20(市场部): 口3, 口4    → 192.168.20.0/24
  VLAN 30(访客)  : 口5         → 192.168.30.0/24

VLAN 10 和 VLAN 20 之间不能直接通信
必须通过三层交换机或路由器转发

你公司可能的情况 :

如果你们有多个部门,网管可能在交换机上划了 VLAN,每个 VLAN 对应一个子网。你所在的 VLAN 分配了 192.168.104.0/23 这个子网。

9.2 NAT --- 网络地址转换

问题:内网 IP(192.168.x.x)不能直接上公网。

解决:NAT 设备(路由器/防火墙)在内网 IP 和公网 IP 之间做翻译。

复制代码
你发一个请求到 claude.ai:

发送时(SNAT,源地址转换):
  你的电脑:     源 IP 192.168.105.20 : 端口 54321
       ↓ 经过代理网关
  华为云中国:   源 IP 123.60.230.1 : 端口 xxxxx
       ↓ 经过隧道
  华为云新加坡: 源 IP 119.8.178.32 : 端口 yyyyy  ← claude.ai 看到的
       ↓
  claude.ai 收到请求

返回时(DNAT,目标地址转换):
  claude.ai 回复到 119.8.178.32:yyyyy
       ↓
  华为云新加坡 → 隧道 → 华为云中国 → 你的电脑 192.168.105.20:54321

你的电脑始终以为自己在直接和 claude.ai 通信
实际上中间经过了至少两层 NAT

NAT 的类型:

复制代码
SNAT(源 NAT):    改写源 IP,让内网设备能出去
DNAT(目标 NAT):  改写目标 IP,让外网请求能进来(端口映射)
MASQUERADE:       动态 SNAT,适用于公网 IP 会变的情况

9.3 DNS --- 域名解析

问题:人记不住 IP 地址。

解决:DNS 把域名翻译成 IP。

复制代码
你输入 claude.ai

1. 电脑先查本地缓存:知道 claude.ai 的 IP 吗?不知道
2. 问 DNS 服务器(你配的 8.8.8.8):claude.ai 的 IP 是什么?
3. 8.8.8.8 经过递归查询,返回:104.18.xx.xx
4. 电脑拿到 IP,开始建立连接

你配的 8.8.8.8 的问题 :

你在中国,DNS 查询要先到 Google(美国),绕了一大圈。而且你的流量走的是新加坡出口,所以 DNS 解析结果可能指向新加坡/亚太的服务器,这其实反而有利于降低延迟。

常用 DNS:

复制代码
8.8.8.8        ← Google(全球通用)
1.1.1.1        ← Cloudflare(速度快)
223.5.5.5      ← 阿里云(国内快)
119.29.29.29   ← 腾讯 DNSPod(国内快)

9.4 DHCP --- 自动分配 IP

你的配置是手动的("使用下面的 IP 地址"),但也可以设成"自动获得 IP 地址":

复制代码
手动(静态 IP):
  优点:IP 固定,不会变
  缺点:要手动配置,改错了就断网
  适用:服务器、网关、打印机

自动(DHCP):
  优点:即插即用,自动分配
  缺点:IP 可能会变(租期到了换一个)
  适用:普通办公电脑、手机、笔记本

你公司可能更喜欢手动分配,方便管理哪个工位用哪个 IP。

9.5 ARP --- 找到同子网设备的物理地址

复制代码
你要发数据给 192.168.104.1(网关),但网线上传输的不是 IP,
而是 MAC 地址(物理地址,如 AA:BB:CC:DD:EE:FF)

流程:
1. 你的电脑广播:谁是 192.168.104.1?请把你的 MAC 地址告诉我
2. 网关回复:我是 192.168.104.1,我的 MAC 是 XX:XX:XX:XX:XX:XX
3. 你的电脑记住这个映射(ARP 缓存),然后用这个 MAC 发数据帧

查看你电脑的 ARP 缓存:
  Windows: arp -a
  这能看到你子网内所有设备的 IP ↔ MAC 对应关系

为什么同子网才能直接通信? 因为 ARP 广播只在子网内有效。跨子网的设备收不到你的 ARP 请求,你永远找不到它的 MAC 地址。所以跨子网必须通过网关。


附录:概念关系总图

复制代码
你的电脑想访问 claude.ai,完整链路:

① DNS 解析
   电脑 → DNS(8.8.8.8) → 得到 claude.ai 的 IP

② 判断目标是否在子网内
   claude.ai 的 IP AND 子网掩码 ≠ 我的网络号
   → 不在子网内 → 发给网关

③ ARP 找网关的 MAC 地址
   广播:谁是 192.168.104.1?
   网关回复:我是,MAC 是 XX:XX:XX:XX:XX:XX

④ 数据包发给网关
   源 IP: 192.168.105.20
   目标 IP: 104.18.xx.xx (claude.ai)

⑤ 网关做 NAT + 代理
   流量通过 VPN 隧道 → 华为云中国 → 华为云新加坡

⑥ 从新加坡出口访问 claude.ai
   源 IP 已变成 119.8.178.32(新加坡公网 IP)

⑦ claude.ai 返回响应,原路返回到你的电脑
相关推荐
重生之我在番茄自学网安拯救世界14 小时前
AI 开发者日报 第1期(本周精选)| 插件市场投毒、智能体搞出“官僚饥荒村”,十年前的 CNN 打赢大模型
人工智能·网络安全·大模型·ai编程·智能体
最强小杰21 小时前
minimax-m3 突然报 HTTP 529 怎么办?连续重试为何更难恢复,退避时间该怎么算?
网络·网络协议·http·ai
m0_6399069421 小时前
TCP与UDP协议详解|原理、区别、粘包拆包、应用场景,面试总
网络协议·tcp/ip·udp
QianhangQianping1 天前
WebSocket实时推送+ HTTP 定时轮询:一块大屏两套取数怎么不打架
前端·websocket·网络协议·http·低代码·架构·数据可视化
m0_738120721 天前
JWT 安全从入门到实战:六种典型攻击场景解析
前端·网络·python·安全·网络安全
车载中间件通信1 天前
[TC8测试]TCP_FLAGS_INVALID_13_Flag SYN,ACK
网络·网络协议·tcp/ip
车载中间件通信1 天前
[TC8测试]TCP_FLAGS_PROCESSING_06
数据库·网络协议·tcp/ip·中间件·tc8
重生之我在番茄自学网安拯救世界1 天前
AI开发者日报 第2期 | Anthropic零 Rust 团队靠Claude重写核心 API,CPU 降 40–50%
人工智能·网络安全·大模型·ai编程·claude