Back to Blog
2026-02-18ToolBox Team

网络基础与 IP 子网计算实战

🔧 返回工具箱 | Back to Tools

浏览所有工具 | View All Tools
networkingipsubnetinfrastructure

网络基础与 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;
    }
}

相关工具推荐