2026-02-18•ToolBox Team
网络基础与 IP 子网计算实战
🔧 返回工具箱 | Back to Tools
浏览所有工具 | View All Toolsnetworkingipsubnetinfrastructure
网络基础与 IP 子网计算实战
网络基础是所有后端工程师必须掌握的知识。无论是配置服务器、部署应用还是排查网络问题,都离不开对 IP、子网、路由等概念的理解。
1. IP 地址基础
IPv4 地址结构
IPv4 地址由 4 个字节(32 位)组成,通常用点分十进制表示:
192.168.1.100
192 = 11000000 (第 1 字节)
168 = 10101000 (第 2 字节)
1 = 00000001 (第 3 字节)
100 = 01100100 (第 4 字节)
IP 地址分类
虽然这个分类已过时(现已采用 CIDR),但仍需了解:
| 类别 | 范围 | 主机数 | 网络数 | 用途 |
|---|---|---|---|---|
| A | 1.0.0.0 - 126.255.255.255 | 16,777,214 | 126 | 大型网络 |
| B | 128.0.0.0 - 191.255.255.255 | 65,534 | 16,384 | 中等网络 |
| C | 192.0.0.0 - 223.255.255.255 | 254 | 2,097,152 | 小型网络 |
| D | 224.0.0.0 - 239.255.255.255 | - | - | 组播 |
| E | 240.0.0.0 - 255.255.255.255 | - | - | 保留 |
私有 IP 地址范围
这些范围不能在互联网上使用,仅在局域网内:
A 类私有:10.0.0.0 - 10.255.255.255 (10.0.0.0/8)
B 类私有:172.16.0.0 - 172.31.255.255 (172.16.0.0/12)
C 类私有:192.168.0.0 - 192.168.255.255 (192.168.0.0/16)
2. 子网掩码与 CIDR
子网掩码
子网掩码用来标识 IP 地址中哪些位表示网络,哪些位表示主机。
IP 地址: 192.168.1.100
子网掩码: 255.255.255.0
二进制表示:
IP: 11000000.10101000.00000001.01100100
掩码: 11111111.11111111.11111111.00000000
↑ 网络部分 ↑ 主机部分
常见的子网掩码:
255.255.255.0- 在 C 类中,可容纳 254 个主机255.255.0.0- 在 B 类中,可容纳 65,534 个主机255.255.255.128- 可容纳 126 个主机(减半)
CIDR 表示法
CIDR(无分类域间路由)用 / 后跟(前缀长度)表示:
192.168.1.0/24
↑ 网络 IP
↑ 前 24 位是网络,后 8 位是主机
常见的 CIDR:
/32- 单个主机(1 个 IP)/31- 2 个 IP(用于点对点连接)/30- 4 个 IP(2 个可用主机 + 网络地址 + 广播地址)/24- 256 个 IP(254 个可用主机)/16- 65,536 个 IP/8- 16,777,216 个 IP
3. 子网计算
手工计算网络信息
给定 IP 192.168.1.100/24,计算:
IPv4 地址:192.168.1.100
网络掩码:255.255.255.0 (或 /24)
网络地址:192.168.1.0 (IP AND 掩码)
广播地址:192.168.1.255 (网络地址 + 主机数 - 1)
可用范围:192.168.1.1 - 192.168.1.254
可用主机数:254
更复杂的例子
给定 IP 172.16.50.130/25,计算:
二进制表示:
IP: 10101100.00010000.00110010.10000010
掩码:/25 11111111.11111111.11111111.10000000
网络地址:172.16.50.128 (/25 = 256/2 = 128 个 IP)
广播地址:172.16.50.255 (128 + 128 - 1)
可用范围:172.16.50.129 - 172.16.50.254
可用主机数:126
使用工具快速计算,可以用我们的 IP 子网计算器。
4. 实战应用:VPC 与服务器配置
AWS VPC 设计示例
VPC CIDR: 10.0.0.0/16 (65,536 个 IP)
Public 子网 A: 10.0.1.0/24 (254 个 IP)
↳ Web 服务器
↳ 自动伸缩组
Public 子网 B: 10.0.2.0/24 (254 个 IP)
↳ Web 服务器(高可用)
Private 子网 A: 10.0.10.0/24 (254 个 IP)
↳ 数据库主节点
↳ 应用缓存
Private 子网 B: 10.0.11.0/24 (254 个 IP)
↳ 数据库从节点
↳ 应用缓存
Docker 网络配置
# 创建自定义网络
docker network create --driver bridge --subnet 172.18.0.0/16 mynetwork
# 容器在这个网络中
docker run --network mynetwork --ip 172.18.0.2 -d myapp
# 查看网络信息
docker network inspect mynetwork
相关 IP 信息:
- 网络:172.18.0.0/16
- Gateway:172.18.0.1
- 容器 IP:172.18.0.2
5. 安全与访问控制
安全组配置(云服务器)
入站规则:
├─ SSH (22) 允许: 203.0.113.0/24 (办公网络)
├─ HTTP (80) 允许: 0.0.0.0/0 (所有人)
├─ HTTPS (443) 允许: 0.0.0.0/0 (所有人)
└─ MySQL (3306) 允许: 10.0.10.0/24 (内网应用)
出站规则:
└─ 所有 允许: 0.0.0.0/0 (默认)
6. IP 地址查询与诊断
使用命令行工具
# 查看本机 IP 和子网
ip addr show # Linux
ipconfig # Windows
ifconfig # macOS
# 查看路由表
ip route show # Linux
route print # Windows
# 测试网络连接
ping 8.8.8.8
traceroute www.google.com # tracert on Windows
# DNS 查询
nslookup example.com
dig example.com
查看公网 IP
curl http://icanhazip.com
curl http://ipInfo.io
# Node.js 中查询
const publicIp = require('public-ip');
const ip = await publicIp.v4();
console.log(ip);
使用我们的 IP 查询工具 快速查询 IP 地址的地理位置和所有者信息。
7. NAT 和 IP 转换
网络地址转换 (NAT)
NAT 允许多个内网设备通过一个外网 IP 访问互联网:
内网:
192.168.1.10:8080
192.168.1.11:8081
↓ NAT
外网:
203.0.113.5:12345
203.0.113.5:12346
端口转发
# Nginx 反向代理(实现 NAT)
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://192.168.1.100:3000;
proxy_set_header X-Real-IP $remote_addr;
}
}
8. IPv6 基础(了解)
IPv4 地址即将耗尽,IPv6 是未来的方向。
IPv6 地址示例:
2001:0db8:85a3:0000:0000:8a2e:0370:7334
简写形式:
2001:db8:85a3::8a2e:370:7334
IPv6 子网:
2001:db8:85a3::/48 (前 48 位是网络)
网络诊断常见命令
排查连接问题
# 1. 检查主机是否可达
ping 8.8.8.8
# 2. 检查路由
traceroute 8.8.8.8
# 3. 检查特定端口
nc -zv example.com 80
telnet example.com 80
# 4. 查看当前网络连接
netstat -tlnp # Linux
netstat -an # Windows
# 5. 检查 DNS
nslookup example.com
dig example.com
# 6. 监控网络流量
tcpdump -i eth0 -n port 80
实战场景
场景 1:服务器网络配置
# Ubuntu 网络配置 (/etc/netplan/01-netcfg.yaml)
network:
version: 2
ethernets:
eth0:
dhcp4: false
addresses:
- 192.168.1.101/24
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
routes:
- to: 0.0.0.0/0
via: 192.168.1.1
场景 2:防火墙规则
# 仅允许特定源 IP 访问
iptables -A INPUT -p tcp -s 203.0.113.0/24 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
场景 3:负载均衡配置
upstream backend {
server 10.0.10.10:8080 weight=5; # 70% 流量
server 10.0.10.11:8080 weight=2; # 30% 流量
server 10.0.10.12:8080 backup; # 备机
}
server {
location / {
proxy_pass http://backend;
}
}
相关工具推荐: