网络层(Network Layer)是 OSI 模型和 TCP/IP 模型中最核心的一层——它解决了全球范围内的设备如何互相寻址和通信的问题。没有网络层,互联网就不可能存在。
IP 地址是互联网世界的”门牌号”,子网掩码告诉你”哪些门牌属于同一个小区”,而路由器则是连接不同小区的”交通枢纽”。本文将深入讲解 IP 地址分类、子网掩码计算、网络地址判断,以及路由器的工作原理和静态路由配置。学完本章,你将真正理解”为什么你的电脑能上网”。
进制转换回顾
理解 IP 地址和子网掩码的前提是掌握进制转换。IP 地址和子网掩码本质上都是 32 位二进制数,只是我们习惯用”点分十进制”的方式来表示。
三种常用进制
十进制(Decimal)
| 概念 | 说明 | 示例 |
|---|---|---|
| 数值 | 0 ~ 9(共 10 个符号) | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 |
| 数位 | 数字的位置 | 123 中的 1、2、3 |
| 位权 | 每个位置的权重 | 百位(100)、十位(10)、个位(1) |
二进制(Binary)
| 概念 | 说明 | 示例 |
|---|---|---|
| 数值 | 0 ~ 1(共 2 个符号) | 0, 1 |
| 数位 | 每一位只能是 0 或 1 | 101 中的 1、0、1 |
| 位权 | 2 的幂次 | 128, 64, 32, 16, 8, 4, 2, 1 |
二进制位权表
| 位置 | 2⁷ | 2⁶ | 2⁵ | 2⁴ | 2³ | 2² | 2¹ | 2⁰ |
|---|---|---|---|---|---|---|---|---|
| 值 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
二进制 ↔ 十进制互转
十进制 → 二进制
方法:位权加减法
| 十进制 | 计算过程 | 二进制 |
|---|---|---|
| 129 | 128 + 1 | 1000 0001 |
| 192 | 128 + 64 | 1100 0000 |
| 255 | 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 | 1111 1111 |
| 168 | 128 + 32 + 8 | 1010 1000 |
二进制 → 十进制
1100 0000
= 128 + 64 + 0 + 0 + 0 + 0 + 0 + 0
= 192
1010 1000
= 128 + 0 + 32 + 0 + 8 + 0 + 0 + 0
= 168
存储单位换算
| 单位 | 换算关系 | 说明 |
|---|---|---|
| bit (b) | 最小单位 | 1 bit = 1 个 0 或 1 |
| Byte (B) | 1 B = 8 bits | 1 字节 = 8 比特 |
| KB | 1 KB = 1024 B | |
| MB | 1 MB = 1024 KB | |
| GB | 1 GB = 1024 MB | |
| TB | 1 TB = 1024 GB |
IP 地址
简介
IP 地址(Internet Protocol Address):用于标识互联网中每台主机的唯一地址。
IP 地址结构
- IP 地址由 32 位二进制数 组成
- 通常用 4 组十进制数 表示,每组用
.分隔 - 每组(每段)由 8 位二进制数 组成,用十进制标识
二进制表示: 11000000.10101000.00000000.00000001
│ │ │ │
十进制表示: 192 .168 .0 .1
IP 地址示例
192.168.0.1 ← 家庭路由器常见地址
156.86.254.255 ← 公网 IP 地址
1.2.3.4 ← 简洁的 IP 地址
25.250.25.110 ← 任意 IP 地址
127.0.0.1 ← 本地回环地址
每段取值范围
由于每段是 8 位二进制数:
最小值:0000 0000 = 0
最大值:1111 1111 = 255
所以每段的取值范围是:0 ~ 255
重要:IP 地址的每段不能超过 255!
192.168.1.256是一个无效的 IP 地址。
IP 地址分类
IP 地址按第一段数字的范围分为 A、B、C、D、E 五类。
公有 IP 地址分类
| 类别 | 第一段范围 | 网络位 | 主机位 | 适用规模 | 示例 |
|---|---|---|---|---|---|
| A 类 | 1 ~ 126 | 第 1 段 | 第 2~4 段 | 超大型网络 | 10.x.x.x |
| B 类 | 128 ~ 191 | 第 1~2 段 | 第 3~4 段 | 中型网络 | 172.16.x.x |
| C 类 | 192 ~ 223 | 第 1~3 段 | 第 4 段 | 小型网络 | 192.168.1.x |
| D 类 | 224 ~ 239 | — | — | 组播(Multicast) | 224.0.0.1 |
| E 类 | 240 ~ 255 | — | — | 科研保留 | 240.0.0.1 |
特殊地址
| 地址 | 说明 |
|---|---|
| 127.0.0.1 | 回环地址(Loopback),代表”我自己”,用于测试本机网络协议栈 |
| 0.0.0.0 | 表示”所有地址”或”未知地址”,常用于路由表中的默认路由 |
| 255.255.255.255 | 有限广播地址,向本地网络所有设备广播 |
为什么没有 126 之后的 A 类? 127 被保留为回环地址,所以 A 类实际可用范围是 1 ~ 126。
为什么从 128 开始是 B 类? 因为 127 被跳过了,所以 B 类从 128 开始。
私有 IP 地址
私有 IP 地址(Private IP)是指在局域网内部使用的 IP 地址,不能直接在互联网上路由。如果你的电脑 IP 是私有地址,需要通过 NAT(网络地址转换)才能上网。
| 类别 | 私有 IP 范围 | 主机数量 | 常见场景 |
|---|---|---|---|
| A 类私有 | 10.0.0.0 ~ 10.255.255.255 | 约 1677 万 | 大型企业内网 |
| B 类私有 | 172.16.0.0 ~ 172.31.255.255 | 约 104 万 | 中型企业内网 |
| C 类私有 | 192.168.0.0 ~ 192.168.255.255 | 约 6.5 万 | 家庭/小型办公室 |
为什么家用路由器的 IP 通常是
192.168.1.1或192.168.0.1? 因为 C 类私有地址范围(192.168.x.x)足够家庭使用,且是最常见的私有地址段。
查看本机 IP 地址
# Linux 系统
[root@localhost ~]# ip a
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.100.114/24 brd 192.168.100.255 scope global noprefixroute dynamic ens33
# 快速查看(仅 IP)
[root@localhost ~]# hostname -I
192.168.100.114
# Windows 系统
C:\> ipconfig
子网掩码(Subnet Mask)
简介
子网掩码是一个 32 位二进制数,用于区分 IP 地址中哪部分是网络位,哪部分是主机位。
子网掩码的作用
- 运算出 IP 地址的网络部分——将 IP 地址与子网掩码进行逻辑”与”运算,就能得到网络地址
- 判断两个 IP 是否在同一网段——网络位相同则在同一个网段,可以直接通信
默认子网掩码
| IP 类别 | 默认子网掩码 | 二进制表示 | CIDR 表示 |
|---|---|---|---|
| A 类 | 255.0.0.0 | 11111111.00000000.00000000.00000000 | /8 |
| B 类 | 255.255.0.0 | 11111111.11111111.00000000.00000000 | /16 |
| C 类 | 255.255.255.0 | 11111111.11111111.11111111.00000000 | /24 |
CIDR 表示法(Classless Inter-Domain Routing):用
/N表示子网掩码中连续 1 的位数。例如/24表示前 24 位是 1(即255.255.255.0)。
计算方法
核心规则
子网掩码中为 1 的部分,对应 IP 地址的网络位。
计算步骤:
- 将 IP 地址和子网掩码都转换为二进制
- 对两者进行逻辑与(AND)运算
- 运算结果就是网络地址
逻辑与运算规则
0 AND 0 = 0
0 AND 1 = 0
1 AND 0 = 0
1 AND 1 = 1
简单记法:有 0 就是 0,两个都是 1 才是 1
计算示例
示例:计算 192.168.1.100/24 的网络地址(子网掩码 255.255.255.0)
IP 地址: 192.168.1.100
= 11000000.10101000.00000001.01100100
子网掩码: 255.255.255.0
= 11111111.11111111.11111111.00000000
逻辑与运算:
11000000.10101000.00000001.01100100 (IP)
AND 11111111.11111111.11111111.00000000 (掩码)
─────────────────────────────────────
11000000.10101000.00000001.00000000
= 192 .168 .1 .0
网络地址:192.168.1.0
快速算法:子网掩码为 255 的段,IP 地址原样保留;子网掩码为 0 的段,IP 地址变为 0。
CIDR 常用子网掩码对照表
| CIDR | 子网掩码 | 二进制(1 的个数) | 可用主机数 |
|---|---|---|---|
/8 | 255.0.0.0 | 8 | 16,777,214 |
/16 | 255.255.0.0 | 16 | 65,534 |
/24 | 255.255.255.0 | 24 | 254 |
/25 | 255.255.255.128 | 25 | 126 |
/26 | 255.255.255.192 | 26 | 62 |
/27 | 255.255.255.224 | 27 | 30 |
/28 | 255.255.255.240 | 28 | 14 |
/29 | 255.255.255.248 | 29 | 6 |
/30 | 255.255.255.252 | 30 | 2 |
/32 | 255.255.255.255 | 32 | 1(单个主机) |
网络地址与通信规则
判断是否同一网段
核心规则:网络位相同 → 同一网段 → 直接通信;网络位不同 → 不同网段 → 需要网关转发。
示例 1:同一网段
PC-A: 192.168.1.10 掩码: 255.255.255.0
PC-B: 192.168.1.20 掩码: 255.255.255.0
PC-A 网络地址: 192.168.1.0
PC-B 网络地址: 192.168.1.0
✅ 网络位相同 → 同一网段 → 可以直接通信(通过交换机/ARP)
示例 2:不同网段
PC-A: 192.168.1.10 掩码: 255.255.255.0
PC-B: 192.168.2.10 掩码: 255.255.255.0
PC-A 网络地址: 192.168.1.0
PC-B 网络地址: 192.168.2.0
❌ 网络位不同 → 不同网段 → 不能直接通信,必须经过网关(路由器)转发
通信规则总结
| 场景 | 网络位 | 通信方式 | 说明 |
|---|---|---|---|
| 同一网段 | 相同 | 直接通信 | 通过 ARP 获取对方 MAC 地址,直接发送数据帧 |
| 不同网段 | 不同 | 网关转发 | 将数据包发给默认网关(路由器),由路由器转发到目标网络 |
网络层封装
在网络层,传输层传下来的数据段(Segment)被封装为数据包(Packet),并添加 IP 头部信息。
IP 数据包结构

IP 头部关键字段:
| 字段 | 说明 |
|---|---|
| 版本号 | IPv4 = 4, IPv6 = 6 |
| TTL | Time To Live,生存时间,每经过一个路由器减 1,减到 0 时数据包被丢弃(防止环路) |
| 协议 | 标识上层协议(6 = TCP, 17 = UDP, 1 = ICMP) |
| 源 IP | 发送方的 IP 地址 |
| 目标 IP | 接收方的 IP 地址 |
封装流程
传输层数据段(Segment)
↓
网络层添加 IP 头部(源 IP + 目标 IP + TTL + 协议)
↓
IP 数据包(Packet)→ 交给数据链路层封装为帧
路由器工作原理
路由器简介
路由器(Router) 是工作在网络层的设备,它的核心功能是在不同网络之间转发数据包。
路由器的角色
┌───────────────┐ ┌───────────────┐
│ 家庭网络 │ │ 互联网 │
│ 192.168.1.0 │◄───────►│ 各种公网 IP │
│ /24 │ 路由器 │ │
└───────────────┘ └───────────────┘
↑ ↑
内网地址 外网地址
路由器是内网和外网之间的”桥梁”——它有两个(或多个)IP 地址,分别连接不同的网络。
路由(Routing)
概念
路由是指数据包从源地址到目标地址的路径选择过程。路由器根据路由表(Routing Table) 决定将数据包从哪个接口转发出去。
打个比方:
路由表就像地图导航——你要从 A 地到 B 地,导航会告诉你:
- 如果目的地在本地,直接走(直连路由)
- 如果目的地在外地,先去某个路口(名词:下一跳),再从那里继续走
路由表的形成
路由表中的路由条目来源有两种:
| 来源 | 说明 | 示例 |
|---|---|---|
| 直连路由 | 路由器自动发现与自身接口直接相连的网络 | 你家门口的路、小区内部道路不用查任何导航,天生就知道怎么走,出门直接走 |
| 静态路由 | 管理员手动添加的非直连网络路由 | 你手动记下来的上班固定路线是你自己摸索或朋友告诉你的,只要路不封,你永远走这条 |
| 动态路由 | 通过路由协议(OSPF、BGP 等)自动学习 | 高德 / 百度实时导航自动收集全城市路况,哪里堵车、哪里封路立刻知道,自动给你推荐最快路线;路断了会秒级重新规划 |
查看路由表
Linux 系统
# 查看路由表
[root@localhost ~]# ip route
default via 192.168.100.2 dev ens33 proto dhcp metric 100
192.168.100.0/24 dev ens33 proto kernel scope link src 192.168.100.114 metric 100
eNSP 路由器
路由表字段说明:
| 字段 | 说明 |
|---|---|
| C(Connected) | 直连路由——与路由器接口直接相连的网络 |
| S(Static) | 静态路由——管理员手动添加的路由 |
| Destination | 目标网络地址 |
| Gateway | 下一跳地址(0.0.0.0 表示直连,不需要下一跳) |
| Genmask | 子网掩码 |
| Iface | 出接口 |
默认网关
默认网关(Default Gateway) 是数据包找不到匹配路由时的”最后选择”。通常指向路由器。
默认路由(缺省路由)
0.0.0.0/0 via 192.168.142.2
│ │ │
│ │ └── 网关(路由器内网口 IP)
│ └── 匹配任何目标地址(当没有更精确的匹配时)
└── 目标网络
通俗理解:默认网关就是”不知道往哪走的时候,就交给它”。
查看和配置默认网关
# 查看默认网关
[root@localhost ~]# ip route | grep default
default via 192.168.142.2 dev ens33
# 查看网关(另一种方式)
[root@localhost ~]# ip route show | head -1
default via 192.168.142.2 dev ens33
# 网卡配置文件中的网关设置
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
GATEWAY=192.168.142.2
实战:华为 eNSP 静态路由配置
场景
网络拓扑:

