详解OSI七层模型与TCP/IP四层模型的对应关系、网络底层原理、路由知识与实战配置技巧
前言
“OSI七层模型和TCP/IP四层模型是什么关系?”
“数据在网络中是怎么传输的?”
“路由器和交换机有什么区别?”
“静态路由和动态路由怎么配置?”
“如何排查网络故障?”
这些问题困扰着很多学习网络的朋友。今天我们就来系统性地掌握网络协议的核心知识,从理论到实践,彻底理解网络通信的原理。
一、OSI七层模型
1.1 七层模型概览
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
┌─────────────────────────────────────────────────────────────────┐
│ OSI七层模型 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌────┬──────────────────────────────────────────────────┐ │
│ │ 7 │ 应用层 (Application) │ │
│ │ │ 用户接口、服务、HTTP/FTP/SMTP/DNS │ │
│ ├────┼──────────────────────────────────────────────────┤ │
│ │ 6 │ 表示层 (Presentation) │ │
│ │ │ 数据格式、加密解密、压缩编码 ASCII/JPEG │ │
│ ├────┼──────────────────────────────────────────────────┤ │
│ │ 5 │ 会话层 (Session) │ │
│ │ │ 会话管理、认证、断点续传 NetBIOS/RPC │ │
│ ├────┼──────────────────────────────────────────────────┤ │
│ │ 4 │ 传输层 (Transport) │ │
│ │ │ 可靠传输、流量控制 TCP/UDP/SPX │ │
│ ├────┼──────────────────────────────────────────────────┤ │
│ │ 3 │ 网络层 (Network) │ │
│ │ │ 路由、逻辑地址、转发 IP/ICMP/OSPF/BGP │ │
│ ├────┼──────────────────────────────────────────────────┤ │
│ │ 2 │ 数据链路层 (Data Link) │ │
│ │ │ MAC地址、帧封装、交换机 Ethernet/PPP/HDLC │ │
│ ├────┼──────────────────────────────────────────────────┤ │
│ │ 1 │ 物理层 (Physical) │ │
│ │ │ 比特流传输、电压接口、物理介质 Cable/Hub │ │
│ └────┴──────────────────────────────────────────────────┘ │
│ │
│ 记忆口诀: │
│ 物理数网传会表应 (物 数 网 传 会 表 应) │
│ 物数网传会表应 (All People Seem To Need Data Processing) │
│ │
└─────────────────────────────────────────────────────────────────┘
|
1.2 各层详细解析
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
┌─────────────────────────────────────────────────────────────────┐
│ OSI七层模型详解 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 第7层:应用层 (Application Layer) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 职责:直接为用户提供服务 │ │
│ │ │ │
│ │ 常见协议: │ │
│ │ ├── HTTP/HTTPS: Web浏览 │ │
│ │ ├── FTP: 文件传输 │ │
│ │ ├── SMTP/POP3/IMAP: 邮件 │ │
│ │ ├── DNS: 域名解析 │ │
│ │ ├── DHCP: 动态IP分配 │ │
│ │ └── Telnet/SSH: 远程登录 │ │
│ │ │ │
│ │ 数据单元:应用层数据 (APDU) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 第6层:表示层 (Presentation Layer) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 职责:数据格式转换、加密解密、压缩 │ │
│ │ │ │
│ │ 功能: │ │
│ │ ├── 语法转换: 不同系统数据格式转换 │ │
│ │ ├── 加密解密: SSL/TLS加密 │ │
│ │ ├── 压缩解压缩: 数据压缩 │ │
│ │ └── 格式转换: ASCII ↔ EBCDIC │ │
│ │ │ │
│ │ 数据单元:表示层数据 (PPDU) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 第5层:会话层 (Session Layer) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 职责:管理通信会话、建立维护终止会话 │ │
│ │ │ │
│ │ 功能: │ │
│ │ ├── 会话管理: 建立、维护、终止会话 │ │
│ │ ├── 同步: 检查点/断点续传 │ │
│ │ ├── 对话控制: 单工/半双工/全双工 │ │
│ │ └── 令牌管理: 防止同时操作 │ │
│ │ │ │
│ │ 数据单元:会话层数据 (SPDU) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 第4层:传输层 (Transport Layer) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 职责:端到端的可靠传输、流量控制、错误控制 │ │
│ │ │ │
│ │ 核心协议: │ │
│ │ ├── TCP: 面向连接、可靠传输、流量控制 │ │
│ │ │ ├── 三次握手建立连接 │ │
│ │ │ ├── 四次挥手断开连接 │ │
│ │ │ ├── 确认机制、重传机制 │ │
│ │ │ └── 滑动窗口、拥塞控制 │ │
│ │ │ │ │
│ │ └── UDP: 无连接、不可靠传输、高效 │ │
│ │ ├── 不建立连接,直接发送 │ │
│ │ ├── 无确认、无重传 │ │
│ │ └── 适用于实时应用 │ │
│ │ │ │
│ │ 端口号: │ │
│ │ ├── 知名端口: 0-1023 (HTTP:80, HTTPS:443, FTP:21) │ │
│ │ ├── 注册端口: 1024-49151 │ │
│ │ └── 动态端口: 49152-65535 │ │
│ │ │ │
│ │ 数据单元:数据段 (Segment) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 第3层:网络层 (Network Layer) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 职责:逻辑寻址、路由选择、路径选择 │ │
│ │ │ │
│ │ 核心概念: │ │
│ │ ├── IP地址: 逻辑地址(软件配置) │ │
│ │ ├── 路由: 决定数据包转发路径 │ │
│ │ ├── 路由器: 连接不同网络 │ │
│ │ └── 路由表: 路由选择依据 │ │
│ │ │ │
│ │ 常见协议: │ │
│ │ ├── IP: Internet协议 │ │
│ │ ├── ICMP: Internet控制消息协议 │ │
│ │ ├── OSPF: 开放式最短路径优先 │ │
│ │ ├── BGP: 边界网关协议 │ │
│ │ └── RIP: 路由信息协议 │ │
│ │ │ │
│ │ 数据单元:数据包 (Packet) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 第2层:数据链路层 (Data Link Layer) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 职责:物理寻址、帧封装、链路控制 │ │
│ │ │ │
│ │ 核心概念: │ │
│ │ ├── MAC地址: 物理地址(网卡烧录) │ │
│ │ │ 48位,格式: XX:XX:XX:XX:XX:XX │ │
│ │ ├── 交换机: 根据MAC地址转发 │ │
│ │ ├── ARP: IP地址 → MAC地址解析 │ │
│ │ └── RARP: MAC地址 → IP地址解析 │ │
│ │ │ │
│ │ 帧结构: │ │
│ │ ┌──────┬──────┬────────┬──────────┬──────┐ │ │
│ │ │ 前同步 │ 目的MAC│ 源MAC │ 类型/长度 │ 数据 │ CRC │ │
│ │ │ 8B │ 6B │ 6B │ 2B │ 46-1500B│ 4B │ │
│ │ └──────┴──────┴────────┴──────────┴──────┘ │ │
│ │ │ │
│ │ 数据单元:帧 (Frame) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 第1层:物理层 (Physical Layer) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 职责:比特流传输、物理连接 │ │
│ │ │ │
│ │ 传输介质: │ │
│ │ ├── 有线: 双绞线、光纤、同轴电缆 │ │
│ │ └── 无线: WiFi、蓝牙、4G/5G │ │
│ │ │ │
│ │ 设备: │ │
│ │ ├── 集线器(Hub): 广播放大信号 │ │
│ │ ├── 中继器: 信号放大再生 │ │
│ │ └── 布线连接器 │ │
│ │ │ │
│ │ 数据单元:比特 (Bit) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
1.3 数据封装与解封装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
┌─────────────────────────────────────────────────────────────────┐
│ 数据封装过程 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 发送数据: "Hello" │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 应用层: "Hello" │ │
│ │ ├── 添加应用层头 │ │
│ │ ↓ │ │
│ │ 表示层: [应用层头][数据] │ │
│ │ ├── 添加表示层头 │ │
│ │ ↓ │ │
│ │ 会话层: [表示层头][应用层头][数据] │ │
│ │ ├── 添加会话层头 │ │
│ │ ↓ │ │
│ │ 传输层: [会话层头][表示层头][应用层头][数据] │ │
│ │ ├── 添加TCP/UDP头(端口号) │ │
│ │ ↓ │ │
│ │ 网络层: [传输层头][会话层头][表示层头][应用层头][数据] │ │
│ │ ├── 添加IP头(源/目的IP) │ │
│ │ ↓ │ │
│ │ 数据链路层: [IP头][传输层头][会话层头][表示层头]... │ │
│ │ ├── 添加帧头(源/目的MAC) │ │
│ │ ├── 添加帧尾(CRC校验) │ │
│ │ ↓ │ │
│ │ 物理层: 101010101110101... (比特流) │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 接收数据: 逆向解封装 │
│ │
│ 物理层 ──▶ 数据链路层 ──▶ 网络层 ──▶ 传输层 ──▶ 会话层 ──▶ 表示层 ──▶ 应用层
│ │ │ │ │ │
│ 比特流 帧校验 IP解析 端口解析 还原数据
│ │
└─────────────────────────────────────────────────────────────────┘
|
二、TCP/IP四层模型
2.1 四层模型概览
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
┌─────────────────────────────────────────────────────────────────┐
│ TCP/IP四层模型 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ 应用层 (Application Layer) │ │ │
│ │ │ │ │ │
│ │ │ HTTP FTP SMTP DNS DHCP SSH Telnet │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ 传输层 (Transport Layer) │ │ │
│ │ │ │ │ │
│ │ │ TCP UDP │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ 网络层 (Internet Layer) │ │ │
│ │ │ │ │ │
│ │ │ IP ICMP IGMP OSPF BGP │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ 网络接口层 (Network Interface Layer) │ │ │
│ │ │ │ │ │
│ │ │ Ethernet PPP Frame Relay │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
2.2 OSI与TCP/IP对应关系
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
┌─────────────────────────────────────────────────────────────────┐
│ OSI七层 vs TCP/IP四层对照 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ OSI七层 TCP/IP四层 │ │
│ │ ───────── ───────────── │ │
│ │ │ │
│ │ ┌─────────────────┐ ┌─────────────────────┐ │ │
│ │ │ │ │ │ │ │
│ │ │ 第7层 应用层 │ │ │ │ │
│ │ │ ───────────── │ │ 应用层 │ │ │
│ │ │ 第6层 表示层 │ │ │ │ │
│ │ │ ───────────── │ │ │ │ │
│ │ │ 第5层 会话层 │ │ │ │ │
│ │ │ │ │ │ │ │
│ │ └─────────────────┘ └─────────────────────┘ │ │
│ │ │ │ │ │
│ │ ▼ ▼ │ │
│ │ ┌─────────────────┐ ┌─────────────────────┐ │ │
│ │ │ 第4层 传输层 │ │ 传输层 │ │ │
│ │ │ │ │ TCP / UDP │ │ │
│ │ └─────────────────┘ └─────────────────────┘ │ │
│ │ │ │ │ │
│ │ ▼ ▼ │ │
│ │ ┌─────────────────┐ ┌─────────────────────┐ │ │
│ │ │ 第3层 网络层 │ │ 网络层 │ │ │
│ │ │ │ │ IP / ICMP │ │ │
│ │ └─────────────────┘ └─────────────────────┘ │ │
│ │ │ │ │ │
│ │ ▼ ▼ │ │
│ │ ┌─────────────────┐ ┌─────────────────────┐ │ │
│ │ │ 第2层 数据链路层 │ │ │ │ │
│ │ │ ─────────────── │ │ 网络接口层 │ │ │
│ │ │ 第1层 物理层 │ │ │ │ │
│ │ │ │ │ │ │ │
│ │ └─────────────────┘ └─────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 对应说明: │
│ ├── TCP/IP应用层 = OSI 5-7层 (应用+表示+会话) │
│ ├── TCP/IP传输层 = OSI 4层 (传输层) │
│ ├── TCP/IP网络层 = OSI 3层 (网络层) │
│ └── TCP/IP网络接口层 = OSI 1-2层 (物理+数据链路) │
│ │
└─────────────────────────────────────────────────────────────────┘
|
三、TCP协议详解
3.1 TCP头部结构
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
┌─────────────────────────────────────────────────────────────────┐
│ TCP头部结构 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 0 15 16 31 │ │
│ │ ├───────────────────────┼────────────────────────────┤ │ │
│ │ │ 源端口 (16位) │ 目的端口 (16位) │ │ │
│ │ ├───────────────────────┴────────────────────────────┤ │ │
│ │ │ 序列号 (32位) │ │ │
│ │ ├───────────────────────────────────────────────────┤ │ │
│ │ │ 确认号 (32位) │ │ │
│ │ ├─────────┬──────┼───────────────────────────────┤ │ │
│ │ │数据偏移 │ 保留 │ 标志位 │ │ │
│ │ │ 4位 │ 6位 │ URG│ACK│PSH│RST│SYN│FIN │ │ │
│ │ ├─────────┴──────┼───────────────────────────────┤ │ │
│ │ │ 窗口大小 (16位) │ 校验和 (16位) │ │ │
│ │ ├─────────────────┴───────────────────────────────┤ │ │
│ │ │ 紧急指针 (16位) │ 选项 (可选) │ │ │
│ │ └───────────────────────────────────────────────────┤ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 关键字段解释: │
│ ├── 源端口: 发送方端口号 │
│ ├── 目的端口: 接收方端口号 │
│ ├── 序列号: 数据字节编号 │
│ ├── 确认号: 期望收到的下一个字节 │
│ ├── 窗口大小: 接收方缓存大小,流量控制 │
│ └── 标志位: 控制连接状态 │
│ │
│ 标志位说明: │
│ ├── URG: 紧急指针有效 │
│ ├── ACK: 确认号有效 │
│ ├── PSH: 立即推送给应用层 │
│ ├── RST: 复位连接 │
│ ├── SYN: 同步序列号,建立连接 │
│ └── FIN: 结束连接 │
│ │
└─────────────────────────────────────────────────────────────────┘
|
3.2 三次握手
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
┌─────────────────────────────────────────────────────────────────┐
│ TCP三次握手 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 客户端 服务端 │
│ │ │ │
│ │ ────────── 1. SYN, seq=x ─────────▶ │ │
│ │ (请求建立连接) │ │
│ │ │ │
│ │ ◀──────── 2. SYN+ACK, seq=y, ack=x+1 ──│ │
│ │ (同意建立连接) │ │
│ │ │ │
│ │ ───────── 3. ACK, seq=x+1, ack=y+1 ──▶│ │
│ │ (确认) │ │
│ │ │ │
│ │ ═══════════ 连接建立成功 ════════════│ │
│ │ │ │
│ │ │ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 为什么是三次握手? │ │
│ │ │ │
│ │ 第1次: 客户端发送SYN,告知服务端要建立连接 │ │
│ │ 第2次: 服务端返回SYN+ACK,确认收到请求 │ │
│ │ 第3次: 客户端发送ACK,确认收到服务端响应 │ │
│ │ │ │
│ │ 作用: │ │
│ │ ├── 确认双方发送能力正常 │ │
│ │ ├── 确认双方接收能力正常 │ │
│ │ └── 同步双方序列号 │ │
│ │ │ │
│ │ 如果是两次握手: │ │
│ │ ├── 服务端无法确认客户端是否收到自己的响应 │ │
│ │ ├── 可能建立无效连接 │ │
│ │ └── 历史连接可能干扰新连接 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
3.3 四次挥手
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
┌─────────────────────────────────────────────────────────────────┐
│ TCP四次挥手 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 客户端 服务端 │
│ │ │ │
│ │ ───────── 1. FIN, seq=u ──────────▶ │ │
│ │ (客户端请求关闭) │ │
│ │ │ │
│ │ ◀──────── 2. ACK, ack=u+1 ──────────│ │
│ │ (服务端确认) │ │
│ │ │ │
│ │ ════════ 客户端停止发送数据 ════════│ │
│ │ │ │
│ │ ◀──────── 3. FIN, seq=v ──────────│ │
│ │ (服务端请求关闭) │ │
│ │ │ │
│ │ ───────── 4. ACK, ack=v+1 ─────────▶│ │
│ │ (客户端确认) │ │
│ │ │ │
│ │ ════════ 服务端关闭连接 ════════════│ │
│ │ │ │
│ │ (等待2MSL后客户端关闭) │ │
│ │ │ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 为什么是四次挥手? │ │
│ │ │ │
│ │ ├── TCP是全双工,需要双向都关闭 │ │
│ │ ├── 第1-2次: 关闭客户端→服务端方向 │ │
│ │ ├── 第3-4次: 关闭服务端→客户端方向 │ │
│ │ └── TIME_WAIT等待2MSL确保对方收到最后ACK │ │
│ │ │ │
│ │ MSL (Maximum Segment Lifetime): │ │
│ │ └── 报文最大生存时间,通常60秒 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
3.4 TCP可靠传输机制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
┌─────────────────────────────────────────────────────────────────┐
│ TCP可靠传输机制 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 确认机制 (ACK) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 发送方: │ │
│ │ 数据: [1-1000字节] │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ 接收方返回: ACK=1001 (期望下一个字节) │ │
│ │ │ │
│ │ 超时重传: │ │
│ │ 发送数据后等待ACK,超时未收到则重传 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 滑动窗口 (Sliding Window) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 窗口大小: 3 │ │
│ │ │ │
│ │ 发送: [1][2][3][4][5][6][7][8] │ │
│ │ ▲▲▲▼ │ │ │
│ │ ││││ │ │ │
│ │ 窗口已确认 已发送待确认 未发送 │ │
│ │ │ │
│ │ 作用: 批量发送,无需逐个确认,提高效率 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 拥塞控制 (Congestion Control) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 慢启动: │ │
│ │ 初始拥塞窗口=1,每轮翻倍,直到达阈值 │ │
│ │ 1 → 2 → 4 → 8 → 16 → ... │ │
│ │ │ │
│ │ 拥塞避免: │ │
│ │ 达到阈值后,每轮+1 │ │
│ │ │ │
│ │ 快重传: │ │
│ │ 收到3个重复ACK,立即重传丢失的包 │ │
│ │ │ │
│ │ 快恢复: │ │
│ │ 快重传后,拥塞窗口减半,进入拥塞避免 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
四、IP协议详解
4.1 IPv4头部结构
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
┌─────────────────────────────────────────────────────────────────┐
│ IPv4头部结构 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 0 15 16 31 │ │
│ │ ├───────────────────────┼────────────────────────────┤ │ │
│ │ │ 版本 │ IHL │ TOS │ 总长度 │ │ │
│ │ │ 4位 │ 4位 │ 8位 │ 16位 │ │ │
│ │ ├───────────────────────┴────────────────────────────┤ │ │
│ │ │ 标识 (16位) │ 标志 │ 片偏移 (13位) │ │ │
│ │ ├───────────────────────┬────────────────────────────┤ │ │
│ │ │ TTL │ 协议 │ 头部校验和 │ │ │
│ │ │ 8位 │ 8位 │ 16位 │ │ │
│ │ ├───────────────────────┴────────────────────────────┤ │ │
│ │ │ 源IP地址 (32位) │ │ │
│ │ ├───────────────────────────────────────────────────┤ │ │
│ │ │ 目的IP地址 (32位) │ │ │
│ │ ├───────────────────────────────────────────────────┤ │ │
│ │ │ 可选字段 (可变) │ │ │
│ │ └───────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 关键字段: │
│ ├── 版本: 4 (IPv4) 或 6 (IPv6) │
│ ├── IHL: 头部长度,4位,单位4字节 │
│ ├── TOS: 服务类型,QOS优先级 │
│ ├── TTL: 生存时间,每经过一个路由器-1 │
│ ├── 协议: 上层协议 (1=ICMP, 6=TCP, 17=UDP) │
│ ├── 标识: 分片重组标识 │
│ ├── 标志: 控制分片 (DF=不分片, MF=更多分片) │
│ └── 片偏移: 分片在原数据中的位置 │
│ │
└─────────────────────────────────────────────────────────────────┘
|
4.2 IP地址分类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
┌─────────────────────────────────────────────────────────────────┐
│ IP地址分类 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 32位 = 网络位 + 主机位 │ │
│ │ │ │
│ │ A类: 0 + 网络号(8位) + 主机号(24位) │ │
│ │ ├── 范围: 1.0.0.0 - 126.255.255.255 │ │
│ │ ├── 默认子网掩码: 255.0.0.0 (/8) │ │
│ │ └── 适用: 大型网络 (1677万主机) │ │
│ │ │ │
│ │ B类: 10 + 网络号(16位) + 主机号(16位) │ │
│ │ ├── 范围: 128.0.0.0 - 191.255.255.255 │ │
│ │ ├── 默认子网掩码: 255.255.0.0 (/16) │ │
│ │ └── 适用: 中型网络 (65534主机) │ │
│ │ │ │
│ │ C类: 110 + 网络号(24位) + 主机号(8位) │ │
│ │ ├── 范围: 192.0.0.0 - 223.255.255.255 │ │
│ │ ├── 默认子网掩码: 255.255.255.0 (/24) │ │
│ │ └── 适用: 小型网络 (254主机) │ │
│ │ │ │
│ │ D类: 1110 + 多播地址 │ │
│ │ ├── 范围: 224.0.0.0 - 239.255.255.255 │ │
│ │ └── 用途: 多播/组播 │ │
│ │ │ │
│ │ E类: 11110 + 保留 │ │
│ │ ├── 范围: 240.0.0.0 - 255.255.255.255 │ │
│ │ └── 用途: 实验/保留 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 特殊IP地址 │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 127.0.0.0 - 127.255.255.255: 本地回环 (Loopback) │ │
│ │ 169.254.0.0 - 169.254.255.255: 链路本地地址 (DHCP失败)│ │
│ │ 10.0.0.0 - 10.255.255.255: 私有A类 │ │
│ │ 172.16.0.0 - 172.31.255.255: 私有B类 │ │
│ │ 192.168.0.0 - 192.168.255.255: 私有C类 │ │
│ │ 255.255.255.255: 广播地址 │ │
│ │ 0.0.0.0: 默认路由/本机 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
4.3 子网划分
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
┌─────────────────────────────────────────────────────────────────┐
│ 子网划分 (VLSM) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 为什么需要子网划分? │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 问题: B类网络 172.16.0.0 有 65534 个主机地址 │ │
│ │ 一个部门用不了这么多,浪费严重 │ │
│ │ │ │
│ │ 解决: 从主机位借位给网络位,细分成多个子网 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 子网划分示例 │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 网络: 192.168.1.0/24 │ │
│ │ 二进制: 11000000.10101000.00000001.xxxxxxxx │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ │ │ │
│ │ │ 借1位 (划分2个子网): │ │ │
│ │ │ 子网1: 192.168.1.0/25 (0-127) │ │ │
│ │ │ 子网2: 192.168.1.128/25 (128-255) │ │ │
│ │ │ 主机数: 126个/子网 │ │ │
│ │ │ │ │ │
│ │ │ 借2位 (划分4个子网): │ │ │
│ │ │ 子网1: 192.168.1.0/26 (0-63) │ │ │
│ │ │ 子网2: 192.168.1.64/26 (64-127) │ │ │
│ │ │ 子网3: 192.168.1.128/26 (128-191) │ │ │
│ │ │ 子网4: 192.168.1.192/26 (192-255) │ │ │
│ │ │ 主机数: 62个/子网 │ │ │
│ │ │ │ │ │
│ │ │ 借3位 (划分8个子网): │ │ │
│ │ │ 子网掩码: 255.255.255.224 (/27) │ │ │
│ │ │ 主机数: 30个/子网 │ │ │
│ │ │ 可用子网: 8个 │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 常见子网掩码速查表 │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ /24 255.255.255.0 254主机 (C类) │ │
│ │ /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 0主机 (特殊用途) │ │
│ │ /32 255.255.255.255 1主机 (单点广播) │ │
│ │ │ │
│ │ 公式: 主机数 = 2^(32-子网位数) - 2 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
五、路由基础
5.1 路由器工作原理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
┌─────────────────────────────────────────────────────────────────┐
│ 路由器工作原理 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 交换机 vs 路由器: │ │
│ │ │ │
│ │ ┌───────────────────────┬───────────────────────┐ │ │
│ │ │ 交换机 │ 路由器 │ │ │
│ │ ├───────────────────────┼───────────────────────┤ │ │
│ │ │ 工作层: 第2层 │ 工作层: 第3层 │ │ │
│ │ │ MAC地址表 │ 路由表 │ │ │
│ │ │ 硬件转发 │ 软件转发 │ │ │
│ │ │ 同一网络内部 │ 不同网络之间 │ │ │
│ │ │ 高速转发 │ 路由决策 │ │ │
│ │ └───────────────────────┴───────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 路由器转发流程 │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 收到数据包: │ │
│ │ 1. 解封装到网络层 │ │
│ │ 2. 查看目的IP地址 │ │
│ │ 3. 查找路由表 │ │
│ │ 4. 找到匹配路由 → 转发到下一跳 │ │
│ │ 5. 未找到 → 使用默认路由或丢弃 │ │
│ │ 6. 重新封装后转发 │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ │ │ │
│ │ │ 路由表条目: │ │ │
│ │ │ 目的网络 │ 子网掩码 │ 下一跳 │ 接口 │ │ │
│ │ │ ─────────────────────────────────────────────│ │ │
│ │ │ 192.168.1.0│/24 │ 10.0.0.2 │ eth0 │ │ │
│ │ │ 10.0.0.0 │/8 │ 直接交付 │ eth1 │ │ │
│ │ │ 0.0.0.0 │/0 │ 1.1.1.1 │ eth0 │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
5.2 路由分类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
┌─────────────────────────────────────────────────────────────────┐
│ 路由分类 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 直连路由 (Connected) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 定义: 路由器接口直连的网络 │ │
│ │ │ │
│ │ 特点: │ │
│ │ ├── 自动生成 │ │
│ │ ├── 接口UP时自动添加 │ │
│ │ └── 优先级最高 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 静态路由 (Static Route) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 定义: 管理员手动配置的路由 │ │
│ │ │ │
│ │ 优点: │ │
│ │ ├── 配置简单 │ │
│ │ ├── 带宽占用少 │ │
│ │ └── 安全 │ │
│ │ │ │
│ │ 缺点: │ │
│ │ ├── 不能自动适应网络变化 │ │
│ │ ├── 大型网络配置工作量大 │ │
│ │ └── 不适合复杂拓扑 │ │
│ │ │ │
│ │ 适用场景: │ │
│ │ ├── 小型网络 │ │
│ │ ├── 末梢网络 │ │
│ │ └── 默认路由 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 动态路由 (Dynamic Route) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 定义: 路由协议自动学习到的路由 │ │
│ │ │ │
│ │ 优点: │ │
│ │ ├── 自动适应网络变化 │ │
│ │ ├── 适合大型复杂网络 │ │
│ │ └── 带宽占用多 │ │
│ │ │ │
│ │ 缺点: │ │
│ │ ├── 配置复杂 │ │
│ │ ├── 占用带宽和CPU资源 │ │
│ │ └── 可能产生路由环路 │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ │ │ │
│ │ │ 按算法分类: │ │ │
│ │ │ │ │ │
│ │ │ 距离矢量: RIP, IGRP │ │ │
│ │ │ ├── 跳数作为度量值 │ │ │
│ │ │ ├── 周期性广播整个路由表 │ │ │
│ │ │ └── 收敛慢,可能有环路 │ │ │
│ │ │ │ │ │
│ │ │ 链路状态: OSPF, IS-IS │ │ │
│ │ │ ├── SPF算法计算最优路径 │ │ │
│ │ │ ├── 触发式更新 │ │ │
│ │ │ └── 收敛快,资源占用高 │ │ │
│ │ │ │ │ │
│ │ │ 混合型: EIGRP │ │ │
│ │ │ ├── 综合两者优点 │ │ │
│ │ │ └── Cisco私有协议 │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
5.3 路由选择原则
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
┌─────────────────────────────────────────────────────────────────┐
│ 路由选择原则 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 路由匹配原则 (最长匹配) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 目的IP: 192.168.1.100 │ │
│ │ │ │
│ │ 路由表: │ │
│ │ ├── 192.168.1.0/24 → 下一跳A │ │
│ │ ├── 192.168.0.0/16 → 下一跳B │ │
│ │ └── 0.0.0.0/0 → 下一跳C (默认) │ │
│ │ │ │
│ │ 匹配结果: /24最长匹配 → 选择下一跳A │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 路由优先级 (AD值/管理距离) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 路由来源 │ 默认优先级 (越小越优先) │ │
│ │ ───────────────────────────────────────────── │ │
│ │ 直连 (Connected) │ 0 │ │
│ │ 静态路由 │ 1 │ │
│ │ OSPF │ 110 │ │
│ │ IS-IS │ 115 │ │
│ │ RIP │ 120 │ │
│ │ OSPF外部 │ 150 │ │
│ │ BGP │ 20 (IBGP) / 200 (EBGP) │ │
│ │ 静态路由浮动 │ 不固定 (可手动设置) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 路由度量值 (Metric) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ RIP: 跳数 (经过路由器的数量) │ │
│ │ OSPF: 成本 (带宽的倒数) │ │
│ │ EIGRP: 复合度量值 (带宽+延迟) │ │
│ │ BGP: MED, AS_PATH, LOCAL_PREF等 │ │
│ │ │ │
│ │ 优先级: 优先级高 → 路由优选 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
六、路由协议详解
6.1 RIP路由协议
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
┌─────────────────────────────────────────────────────────────────┐
│ RIP路由协议 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ RIP概述 │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 特点: │ │
│ │ ├── 距离矢量协议 │ │
│ │ ├── 使用跳数作为度量值 (最大15跳) │ │
│ │ ├── 每30秒周期性广播整个路由表 │ │
│ │ └── 适用于小型网络 │ │
│ │ │ │
│ │ 版本: │ │
│ │ ├── RIPv1: 有类路由,不支持VLSM │ │
│ │ └── RIPv2: 无类路由,支持VLSM,支持认证 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ RIP工作原理 │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 1. 初始化: 路由器发送完整路由表 │ │
│ │ 2. 接收: 邻居路由器收到后更新自己的路由表 │ │
│ │ 3. 判断: 如果邻居的路由更好(跳数更小),则更新 │ │
│ │ 4. 抑制: 避免环路 (水平分割/毒性反转) │ │
│ │ 5. 老化: 超过180秒未更新的路由删除 │ │
│ │ │ │
│ │ 防环机制: │ │
│ │ ├── 水平分割: 不从接收路由的方向发回 │ │
│ │ ├── 毒性反转: 将失效路由跳数设为16(无穷大) │ │
│ │ ├── 触发更新: 路由变化时立即更新 │ │
│ │ └── 抑制计时器: 收到同样信息暂不更新 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
6.2 OSPF路由协议
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
┌─────────────────────────────────────────────────────────────────┐
│ OSPF路由协议 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ OSPF概述 │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 特点: │ │
│ │ ├── 链路状态协议 (LSA泛洪) │ │
│ │ ├── 使用SPF (Dijkstra) 算法计算最优路径 │ │
│ │ ├── 触发式更新,收敛快 │ │
│ │ ├── 支持VLSM和CIDR │ │
│ │ ├── 支持区域划分 (Area) │ │
│ │ └── 适用于中大型网络 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ OSPF区域划分 │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ ┌─────────────────────────────────────────┐ │ │
│ │ │ │ │ │
│ │ │ Area 0 (骨干区域) │ │ │
│ │ │ │ │ │
│ │ │ ┌─────┐ ┌─────┐ │ │ │
│ │ │ │ ABR │ │ ABR │ │ │ │
│ │ │ └──┬──┘ └──┬──┘ │ │ │
│ │ └──────────┼───────────┼────────────────┘ │ │
│ │ │ │ │ │
│ │ ┌────────┴──┐ ┌───┴────────┐ │ │
│ │ │ │ │ │ │ │
│ │ ┌────┴────┐ ┌────┴─┐ ┌┴────┐ ┌────┴───┐ │ │
│ │ │ Area 1 │ │Area 2│ │Area 3│ │ Area 4 │ │ │
│ │ │ │ │ │ │ │ │ │ │ │
│ │ │ Stub │ │Totall│ │NSSA │ │ Regular│ │ │
│ │ │ 区域 │ │ Stub │ │区域 │ │ 区域 │ │ │
│ │ └─────────┘ └──────┘ └──────┘ └────────┘ │ │
│ │ │ │
│ │ 区域类型: │ │
│ │ ├── Backbone (Area 0): 所有区域必须连接 │ │
│ │ ├── Stub Area: 不接受外部路由 │ │
│ │ ├── Totally Stub: 只保留本区域和默认路由 │ │
│ │ └── NSSA: 允许引入少量外部路由 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ OSPF邻接关系建立 │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 邻居状态: │ │
│ │ Down → Init → 2-Way → ExStart → Exchange │ │
│ │ → Loading → Full│ │
│ │ │ │
│ │ 建立过程: │ │
│ │ 1. HELLO: 发现邻居,协商参数 │ │
│ │ 2. 双向通信: 收到邻居的HELLO,进入2-Way │ │
│ │ 3. 交换LSDB: 交换链路状态数据库 │ │
│ │ 4. SPF计算: 使用Dijkstra算法计算路由表 │ │
│ │ │ │
│ │ 邻接条件: │ │
│ │ ├── 区域ID一致 │ │
│ │ ├── 认证一致 │ │
│ │ ├── HELLO间隔一致 │ │
│ │ └── DEAD间隔一致 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
6.3 BGP路由协议
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
┌─────────────────────────────────────────────────────────────────┐
│ BGP路由协议 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ BGP概述 │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 特点: │ │
│ │ ├── 路径矢量协议 (Path Vector) │ │
│ │ ├── 用于AS之间 (自治系统间) 路由选择 │ │
│ │ ├── 支撑互联网的核心协议 │ │
│ │ ├── 支持复杂的路由策略 │ │
│ │ └── 路由表庞大,收敛较慢 │ │
│ │ │ │
│ │ AS号: 16位 (1-65535),其中私有64512-65534 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ BGP邻居关系 │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ IBGP: 同一AS内的BGP邻居 │ │
│ │ ├── 路由下一跳不变 │ │
│ │ └── 需要全互联或使用路由反射器 │ │
│ │ │ │
│ │ EBGP: 不同AS间的BGP邻居 │ │
│ │ ├── 默认跳数为1 │ │
│ │ └── 通常直连或使用TTL=255 │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ │ │ │
│ │ │ AS 100 AS 200 │ │ │
│ │ │ ┌──────────┐ ┌──────────┐ │ │ │
│ │ │ │ BGP │◀──────▶│ BGP │ │ │ │
│ │ │ │ Router1 │ EBGP │ Router2 │ │ │ │
│ │ │ └──────────┘ └──────────┘ │ │ │
│ │ │ │ │ │ │
│ │ │ │ IBGP │ │ │
│ │ │ ▼ │ │ │
│ │ │ ┌──────────┐ │ │ │
│ │ │ │ BGP │ │ │ │
│ │ │ │ Router3 │ │ │ │
│ │ │ └──────────┘ │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ BGP路由属性 │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 公认必遵: │ │
│ │ ├── AS_PATH: 经过的AS序列 │ │
│ │ ├── NEXT_HOP: 下一跳地址 │ │
│ │ └── ORIGIN: 路由来源 │ │
│ │ │ │
│ │ 公认可选: │ │
│ │ ├── LOCAL_PREF: 本地优先级 │ │
│ │ └── ATOMIC_AGGREGATE: 聚合路由标记 │ │
│ │ │ │
│ │ 可选传递: │ │
│ │ ├── COMMUNITY: 团体属性 │ │
│ │ └── MULTI_EXIT_DISC (MED): 多出口鉴别 │ │
│ │ │ │
└─────────────────────────────────────────────────────────────────┘
|
七、路由配置实战
7.1 思科路由器配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
// ============================================
// 思科IOS路由器基础配置
// ============================================
// 进入特权模式
Router> enable
// 进入全局配置模式
Router# configure terminal
// 配置主机名
Router(config)# hostname R1
// 配置接口IP
R1(config)# interface GigabitEthernet0/0
R1(config-if)# description Connected to LAN
R1(config-if)# ip address 192.168.1.1 255.255.255.0
R1(config-if)# no shutdown
R1(config-if)# exit
R1(config)# interface GigabitEthernet0/1
R1(config-if)# description Connected to ISP
R1(config-if)# ip address 10.0.0.1 255.255.255.252
R1(config-if)# no shutdown
R1(config-if)# exit
// ============================================
// 静态路由配置
// ============================================
// 配置静态路由
R1(config)# ip route 192.168.2.0 255.255.255.0 10.0.0.2
// 目的网络 子网掩码 下一跳地址
// 配置默认路由
R1(config)# ip route 0.0.0.0 0.0.0.0 10.0.0.2
// 配置浮动静态路由 (备份路由)
R1(config)# ip route 0.0.0.0 0.0.0.0 10.0.0.6 100
// 优先级100,低于默认路由的1
// ============================================
// RIP配置
// ============================================
R1(config)# router rip
R1(config-router)# version 2
R1(config-router)# network 192.168.1.0
R1(config-router)# network 10.0.0.0
R1(config-router)# passive-interface GigabitEthernet0/1
// 防止HELLO包发送到外网
R1(config-router)# exit
// ============================================
// OSPF配置
// ============================================
R1(config)# router ospf 1
// 进程ID: 1
R1(config-router)# network 192.168.1.0 0.0.0.255 area 0
// 通配符掩码 = 255.255.255.255 - 子网掩码
// 192.168.1.0/24 → 0.0.0.255
R1(config-router)# network 10.0.0.0 0.0.0.3 area 0
// 10.0.0.0/30 → 0.0.0.3
R1(config-router)# router-id 1.1.1.1
// 手动指定Router-ID
R1(config-router)# area 0 stub
// 配置为Stub区域
R1(config-router)# exit
// ============================================
// BGP配置
// ============================================
R1(config)# router bgp 100
// AS号: 100
R1(config-router)# neighbor 10.0.0.2 remote-as 200
// 配置EBGP邻居
R1(config-router)# neighbor 192.168.1.2 remote-as 100
// 配置IBGP邻居
R1(config-router)# neighbor 192.168.1.2 next-hop-self
// IBGP路由下一跳修改为自己
R1(config-router)# network 192.168.1.0 mask 255.255.255.0
// 宣告网络
R1(config-router)# exit
// ============================================
// 查看命令
// ============================================
R1# show ip route // 查看路由表
R1# show ip interface brief // 查看接口摘要
R1# show running-config // 查看当前配置
R1# show protocols // 查看协议状态
|
7.2 华为路由器配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
# ============================================
# 华为VRP路由器配置
# ============================================
# 进入系统视图
<Huawei> system-view
# 配置主机名
[Huawei] sysname R1
# 配置接口IP
[R1] interface GigabitEthernet0/0/0
[R1-GigabitEthernet0/0/0] description Connected to LAN
[R1-GigabitEthernet0/0/0] ip address 192.168.1.1 24
[R1-GigabitEthernet0/0/0] undo shutdown
[R1-GigabitEthernet0/0/0] quit
[R1] interface GigabitEthernet0/0/1
[R1-GigabitEthernet0/0/1] description Connected to ISP
[R1-GigabitEthernet0/0/1] ip address 10.0.0.1 30
[R1-GigabitEthernet0/0/1] undo shutdown
[R1-GigabitEthernet0/0/1] quit
# ============================================
# 静态路由配置
# ============================================
[R1] ip route-static 192.168.2.0 24 10.0.0.2
// 目的网络 子网掩码 下一跳
[R1] ip route-static 0.0.0.0 0.0.0.0 10.0.0.2
// 默认路由
[R1] ip route-static 0.0.0.0 0.0.0.0 10.0.0.6 preference 100
// 浮动静态路由,优先级100
# ============================================
// RIP配置
# ============================================
[R1] rip 1
[R1-rip-1] version 2
[R1-rip-1] network 192.168.1.0
[R1-rip-1] network 10.0.0.0
[R1-rip-1] silent-interface GigabitEthernet0/0/1
// 静默接口,不发送RIP报文
[R1-rip-1] quit
# ============================================
// OSPF配置
# ============================================
[R1] ospf 1 router-id 1.1.1.1
[R1-ospf-1] area 0
[R1-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0] network 10.0.0.0 0.0.0.3
[R1-ospf-1-area-0.0.0.0] stub
// Stub区域
[R1-ospf-1-area-0.0.0.0] quit
[R1-ospf-1] quit
# ============================================
// BGP配置
# ============================================
[R1] bgp 100
[R1-bgp] group EBGP external
[R1-bgp-group-EBGP] peer 10.0.0.2 as-number 200
// EBGP邻居
[R1-bgp] group IBGP internal
[R1-bgp-group-IBGP] peer 192.168.1.2 as-number 100
[R1-bgp-group-IBGP] peer 192.168.1.2 next-hop-local
// IBGP邻居,下一跳修改为自己
[R1-bgp] peer 10.0.0.2 as-number 200
[R1-bgp] ipv4-family unicast
[R1-bgp-af-ipv4] network 192.168.1.0 255.255.255.0
// 宣告网络
[R1-bgp-af-ipv4] quit
[R1-bgp] quit
# ============================================
// 查看命令
# ============================================
[R1] display ip routing-table // 查看路由表
[R1] display ip interface brief // 查看接口摘要
[R1] display current-configuration // 查看当前配置
[R1] display ospf peer // 查看OSPF邻居
[R1] display bgp peer // 查看BGP邻居
|
7.3 网络拓扑配置实例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
┌─────────────────────────────────────────────────────────────────┐
│ 典型网络拓扑配置 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Internet │ │
│ │ │ │ │
│ │ │ │ │
│ │ ┌────┴────┐ │ │
│ │ │ 边界 │ │ │
│ │ │ 路由器 │ R1 │ │
│ │ └────┬────┘ │ │
│ │ │ eth0/0: 200.1.1.1/30 │ │
│ │ │ eth0/1: 192.168.0.1/24 │ │
│ │ │ │ │
│ │ │ │ │
│ │ ┌────┴────┐ │ │
│ │ │ 核心 │ │ │
│ │ │ 交换机 │ S1 │ │
│ │ └────┬────┘ │ │
│ │ │ │ │
│ │ ┌─────┼─────┐ │ │
│ │ │ │ │ │ │
│ │ │ │ │ │ │
│ │ VLAN10 VLAN20 VLAN30 │ │
│ │ ┌───┐ ┌───┐ ┌───┐ │ │
│ │ │PC1│ │PC2│ │PC3│ │ │
│ │ └───┘ └───┘ └───┘ │ │
│ │ 192.168.10.x 192.168.20.x 192.168.30.x │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ R1路由器配置: │
│ ```cisco │
│ // 华为VRP配置 │
│ [R1] interface GigabitEthernet0/0/0 │
│ [R1-GigabitEthernet0/0/0] ip address 200.1.1.1 30 │
│ [R1-GigabitEthernet0/0/0] quit │
│ [R1] interface GigabitEthernet0/0/1 │
│ [R1-GigabitEthernet0/0/1] ip address 192.168.0.1 24 │
│ [R1-GigabitEthernet0/0/1] quit │
│ │
│ // 默认路由 │
│ [R1] ip route-static 0.0.0.0 0.0.0.0 200.1.1.2 │
│ │
│ // OSPF配置 │
│ [R1] ospf 1 │
│ [R1-ospf-1] area 0 │
│ [R1-ospf-1-area-0.0.0.0] network 192.168.0.0 0.0.0.255 │
│ [R1-ospf-1-area-0.0.0.0] quit │
│ ``` │
│ │
└─────────────────────────────────────────────────────────────────┘
|
八、路由攻防与优化
8.1 常见路由故障排查
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
┌─────────────────────────────────────────────────────────────────┐
│ 路由故障排查方法 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 排查流程 (从下到上) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ Step 1: 物理层检查 │ │
│ │ ├── 检查网线是否连接 │ │
│ │ ├── 检查接口指示灯 │ │
│ │ └── 检查光模块功率 │ │
│ │ │ │
│ │ Step 2: 数据链路层检查 │ │
│ │ ├── 检查MAC地址 │ │
│ │ ├── 检查VLAN配置 │ │
│ │ └── 检查STP状态 │ │
│ │ │ │
│ │ Step 3: 网络层检查 │ │
│ │ ├── Ping直连接口 │ │
│ │ ├── Ping网关 │ │
│ │ ├── Ping目标 │ │
│ │ └── Traceroute追踪路径 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 常用排查命令 │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ // Ping测试 │ │
│ │ ping 192.168.1.1 // 基础ping │ │
│ │ ping -t 192.168.1.1 // 持续ping │ │
│ │ ping -l 1500 192.168.1.1 // 指定包大小 │ │
│ │ │ │
│ │ // Tracert路由追踪 │ │
│ │ tracert 8.8.8.8 // Windows │ │
│ │ traceroute 8.8.8.8 // Linux │ │
│ │ │ │
│ │ // 查看路由表 │ │
│ │ show ip route // 思科 │ │
│ │ display ip routing-table // 华为 │ │
│ │ │ │
│ │ // ARP表 │ │
│ │ show arp // 思科 │ │
│ │ display arp all // 华为 │ │
│ │ │ │
│ │ // 接口状态 │ │
│ │ show ip interface brief // 思科 │ │
│ │ display ip interface brief // 华为 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 常见故障及解决方案 │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 故障1: Ping不通直连接口 │ │
│ │ 原因: 接口DOWN / IP配置错误 / ACL阻止 │ │
│ │ 解决: 检查物理连接 → 验证IP配置 → 检查ACL │ │
│ │ │ │
│ │ 故障2: Ping不通网关 │ │
│ │ 原因: 路由缺失 / 下一跳不可达 / 防火墙阻止 │ │
│ │ 解决: 检查路由表 → 检查ARP → 检查防火墙 │ │
│ │ │ │
│ │ 故障3: Ping不通远程网络 │ │
│ │ 原因: 路由配置错误 / NAT问题 / 运营商网络问题 │ │
│ │ 解决: 逐跳排查 → 检查NAT → 联系ISP │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
8.2 路由优化技巧
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
┌─────────────────────────────────────────────────────────────────┐
│ 路由优化技巧 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 1. 路由汇总 (Route Summarization) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 问题: 路由表过大,占用内存和CPU │ │
│ │ │ │
│ │ 解决: 使用汇总路由,减少路由条目 │ │
│ │ │ │
│ │ 示例: │ │
│ │ 路由表: │ │
│ │ ├── 192.168.0.0/24 │ │
│ │ ├── 192.168.1.0/24 │ │
│ │ ├── 192.168.2.0/24 │ │
│ │ └── 192.168.3.0/24 │ │
│ │ │ │
│ │ 汇总为: 192.168.0.0/22 │ │
│ │ 包含: 0-3 四个/24网段 │ │
│ │ │ │
│ │ 配置 (思科): │ │
│ │ ip route 192.168.0.0 255.255.252.0 10.0.0.2 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 2. 浮动静态路由 (Backup Route) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 用途: 主链路故障时,自动切换到备用链路 │ │
│ │ │ │
│ │ 配置: │ │
│ │ // 主链路 │ │
│ │ ip route 0.0.0.0 0.0.0.0 10.0.0.2 │ │
│ │ // 备用链路 (优先级100,低于默认1) │ │
│ │ ip route 0.0.0.0 0.0.0.0 20.0.0.2 100 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 3. 策略路由 (PBR - Policy Based Routing) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 用途: 根据源地址/目的地址/应用等选择路由 │ │
│ │ │ │
│ │ 场景: 不同业务走不同出口 │ │
│ │ │ │
│ │ 配置 (思科): │ │
│ │ access-list 1 permit ip 192.168.1.0 0.0.0.255 │ │
│ │ route-map PBR permit 10 │ │
│ │ match ip address 1 │ │
│ │ set ip next-hop 10.0.0.2 │ │
│ │ interface GigabitEthernet0/0 │ │
│ │ ip policy route-map PBR │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 4. 负载均衡 (Load Balancing) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 等价负载均衡: │ │
│ │ ├── 目的地相同的多条路径,度量值相同 │ │
│ │ └── 流量均匀分配到各路径 │ │
│ │ │ │
│ │ 不等价负载均衡: │ │
│ │ ├── 根据带宽比例分配流量 │ │
│ │ └── 配置 variance 命令 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
九、总结
9.1 知识点速查
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
┌─────────────────────────────────────────────────────────────────┐
│ 网络知识点速查表 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ OSI七层模型: │ │
│ │ 物理层 → 数据链路层 → 网络层 → 传输层 → 会话层 │ │
│ │ → 表示层 → 应用层 │ │
│ │ │ │
│ │ TCP/IP四层: │ │
│ │ 网络接口层 → 网络层 → 传输层 → 应用层 │ │
│ │ │ │
│ │ TCP三次握手: SYN → SYN+ACK → ACK │ │
│ │ TCP四次挥手: FIN → ACK → FIN → ACK │ │
│ │ │ │
│ │ IP地址分类: │ │
│ │ A类: 1-126 / B类: 128-191 / C类: 192-223 │ │
│ │ │ │
│ │ 路由选择: 最长匹配 → 优先级 → 度量值 │ │
│ │ │ │
│ │ 路由协议: │ │
│ │ ├── RIP: 小型网络,最多15跳 │ │
│ │ ├── OSPF: 中大型网络,触发式更新 │ │
│ │ └── BGP: AS间路由,互联网核心 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
|
9.2 设备对比
| 设备 |
工作层 |
地址类型 |
主要功能 |
| 集线器 |
第1层 |
无 |
广播放大信号 |
| 交换机 |
第2层 |
MAC地址 |
根据MAC转发 |
| 路由器 |
第3层 |
IP地址 |
根据IP路由 |
| 三层交换机 |
第3层 |
IP地址 |
三层交换+路由 |
| 防火墙 |
第3-7层 |
多层 |
安全控制 |
9.3 学习建议
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
┌─────────────────────────────────────────────────────────────────┐
│ 网络学习建议 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 入门阶段: │
│ ├── 理解OSI七层模型 │
│ ├── 掌握TCP/UDP区别 │
│ ├── 理解IP地址和子网划分 │
│ └── 学会使用ping/tracert命令 │
│ ↓ │
│ 进阶阶段: │
│ ├── 掌握静态路由和默认路由配置 │
│ ├── 理解动态路由协议原理 │
│ ├── 学会配置RIP/OSPF │
│ └── 理解VLAN和三层交换 │
│ ↓ │
│ 高级阶段: │
│ ├── 掌握BGP配置 │
│ ├── 理解VPN和NAT │
│ ├── 学会网络故障排查 │
│ └── 理解网络安全和ACL │
│ │
│ 认证推荐: │
│ ├── 思科: CCNA → CCNP → CCIE │
│ └── 华为: HCIA → HCIP → HCIE │
│ │
└─────────────────────────────────────────────────────────────────┘
|
希望这篇文章能帮助你全面理解网络协议和路由知识。网络是IT基础设施的核心,需要不断实践才能真正掌握。建议多动手配置实验,加深理解。