R1 的配置
# 进入系统视图并修改设备名
<Huawei>sys
[Huawei]sysname R1
# 配置连接PC1的内网接口GE0/0/1
[R1]int g0/0/1
[R1-GigabitEthernet0/0/1]ip add 192.168.1.254 24
# 配置连接R2的互联接口GE0/0/0
[R1-GigabitEthernet0/0/1]int g0/0/0
[R1-GigabitEthernet0/0/0]ip add 10.0.0.1 24
[R1-GigabitEthernet0/0/0]q
# 添加静态路由:去往192.168.2.0/24的数据包,下一跳交给R2的10.0.0.2
[R1]ip route-static 192.168.2.0 255.255.255.0 10.0.0.2
R2 的配置
<Huawei>sys
[Huawei]sysname R2
# 配置连接R1的互联接口GE0/0/0
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]ip add 10.0.0.2 24
# 配置连接PC2的内网接口GE0/0/1
[R2-GigabitEthernet0/0/0]int g0/0/1
[R2-GigabitEthernet0/0/1]ip add 192.168.2.254 24
[R2-GigabitEthernet0/0/1]q
# 添加回包静态路由:去往192.168.1.0/24的数据包,下一跳交给R1的10.0.0.1
[R2]ip route-static 192.168.1.0 255.255.255.0 10.0.0.1
此时PC1和PC2就可以互相通信了
验证配置:
# 在R1或R2上查看路由表
<R1>display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 11 Routes : 11
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.0.0.0/24 Direct 0 0 D 10.0.0.1 GigabitEthernet0/0/0
10.0.0.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
10.0.0.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
127.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
192.168.1.0/24 Direct 0 0 D 192.168.1.254 GigabitEthernet0/0/1
192.168.1.254/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
192.168.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
192.168.2.0/24 Static 60 0 RD 10.0.0.2 GigabitEthernet0/0/0
255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
说明:
Static表示静态路由,Direct表示直连路由,优先级 60 是华为静态路由默认值注意:静态路由需要双向配置——不仅要配置”去”的路由,还要配置”回”的路由,否则数据包有去无回。
数据包转发过程
完整流程(PC1 ping PC2)
步骤 1:PC1(192.168.1.1)发起 ping 192.168.2.1
步骤 2:PC1 判断目标是否在同一网段
→ 192.168.1.1 vs 192.168.2.1(子网掩码均为 255.255.255.0)
→ 不同网段!需要交给默认网关
步骤 3:PC1 将数据包发给网关 R1(192.168.1.254)
→ 目标 IP:192.168.2.1(全程不变)
→ 目标 MAC:R1 的 GE0/0/1 接口 MAC
→ 源 IP:192.168.1.1(全程不变)
→ 源 MAC:PC1 网卡 MAC
步骤 4:R1 收到数据包,查路由表
→ 目标:192.168.2.1
→ 匹配:静态路由 192.168.2.0/24 → 下一跳 10.0.0.2(R2)
→ 从 GE0/0/0 接口转发给 R2
→ 重新封装帧:目标 MAC 改为 R2 的 GE0/0/0 接口 MAC,源 MAC 改为 R1 的 GE0/0/0 接口 MAC
→ TTL 值减 1
步骤 5:R2 收到数据包,查路由表
→ 目标:192.168.2.1
→ 匹配:直连路由 192.168.2.0/24 → 直连,从 GE0/0/1 接口直接发给 PC2
→ 重新封装帧:目标 MAC 改为 PC2 网卡 MAC,源 MAC 改为 R2 的 GE0/0/1 接口 MAC
→ TTL 值再减 1
步骤 6:PC2 收到 ping 请求,回包
→ 回包流程与上述完全相反
→ 需要 R2 有去往 192.168.1.0/24 的回包路由,R1 有直连路由
→ 回包同样遵循:IP 不变、MAC 每跳改变、TTL 逐跳递减
关键理解
| 概念 | 说明 |
|---|---|
| IP 地址不变 | 数据包从源到目标,源 IP 和目标 IP 始终不变 |
| MAC 地址每跳改变 | 每一段链路都重新封装帧,源/目标 MAC 是当前链路的设备 MAC |
| TTL 每跳减 1 | 每经过一个路由器,TTL 值减 1,防止数据包无限循环 |
| 双向路由 | 数据包能”去”,还得能”回”,所以往返都需要正确的路由 |
动态路由实验
这个感兴趣可以参考一下这个实验,介绍的也很详细,也是非常简单的:
华为ensp OSPF动态路由配置实验 – Destiny_Minvenus – 博客园
常见问题
Q1:为什么 127.0.0.1 可以 ping 通但上不了网?
127.0.0.1 是本地回环地址,能 ping 通只说明本机的 TCP/IP 协议栈正常。能否上网还需要检查:
- IP 地址配置是否正确
- 网关是否可达
- DNS 是否正常
- 路由器是否配置了正确的路由
Q2:子网掩码能不能随便改?
不能随意修改。子网掩码决定了网络的规模和范围。如果修改不当:
- 可能导致部分设备无法通信
- 可能造成 IP 地址冲突
- 需要全网统一规划
Q3:两个不同网段的设备直连能通信吗?
不能直接通信。需要通过路由器(或三层交换机)进行路由转发,或者在两端都添加静态路由。
Q4:如何测试网络连通性?
# 1. ping 本机回环(测试协议栈)
ping 127.0.0.1
# 2. ping 本机 IP(测试网卡)
ping 192.168.1.100
# 3. ping 网关(测试到路由器的连通性)
ping 192.168.1.1
# 4. ping 外网 IP(测试外网连通性)
ping 8.8.8.8
# 5. ping 域名(测试 DNS)
ping www.baidu.com
# 6. 追踪路由路径
traceroute www.baidu.com # Linux
tracert www.baidu.com # Windows
Q5:默认网关和默认路由是一回事吗?
本质上是一回事,只是表述角度不同:
- 默认网关:从终端设备的角度,指”不知道往哪发就发给谁”
- 默认路由:从路由器的角度,指路由表中的一条记录
0.0.0.0/0
总结
通过本章节的学习,你应该掌握了:
- 回顾进制转换(二进制 ↔ 十进制互转)
- 理解 IP 地址的结构(32 位二进制、4 组十进制表示)
- 掌握 IP 地址分类(A/B/C/D/E 类及其范围)
- 理解私有 IP 地址的范围和使用场景
- 掌握子网掩码的作用和计算方法(逻辑与运算)
- 理解 CIDR 表示法(/8, /16, /24 等)
- 判断两个 IP 是否在同一网段,以及通信规则
- 理解网络层封装(IP 头部结构)
- 理解路由器的工作原理和路由的概念
- 掌握路由表的查看方法(
ip route/show ip route) - 理解直连路由和静态路由的区别
- 掌握静态路由的配置方法
- 理解数据包的完整转发过程(IP 不变、MAC 每跳改变、TTL 递减)
- 理解默认网关/默认路由的作用
学习建议:网络层知识是网络管理的核心。建议使用 Cisco Packet Tracer 模拟器,搭建多路由器网络拓扑,练习静态路由配置和排障。同时,在 Linux 虚拟机上使用
ip route、ping、traceroute等命令,结合实际网络环境加深理解。