← 返回博客列表

一、引言:为什么要学计算机网络

计算机网络是现代信息社会的基础设施。从日常的网页浏览、即时通讯,到企业的分布式系统、云计算平台,再到工业互联网、物联网,一切信息交互都依赖于计算机网络。对于软考考生而言,计算机网络不仅是上午选择题的必考模块(通常占10-15分),也是下午案例分析和论文写作的重要素材来源。

软考网络知识体系(系统架构设计师)
· 层次模型:OSI 七层、TCP/IP 四层、封装/解封装过程
· 物理层:传输介质、编码方式、信道复用、带宽计算
· 数据链路层:以太网协议、MAC 地址、VLAN、CSMA/CD、交换机
· 网络层:IP 协议、子网划分、路由算法(RIP/OSPF/BGP)、ARP/ICMP
· 传输层:TCP 三次握手/四次挥手、拥塞控制、滑动窗口、UDP
· 应用层:DNS、HTTP/HTTPS、FTP、SMTP、TLS 握手
· 网络安全:加密算法、数字证书、防火墙、IDS/IPS、VPN
· 新技术:SDN、NFV、VXLAN、IPv6

学习计算机网络的最佳路径是:从分层模型入手,逐层理解每一层的职责、协议和设备,再通过封装/解封装过程将各层串联起来,最后通过性能计算和真题练习巩固知识点。

二、网络分层模型:OSI 七层 vs TCP/IP 四层

分层是解决复杂问题的经典思维方式。网络协议栈采用分层设计,每一层专注于特定的功能,通过标准接口与相邻层交互,从而降低系统复杂度、提升可维护性。

2.1 OSI 七层参考模型 vs TCP/IP 四层模型

OSI(Open Systems Interconnection)七层模型是 ISO 于 1984 年发布的理论标准,而 TCP/IP 四层模型是实际互联网使用的工业标准。二者的对比如下:

OSI 七层模型 TCP/IP 四层模型 7. 应用层 Application HTTP · FTP · SMTP · DNS · SSH 应用层 6. 表示层 Presentation 加密 · 解密 · 格式转换 · 压缩 5. 会话层 Session 会话建立·维持·终止·同步点 传输层 Transport TCP · UDP · 端口号 · 流量控制 拥塞控制 · 可靠传输 4. 传输层 Transport TCP · UDP · 端口 · 差错恢复 3. 网络层 Network IP · ICMP · ARP · 路由选择 网际层 Internet IP · ICMP · ARP · 路由 2. 数据链路层 Data Link MAC · 交换机 · VLAN · 帧差错 网络接口层 Link MAC · 物理寻址 · 介质访问 1. 物理层 Physical 电缆 · 光纤 · 无线电 · 编码 数据流动方向 ↓ 发送方:逐层封装 数据流动方向 ↑ 接收方:逐层解封装
图 1:OSI 七层模型 vs TCP/IP 四层模型对比
软考速记口诀:OSI 七层
· 从上到下:应表会传网数物(谐音:应表示传往无数物)
· 7-应用层 6-表示层 5-会话层 4-传输层 3-网络层 2-数据链路层 1-物理层
· TCP/IP 四层对应:应用层 = 应用+表示+会话;传输层 = 传输;网际层 = 网络;网络接口层 = 链路+物理

2.2 数据封装与解封装过程

数据在发送方从上层到下层逐层封装,每一层添加自己的协议头(Header);在接收方从下层到上层逐层解封装,每一层去掉对应的协议头。这是网络通信的核心机制。

发送方(封装 Encapsulation) Data 应用层 TCP头 Data 传输层 → 段 Segment IP头 TCP Data 网络层 → 包/分组 Packet 帧头 IP TCP Data FCS 链路层 → 帧 Frame 01101010 11001110 00110101 11100110 0101... 物理层 → 比特流 Bits (电/光/无线信号) 传输介质 双绞线/光纤/无线电 接收方(解封装 Decapsulation) 01101010 11001110 00110101 11100110 0101... 物理层 帧头 Packet + TCP + Data FCS ✓ 去帧头+FCS 链路层
图 2:数据封装(发送方)与解封装(接收方)过程
各层数据单位名称(考点)
· 应用层:报文(Message)
· 传输层:报文段 / 段(Segment, TCP)或 用户数据报(Datagram, UDP)
· 网络层:分组 / 包(Packet / Datagram)
· 数据链路层:帧(Frame)
· 物理层:比特流(Bit Stream)

三、物理层:信号传输与编码

物理层是 OSI 模型的最底层,负责在传输介质上传输原始的比特流。它不关心数据的含义,只关心如何将 0 和 1 转换为物理信号(电、光、无线电波)并可靠传输。

3.1 传输介质

传输介质分为有线介质和无线介质两大类。不同介质在带宽、传输距离、抗干扰能力和成本方面差异显著。

介质类型 子类 带宽/速率 传输距离 抗干扰 典型应用
双绞线
(Twisted Pair)
UTP(非屏蔽)
Cat5e/6/6a/7
100Mbps ~ 10Gbps ≤ 100m 一般 以太网、局域网
STP(屏蔽) 同UTP,略高 ≤ 100m 较好 工业环境、强电磁干扰区
同轴电缆
(Coaxial)
基带同轴
(50Ω)
10Mbps ≤ 500m(粗缆)
≤ 185m(细缆)
较好 早期以太网(10BASE5/2)
宽带同轴
(75Ω)
数百Mbps 数公里 好 有线电视(CATV)
光纤
(Fiber Optic)
单模光纤
(SMF, 9μm)
10Gbps ~ 400Gbps+ 数十 ~ 上百公里 极强 骨干网、长途通信、数据中心
多模光纤
(MMF, 50/62.5μm)
1Gbps ~ 100Gbps ≤ 550m 极强 楼宇内、数据中心TOR
无线介质 无线电波
(WiFi, 4G/5G)
数百Mbps ~ 数Gbps 数十米 ~ 数公里 较差 WLAN、移动通信
微波 数Gbps 视距 ~ 50km 一般 点对点回传、卫星通信
红外线 ~数Mbps ≤ 数米 较好 遥控器、短距通信
光纤考点速记
· 单模 vs 多模:单模纤芯细(9μm)、用激光、距离远、成本高;多模纤芯粗、用LED、距离近、成本低
· 全反射原理:光从光密介质入射到光疏介质,入射角大于临界角时发生全反射
· 优点:带宽极高、抗电磁干扰、体积小重量轻、传输距离远、保密性好

3.2 数据编码与调制

数字数据在传输前需要转换为适合信道传输的信号。编码方式分为数字-数字编码(如曼彻斯特编码)和数字-模拟调制(如ASK/FSK/PSK/QAM)。

3.2.1 曼彻斯特编码与差分曼彻斯特编码

这是以太网物理层常用的自同步编码方式。每个码元中间都有一个跳变,既作为时钟同步信号,又表示数据。

曼彻斯特编码(Manchester Encoding) 数据位: 1 0 1 1 0 0 1 0 1 0 高 低 码元中间跳变 曼彻斯特规则:1 = 高→低(↓),0 = 低→高(↑) 差分曼彻斯特:码元起始有跳变=0,无跳变=1(中间总有跳变) NRZ 编码 vs 曼彻斯特编码 对比 NRZ: 曼彻斯特: 1 0 1 1 NRZ:高电平=1,低电平=0,无自同步能力 曼彻斯特:中间总有跳变 → 自带时钟同步 ⚠ 编码效率 = 50%(波特率 = 2×比特率)
图 3:曼彻斯特编码波形 —— 自同步编码,码元中间跳变表示数据

3.3 信道复用技术

信道复用允许多个用户共享同一条传输介质,提高线路利用率。常见复用方式有:

四类信道复用技术

  • FDM(频分复用):将信道划分为多个不同频率的子信道,每个用户占用一个频段。如:ADSL、有线电视、传统无线电广播
  • TDM(时分复用):将时间划分为固定的时隙,用户轮流占用整个带宽。如:T1/E1、SDH/SONET、GSM
  • WDM(波分复用):光纤中使用不同波长(颜色)的光传输多路信号,本质是光的FDM。如:DWDM(密集波分复用)
  • CDMA(码分多址):每个用户使用唯一的正交编码序列,可同时同频传输。如:3G移动通信(WCDMA/CDMA2000)
奈奎斯特定理 vs 香农定理(必考计算)
· 奈奎斯特(无噪声理想信道):最大数据传输率 R = 2W × log₂(V) bps
  W = 带宽(Hz),V = 码元离散级数(如二进制 V=2,四进制 V=4)
· 香农(有噪声实际信道):极限数据传输率 C = W × log₂(1 + S/N) bps
  S/N = 信噪比(功率比),常以 dB 表示:dB = 10×log₁₀(S/N)。如 SNR=30dB → S/N=1000

数据链路层负责在相邻节点之间可靠传输数据帧。它将物理层的比特流组装成帧,进行差错检测与纠正,并解决共享介质的访问冲突问题。

4.1 CSMA/CD 介质访问控制

CSMA/CD(Carrier Sense Multiple Access with Collision Detection,带冲突检测的载波侦听多路访问)是传统半双工以太网使用的介质访问控制协议。

CSMA/CD 工作流程(先听后发 · 边发边听 · 冲突重传) ① 载波侦听 CS: 监听信道 是否空闲? 忙? 是 → 等待(退避) 否→ ② 发送数据 MA: 多路访问 开始发送帧 ③ 冲突检测 CD: 边发边监听 检测到冲突? ④ 冲突处理 发送32位JAM 阻塞信号 冲突 ⑤ 二进制指数 退避算法 等待随机时隙 重传(≤16次,否则失败) 无冲突 ✅ 发送成功 等待ACK或下一帧 帧间隙IFG=96bit 冲突域示意 A B C ⚠ A和C同时发送 → 冲突 → 两者都检测到错误信号 最小帧长=2×传播时延×带宽(保证发送完前能检测到冲突) 以太网最小帧长 = 64字节(对应10Mbps, 2.5km)
图 4:CSMA/CD 工作流程与冲突域示意
重要:CSMA/CD 适用范围
· CSMA/CD 仅用于半双工模式的共享介质以太网(如 Hub 连接的 10BASE-T)
· 现代全双工交换机网络不使用 CSMA/CD(因为每个端口是独立冲突域,不会冲突)
· 考试中注意区分:集线器 Hub = 共享冲突域,交换机 Switch = 隔离冲突域

4.2 以太网帧结构

以太网(IEEE 802.3)是应用最广泛的局域网技术。以太网帧是数据链路层的传输单位,其结构如下:

Ethernet II 帧结构(DIX 以太网 v2) 前导码 Preamble 7B 帧首定界 SFD 1B (10101011) 目的MAC Destination 6B (48bit) 源MAC Source 6B (48bit) 类型 Type 2B 数据/载荷 Payload (IP Packet 等) 46B ~ 1500B (MTU=1500) FCS CRC 校验 4B (32bit) 最小帧长 = 6+6+2+46+4 = 64 字节    |    最大帧长 = 6+6+2+1500+4 = 1518 字节 常见 Type 字段值(EtherType): 0x0800 = IPv4 0x86DD = IPv6 0x0806 = ARP 0x8100 = VLAN (802.1Q) 0x8847 = MPLS MAC 地址格式(48位):OUI(24位 厂商标识) + NIC(24位 厂商分配)   例:00-1A-2B-3C-4D-5E
图 5:Ethernet II 帧结构(最常用以太网封装)

4.3 VLAN 虚拟局域网

VLAN(Virtual Local Area Network)是一种将物理局域网在逻辑上划分为多个独立广播域的技术。VLAN 通过隔离广播域提升安全性和带宽利用率,是现代交换网络的基础。

VLAN 示意图:一台物理交换机 = 多个逻辑局域网 物理交换机 Switch VLAN 10 蓝色域 VLAN 20 粉色域 VLAN 30 绿色域 VLAN 40 黄色域 Trunk PC-A1 VLAN 10 PC-A2 VLAN 10 PC-B1 VLAN 20 PC-B2 VLAN 20 PC-C1 VLAN 30 PC-D1 VLAN 40 三层交换机 / 路由器 VLAN间路由 802.1Q Trunk VLAN 核心特性 ✓ 同VLAN可直接通信(二层) ✗ 不同VLAN必须通过三层路由
图 6:VLAN 虚拟局域网示意图 —— 物理交换机逻辑划分为多个广播域
特性 VLAN(802.1Q) VXLAN(RFC 7348)
全称 Virtual LAN 虚拟局域网 Virtual eXtensible LAN 可扩展虚拟局域网
工作层次 二层(数据链路层) 三层之上(MAC-in-UDP 隧道)
VID 位数 12 bit → 最多 4094 个VLAN 24 bit → 最多 16M 个VNI
穿越三层网络 ❌ 不能(需Trunk+MPLS等) ✅ 原生支持(基于IP/UDP封装)
典型场景 企业园区网、数据中心接入层 云计算多租户、SDN、大二层网络
转发设备 二层交换机 VTEP(VXLAN Tunnel End Point)

五、网络层:IP、子网划分与路由算法

网络层是整个互联网的"导航层",负责将数据包从源主机跨网络路由到目的主机。核心协议包括:IP(寻址+分组)、ARP(地址解析)、ICMP(差错报告)、以及各种路由协议(RIP/OSPF/BGP)。

5.1 IPv4 地址结构与分类

IPv4 地址长度为 32 位(4 字节),通常用点分十进制表示(如 192.168.1.1)。IP 地址由网络号和主机号两部分组成,早期通过地址类别(A/B/C/D/E类)划分,现在主要使用 CIDR(无类域间路由)。

IPv4 地址分类(A/B/C/D/E 五类) A类 0NNNNNNN 网络号(7bit) HHHHHHHH 主机号 HHHHHHHH 主机号 HHHHHHHH 主机号(24bit) 首字节:1 ~ 126(二进制首位=0) 网络数:2⁷ = 126   |   每个网络主机数:2²⁴-2 ≈ 1677万 ★ 例:10.0.0.1,默认掩码 255.0.0.0 B类 10NNNNNN 网络号(14bit) NNNNNNNN 网络号 HHHHHHHH 主机号 HHHHHHHH 主机号(16bit) 首字节:128 ~ 191(二进制首两位=10) 网络数:2¹⁴ = 16384   |   每网主机数:2¹⁶-2 = 65534 ★ 例:172.16.0.1,默认掩码 255.255.0.0 C类 110NNNNN 网络号(21bit) NNNNNNNN 网络号 NNNNNNNN 网络号 HHHHHHHH 主机号(8bit) 首字节:192 ~ 223(二进制首三位=110) 网络数:2²¹ ≈ 209万   |   每网主机数:2⁸-2 = 254 ★ 例:192.168.1.1,默认掩码 255.255.255.0 D类 首字节:224 ~ 239(首四位=1110) 用途:组播地址 Multicast ★ 例:224.0.0.1(所有主机)、224.0.0.5(OSPF) E类 首字节:240 ~ 255(首四位=1111) 用途:保留地址(实验用) 不分配给公网使用 ★ 特殊地址 & 私有地址(RFC 1918) 127.0.0.0/8:回环地址(Loopback,本机测试) 私网A:10.0.0.0/8    私网B:172.16.0.0/12    私网C:192.168.0.0/16 0.0.0.0:本网络/任意地址    255.255.255.255:有限广播 主机号全0=网络地址    主机号全1=直接广播地址
图 7:IPv4 地址分类(A/B/C/D/E类)与特殊地址

5.2 子网划分与 CIDR

子网划分(Subnetting)通过借用主机号的若干位作为子网号,将一个大网络划分为多个小的子网,提高 IP 地址利用率。CIDR(Classless Inter-Domain Routing,无类域间路由)取消了传统 A/B/C 类,使用前缀长度表示掩码,如 /24 表示前24位是网络号。

子网划分核心规则
· 子网数 = 2借用位数(全0全1子网可用,按RFC 950规定扣2,但考题通常不扣)
· 每个子网可用主机数 = 2剩余主机位数 - 2(全0=网络地址,全1=广播地址)
· 掩码快速计算:/24=255.255.255.0,/25=255.255.255.128,/26=255.255.255.192,/27=255.255.255.224
· 块大小(Block Size)= 256 - 第四个非255掩码值,如/26的块大小=256-192=64
子网划分示例:192.168.1.0/24 → 划分为4个 /26 子网 原网 192.168.1.0 /24    (254 可用主机) 借2位子网号 (/24 → /26) 子网 0 192.168.1.0/26 可用: .1 ~ .62 (62台) 子网 1 192.168.1.64/26 可用: .65 ~ .126 (62台) 子网 2 192.168.1.128/26 可用: .129 ~ .190 (62台) 子网 3 192.168.1.192/26 可用: .193 ~ .254 (62台) IP 地址 32bit 结构(以 192.168.1.64/26 为例) 11000000 192 (网络号, 8bit) 10101000 168 (网络号, 8bit) 00000001 1 (网络号, 8bit) 01 子网号(2bit) 000000 主机号(6bit)
图 8:子网划分示例 —— C类地址 /24 借2位划分为 4 个 /26 子网

5.3 ARP 地址解析协议

ARP(Address Resolution Protocol)用于将IP 地址(三层)解析为 MAC 地址(二层)。因为二层交换机转发依赖 MAC 地址,而主机只知道目标 IP,因此需要 ARP 做地址映射。

ARP 请求-响应流程:IP → MAC 地址解析 主机 A IP: 192.168.1.10 MAC: AA-AA-AA-AA-AA-AA 已知B的IP=1.20 未知B的MAC? 交换机 主机 B IP: 192.168.1.20 MAC: BB-BB-BB-BB-BB-BB ① ARP Request (广播) 目的MAC = FF:FF:FF:FF:FF:FF 请求:谁有192.168.1.20?请告诉我 ② 交换机泛洪广播 ③ ARP Reply (单播) 目的MAC = AA-AA-AA-AA-AA-AA 回答:192.168.1.20 的MAC是 BB-BB-...-BB ✓ 双方将 IP↔MAC 映射存入 ARP 缓存表(通常老化时间 15-20 分钟),下次直接查表无需广播
图 9:ARP 请求-响应流程(广播请求,单播响应)

5.4 路由协议:RIP vs OSPF vs BGP

路由协议帮助路由器自动学习网络拓扑,构建路由表。按工作范围分为内部网关协议 IGP(AS 内,如 RIP、OSPF)和外部网关协议 EGP(AS 间,如 BGP)。

路由协议对比:RIP · OSPF · BGP 应用场景 AS 100(企业/校园网内部) R1 RIP / OSPF R2 RIP / OSPF R3 RIP / OSPF R4 RIP / OSPF IGP 内部网关协议:RIP · OSPF · IS-IS · EIGRP AS 200(ISP / 其他运营商) B1 BGP Speaker B2 BGP Speaker B3 BGP Speaker EGP 外部网关协议:BGP-4(唯一) BGP 互联 RIP 跳数≤15,OSPF 区域化,BGP 基于策略选路
图 10:路由协议部署场景 —— IGP(AS内部) vs EGP(AS之间)
对比项 RIP(距离矢量) OSPF(链路状态) BGP(路径矢量)
类型 IGP 内部网关协议 IGP 内部网关协议 EGP 外部网关协议
算法 距离矢量(Bellman-Ford) 链路状态(Dijkstra SPF) 路径矢量(Best-path 策略)
度量 Metric 跳数(Hop Count),最大15跳,16=不可达 开销 Cost(默认=10⁸/带宽) AS-Path 长度、Local-Pref、MED 等多种属性
适用规模 小型网络(≤15跳) 中大型企业/园区网 互联网骨干网、ISP之间
更新方式 定期广播整张路由表(30s) 触发更新 LSA 洪泛(仅变化部分) 触发更新,只在变化时发送 Update
防环机制 水平分割、毒性逆转、最大跳数 SPF 算法天然无环 + 区域分层 AS-Path 属性(看到自己AS号丢弃)
端口 UDP 520 IP 协议号 89(不使用TCP/UDP) TCP 179
特点 配置简单,收敛慢,易产生计数到无穷 收敛快,支持区域划分(Area 0骨干) 可控性最强,策略路由,互联网基石

六、传输层:TCP/UDP 与可靠传输

传输层是 OSI 模型中唯一负责端到端(进程到进程)通信的层次。它使用端口号区分同一台主机上的不同应用进程。核心协议有两个:TCP(面向连接、可靠)和 UDP(无连接、尽力而为)。

6.1 TCP vs UDP 对比

特性 TCP(传输控制协议) UDP(用户数据报协议)
连接性 ✅ 面向连接(三次握手建立,四次挥手释放) ❌ 无连接(发送前无需建立连接)
可靠性 ✅ 可靠传输:确认ACK、重传、排序、流量控制 ❌ 不可靠:不确认、不重传、不保证顺序
首部开销 至少 20 字节(选项最多60B) 仅 8 字节(源端口+目的+长度+校验和)
流量/拥塞控制 ✅ 滑动窗口(流量控制) + 慢启动/拥塞避免(拥塞控制) ❌ 无任何控制,可能丢包也不会降速
传输方式 字节流(Stream),无边界 数据报(Datagram),有明确边界
双工 全双工(同一连接双向同时收发) 全双工(但无连接概念)
典型应用 HTTP/HTTPS、FTP、SSH、SMTP、Telnet、MySQL DNS、DHCP、SNMP、RIP、视频/语音直播、QUIC
核心优势 可靠、稳定、顺序到达 速度快、开销小、实时性好

6.2 滑动窗口与可靠传输

TCP 使用滑动窗口(Sliding Window)机制同时实现流量控制(接收方控制发送方速度,避免缓存溢出)和连续 ARQ(批量发送+累积确认,提升传输效率)。

TCP 滑动窗口机制:发送窗口 = 4,连续发送 + 累积确认 发送方缓冲区(字节序号) #1 ✓ #2 ✓ #3 已发 #4 已发 #5 已发 #6 已发 #7 可发 #8 可发 #9 不可 #10 不可 发送窗口 = 4(接收方通告 rwnd) 接收方缓冲区 & 处理 已读#1 已读#2 缓存#3 缓存#4 等待#5 等待#6 空闲 空闲 ACK=3 (累积确认) rwnd = 4 → 窗口右移2格 累积确认(Cumulative ACK):ACK=N 表示序号<N 的字节全部正确收到 若超时未收到 ACK,触发超时重传(Go-Back-N 重传该窗口所有未确认段)
图 11:TCP 滑动窗口 —— 连续 ARQ + 累积确认 + 流量控制

6.3 TCP 三次握手(连接建立)

TCP 是面向连接的协议,双方在传输数据前必须通过三次握手(Three-way Handshake)建立连接,目的是:① 同步双方初始序列号 ISN;② 协商双方窗口大小/MSS等参数;③ 确认双方收发能力正常。

TCP 三次握手建立连接:SYN → SYN+ACK → ACK 客户端 Client CLOSED 状态 ↓ SYN_SENT ↓ ESTABLISHED ✓ 连接已建立 可以开始传输数据 服务器 Server LISTEN 状态 ↓ SYN_RCVD ↓ ESTABLISHED ✓ 连接已建立 ① SYN = 1 seq = x(客户端ISN) ② SYN = 1, ACK = 1 seq = y, ack = x+1 ③ ACK = 1 seq = x+1, ack = y+1(可携带数据) 为什么三次?① 同步双向序列号 ② 防止已失效连接请求到达服务器导致误建连接(防止历史SYN污染)
图 12:TCP 三次握手建立连接(SYN → SYN+ACK → ACK)

6.4 TCP 四次挥手(连接释放)

TCP 连接是全双工的,释放连接需要四次挥手(Four-way Handshake),因为双方各自独立关闭写通道(发送 FIN),并独立确认对方的关闭请求(ACK)。

TCP 四次挥手释放连接:FIN → ACK → FIN → ACK 主动方 Client ESTABLISHED ↓ FIN_WAIT_1 ↓ FIN_WAIT_2 ↓ TIME_WAIT (等待 2MSL) CLOSED 被动方 Server ESTABLISHED ↓ CLOSE_WAIT ↓ LAST_ACK CLOSED ① FIN = 1, ACK = 1 seq = u, ack = v(主动关闭) ② ACK = 1 ack = u+1(确认收到FIN) ★ 此时 Server 可能还在发送剩余数据(半关闭状态) ③ FIN = 1, ACK = 1 seq = w, ack = u+1(被动方也发完了) ④ ACK = 1 为什么 TIME_WAIT = 2MSL?① 确保最后一个ACK到达对方 ② 防止旧连接的迟到报文被新连接误收(MSL=最长报文寿命)
图 13:TCP 四次挥手释放连接(FIN → ACK → FIN → ACK)

6.5 TCP 拥塞控制:cwnd 四相位

TCP 拥塞控制通过动态调整拥塞窗口 cwnd(Congestion Window),防止过多数据注入网络导致路由器过载。经典算法包含四个阶段:慢启动 → 拥塞避免 → 快重传 → 快恢复。

TCP 拥塞控制 cwnd 变化相位图(Tahoe/Reno 算法) 传输轮次 RTT → cwnd (MSS) ssthresh (慢启动阈值) ① 慢启动 Slow Start 每RTT cwnd翻倍(指数增长) ② 拥塞避免 CA 每RTT cwnd+1(线性加法增 AIMD) 3个重复ACK → 快重传+快恢复 ③ 快重传+快恢复 FR ssthresh=cwnd/2, cwnd=ssthresh, 线性恢复 ⚠ Tahoe:超时 → ssthresh=cwnd/2, cwnd=1 重新慢启动(更激进) Reno:3 dupACK → 快恢复(避免回1,性能更好) AIMD(加性增 乘性减):无丢包+1/RTT;有丢包×0.5 → 收敛到公平带宽分配
图 14:TCP 拥塞控制 cwnd 四相位(慢启动 → 拥塞避免 → 快重传 → 快恢复)
💡 软考必背:TCP 拥塞控制口诀
"慢指翻,避加一,三包乘半超回一" —— 慢启动指数翻倍;拥塞避免每RTT+1;收到3个重复ACK,ssthresh=cwnd/2,cwnd=ssthresh(Reno快恢复);超时则cwnd回1重新慢启动(Tahoe)。

七、应用层协议:DNS/HTTP/FTP/SMTP

应用层是 OSI/TCP 模型的最顶层,直接为用户进程提供网络服务。每个应用层协议针对特定业务场景设计,并约定了报文格式、交互时序和语义。软考重点考查:DNS 域名解析、HTTP 各版本对比、FTP 双连接模型、SMTP/POP3/IMAP 邮件三协议。

7.1 DNS 域名系统

DNS(Domain Name System)是一个分布式分层数据库,作用是将人类可读的域名(如 www.example.com)解析为机器可路由的 IP 地址。DNS 使用 UDP 53 端口(响应超过 512B 时切换 TCP 53)。

📚 DNS 域名空间结构(从右到左):
根域 . → 顶级域 TLD(.com / .cn / .org / .net / .edu)→ 二级域(example.com)→ 三级域(www.example.com / mail.example.com)
DNS 服务器类型:根域名服务器(全球13组根)→ TLD 顶级域服务器 → 权威域名服务器 → 本地递归解析器(Local DNS)

7.1.1 DNS 查询方式:递归查询 vs 迭代查询

DNS 递归查询完整流程:主机 → Local DNS → 根 → TLD → 权威 用户主机 Client 查 www.abc.com 本地 DNS Local Resolver (递归代理) ✓ 有缓存直接用 否则迭代向上问 根 DNS . (13组根) .com TLD 顶级域服务器 权威 DNS abc.com ★ 最终答案 www=1.2.3.4 ①递归查询 ②问根 → 返回.com NS ③问.com → 返回abc NS ④问权威 → 返回IP=1.2.3.4 ⑤⑥ 逐层返回最终结果,Local DNS 缓存 TTL,返回主机 主机也缓存 DNS
图 15:DNS 递归查询流程(主机→Local DNS 递归;Local DNS→各级服务器迭代)

7.1.2 DNS 记录类型(软考常考)

7.2 HTTP / HTTPS 协议与版本演进

HTTP(HyperText Transfer Protocol)是 Web 的基石,基于 TCP(默认 80 端口),采用"请求-响应"模型。HTTPS = HTTP + TLS/SSL(默认 443 端口),提供加密、完整性、身份认证三重安全保障。

对比维度HTTP/1.0HTTP/1.1HTTP/2HTTP/3
发布年份 1996 年 1999 年 2015 年(RFC 7540) 2022 年(RFC 9114)
底层传输 TCP(短连接) TCP(默认长连接 keep-alive) TCP + TLS 1.2+ QUIC(基于 UDP)
连接复用 ❌ 每次请求新建 TCP 连接 ✅ 同域名持久连接(串行) ✅ 多路复用(单 TCP 连接并行多流) ✅ QUIC 原生多流,无头阻塞
队头阻塞 严重(每请求一连接) 有(串行请求流水线) ✅ HTTP 层解决,但TCP 层仍有 ✅✅ 彻底解决(UDP 无流阻塞)
头部压缩 ❌ 纯文本重复发送 ❌ 纯文本 ✅ HPACK 静态+动态字典 ✅ QPACK(多路复用安全)
服务器推送 ❌ ❌ ✅ Server Push(CSS/JS提前发) 🟡 保留但不推荐(实际已废)
建连握手 TCP 3次握手 TCP 3次握手 TCP 3 + TLS 2~3 RTT ✅ 0/1 RTT(QUIC 集成 TLS)
切换网络 断开重连 断开重连 断开重连(4元组变化) ✅ 连接迁移(Connection ID,WiFi→4G不断)
典型场景 早期静态 Web 传统 Web / API 现代 Web、大公司官网 移动端、视频直播、Google/Chrome
表 4:HTTP/1.0 vs HTTP/1.1 vs HTTP/2 vs HTTP/3 全版本对比
⚠️ HTTP/1.1 队头阻塞(Head-of-Line Blocking)软考高频考点:
HTTP/1.1 虽然支持长连接(Connection: keep-alive)和流水线(Pipelining),但默认流水线是关闭的,且即使开启,同一 TCP 连接上请求必须按顺序响应——如果第 1 个请求阻塞,后续请求即便已被服务器处理完也不能提前返回。HTTP/2 用帧+流ID多路复用解决了 HTTP 层队头阻塞,但 TCP 本身的队头阻塞(一个 TCP 段丢失,整连接重传)仍然存在,直到 HTTP/3 + QUIC(UDP)才彻底解决。

7.3 其他常见应用层协议

📁 FTP(文件传输协议)- TCP 20/21

  • 控制连接(端口 21):始终保持,传命令(USER/PASS/LIST/RETR/STOR)
  • 数据连接(端口 20 主动模式 / 随机端口被动模式):传完就断
  • 主动模式 PORT:服务器主动连客户端 20;被动模式 PASV:客户端连服务器随机高端口(防火墙友好)
  • 缺点:明文传用户名密码;TFTP(UDP 69)是简化版 FTP,用于嵌入式/网络启动

📧 邮件三件套:SMTP / POP3 / IMAP

  • SMTP(TCP 25):推协议,发邮件 —— 客户端 → 发送服务器 → 接收服务器("推"到对方邮箱)
  • POP3(TCP 110):拉协议,收邮件 —— 客户端从服务器"下载并删除"(默认离线模式,服务器不保留副本)
  • IMAP(TCP 143):拉协议,收邮件 —— 客户端与服务器同步(在线模式,服务器保留,多设备一致)
  • SMTPS 465 / POP3S 995 / IMAPS 993 为 SSL/TLS 加密版本

🌐 其他端口速记(软考必背)

  • DNS UDP 53、SSH TCP 22、Telnet TCP 23、HTTPS TCP 443、RDP TCP 3389
  • DHCP:客户端 UDP 68 → 服务器 UDP 67(动态分配 IP)
  • SNMP:Agent UDP 161(查询)、Manager UDP 162(Trap 告警)
  • MySQL 3306、Redis 6379、PostgreSQL 5432、MongoDB 27017

八、网络安全:加密、TLS 与防火墙

8.1 网络安全三要素 CIA

💡 加密算法速记:
• 对称加密(同密钥加解密):DES/3DES、AES、SM4、RC4 —— 速度快,适合大流量数据加密
• 非对称加密(公钥加密私钥解密 / 私钥签名公钥验签):RSA、ECC、SM2、DH —— 速度慢,适合密钥交换+数字签名
• 哈希(摘要)(不可逆,定长输出):MD5(128bit)、SHA-1(160bit)、SHA-256/512、SM3 —— 用于完整性校验

8.2 TLS 握手流程(HTTPS 的核心)

TLS(Transport Layer Security)当前主流版本是 TLS 1.2 和 TLS 1.3(1.3 握手从 2 RTT 优化到 1 RTT / 0 RTT,安全性也更高)。握手的核心目标是:① 协商加密套件;② 交换会话密钥(通过非对称加密保护或 ECDHE);③ 验证服务器身份(数字证书)。

TLS 1.2 完整握手流程(ECDHE 密钥交换 + RSA 证书认证) 浏览器 Client 未加密明文阶段 Web Server 持有 CA 证书 ① ClientHello(明文) TLS版本 + 随机数Rc + 支持的加密套件列表 + 支持的压缩/SNI ② ServerHello(明文) 选定版本 + 随机数Rs + 选定加密套件(如 ECDHE-RSA-AES128-GCM-SHA256) ③ Certificate + ServerKeyExchange + Done 发送 CA 证书链 + ECDHE 公钥参数(签名防篡改) + 结束信号 ④ ClientKeyExchange + ChangeCipherSpec + Finished 发ECDHE客户端公钥→双方根据(Rc,Rs,ECDH计算)得到PreMaster→会话密钥 Master Secret ★ 从此刻起,客户端切换为对称加密通信(用新密钥加密 Finished 验证密钥一致) ⑤ Server ChangeCipherSpec + Finished(加密) TLS 1.3 简化:①+② 合并为 1 RTT 同时传密钥参数,删除弱加密套件/RSA密钥交换,支持 0-RTT 恢复会话
图 16:TLS 1.2 握手流程(非对称加密协商密钥 → 对称加密传输数据)
⚠️ HTTPS 中间人攻击(MITM)与 CA 证书链验证:
为什么需要数字证书?因为单纯的 Diffie-Hellman 密钥交换无法抵御"中间人攻击"(攻击者伪造两边公钥)。解决方案是 PKI/CA 体系:服务器公钥由权威 CA 用其私钥签名生成证书,浏览器/操作系统内置CA 根证书公钥,可以验签确认证书真实性;同时验证域名匹配、有效期、证书吊销列表 CRL / OCSP。

8.3 防火墙技术与部署拓扑

典型企业网络安全部署拓扑:DMZ + 双防火墙(纵深防御) Internet 公网/云 边界 Router 外部 FW1 ACL粗过滤 ⛔ DMZ 隔离区 ⛔ 对外暴露的服务器区域 Web服务器 80/443 邮件 SMTP 25 DNS 解析 UDP 53 内部 FW2 WAF+IPS 核心 交换 机 L3 VLAN ACL 办公PC DB内网 研发 FW1 只放行访问 DMZ 端口 DMZ 服务器无权主动访问内网 FW2 细粒度管控内网数据
图 17:防火墙部署拓扑(双防火墙 + DMZ 纵深防御架构)

九、SDN 与网络虚拟化

9.1 SDN(软件定义网络)

传统网络采用分布式控制(每台交换机/路由器运行自己的控制平面,逐跳协议收敛慢、配置繁琐)。SDN 革命性地将控制平面(Control Plane)与数据平面(Data Plane)分离,集中化、可编程地控制网络。

🧠 SDN 三层架构(ONF 定义)

  1. 应用层(Application Layer):各种 SDN 应用 / 业务逻辑 —— 负载均衡、ACL、防火墙、流量工程 TE
  2. 控制层(Control Layer):SDN 控制器(核心大脑)—— OpenDaylight / ONOS / Floodlight,维护全局网络视图,计算流表
  3. 基础设施层(Infrastructure Layer):SDN 交换机(白盒交换机)—— 只做数据转发,通过 OpenFlow 协议接收控制器下发的流表规则(Match-Action 模式)
📘 OpenFlow 协议(SDN 南向接口标准):
控制器 ↔ 交换机之间的通信协议,控制器通过 Packet-in / Packet-out / Flow-Mod 消息管理交换机的流表(Flow Table)。每条流表项 = 匹配字段(MAC/IP/端口/VLAN…) + 动作(转发/丢弃/修改/上送控制器) + 计数器 + 优先级。

9.2 网络虚拟化:VLAN vs VxLAN

对比维度VLAN(802.1Q)VxLAN(RFC 7348)
定位 二层虚拟局域网(园区/数据中心) 大二层虚拟扩展局域网(云原生/多租户)
隔离数量上限 4094 个(VID 12bit,去掉0/4095保留) 1600 万(VNI 24bit)—— 多租户云计算足够
封装方式 在二层以太网帧中插入 4B 802.1Q 标签 MAC-in-UDP:二层帧 + VxLAN头(8B) → UDP → IP → 外层MAC
跨三层能力 ❌ 只能在二层域内(VLAN 要靠 Trunk 透传) ✅ 跑在普通 IP/UDP 上,可跨三层路由(大二层互通)
BUM 流量处理 交换机泛洪(广播/未知单播/组播) VTEP 用组播或头端复制(HER)转发
典型场景 企业内网部门隔离、办公网 VLAN OpenStack/K8s 容器网络、VMware NSX、公有云多租户
表 5:VLAN vs VxLAN 对比(4096 限制突破 + 大二层跨域)

十、网络性能计算:带宽、时延、吞吐量

10.1 四大核心指标

  1. 带宽(Bandwidth):链路的最高数据传输速率,单位 bps(bit/s)。由物理介质决定(如千兆以太网 = 1 Gbps)。
  2. 时延(Latency / Delay):数据从发送方到接收方所需的总时间 = 发送时延 + 传播时延 + 处理时延 + 排队时延
  3. 吞吐量(Throughput):单位时间实际通过的数据量(≤ 带宽,受拥塞、协议开销影响)。
  4. 时延带宽积(Bandwidth-Delay Product, BDP):= 带宽 × 往返时延 RTT,单位 bit。表示"能同时在路上跑的比特数",也等于TCP 管道容量(达到最大吞吐所需的最小窗口大小)。
📐 软考必考公式:
① 发送时延 = 数据帧长度(bit) / 发送速率(bps) —— 在主机/路由器内部,数据"推到链路上"的时间
② 传播时延 = 链路长度(m) / 信号在介质中传播速度(m/s) —— 电磁波在链路上跑的时间(铜缆≈2×10⁸ m/s,光纤≈2.3×10⁸ m/s,真空=3×10⁸ m/s)
③ RTT(Round-Trip Time)往返时间 = 2 × 传播时延(近似) + 中间节点处理/排队
④ 时延带宽积 BDP = 带宽(bps) × RTT(s) = 管道容量(bit)
⑤ 信道利用率 U = 发送时延 / (发送时延 + RTT) —— 停等协议利用率很低,滑动窗口利用率 = 窗口大小 × 发送时延 / (发送时延 + RTT),上限 ≤ 1

10.2 奈奎斯特(Nyquist)与香农(Shannon)定理

🎯 奈奎斯特理想低通信道定理(无噪声)

理想低通(带宽 B Hz)信道的最高码元速率 = 2B 波特(Baud)。若每个码元携带 N 比特信息(即进制数 M,N=log₂M),则:
极限数据速率 R = 2 × B × log₂M (bps)

注意:奈奎斯特给出了"码元速率上限",要提高比特率必须提升进制数 M(调幅/调相/正交调制,如 QAM-64 = 6bit/码元)。

🎯 香农定理(有噪声信道,更贴近实际)

给定带宽 B Hz、信噪比 S/N(功率比)的有噪声信道,极限数据速率为:
C = B × log₂(1 + S/N) (bps)

信噪比通常用 dB(分贝)表示:SNR_dB = 10 × log₁₀(S/N)
例:30dB → S/N = 10³ = 1000;40dB → S/N = 10⁴ = 10000
实际速率 = min(奈奎斯特 R,香农 C),必须同时满足两者!

十一、考点总结与软考历年真题

💡 系统架构师·计算机网络·考点分布:
上午题 6~10 分,重点:① TCP/UDP + 三次握手/拥塞控制(必考);② IP 子网划分 / CIDR / 路由表下一跳(年年考计算题);③ OSI/TCP 分层与各层协议对应关系;④ 性能计算(带宽时延积、奈奎斯特/香农);⑤ DNS/HTTP/HTTPS/TLS;⑥ 路由协议 RIP/OSPF/BGP 区别;⑦ 网络安全加密算法、PKI/CA、防火墙 DMZ;⑧ SDN/VxLAN/IPv6

📝 真题 1:【子网划分计算题】(软考 2023 年下半年 上午题)

某校园网要对 172.16.0.0/20 进行 CIDR 子网划分,要求划分出 6 个大小相等的子网,供 6 个学院使用。请回答:
(1)新的子网掩码是多少?CIDR 前缀是 /?
(2)每个子网最多可容纳多少台主机?
(3)写出第 1、第 2 个子网的网络地址和广播地址。
【答案】
解题步骤(1):原 /20,需划分 6 个子网 → 2³=8 ≥ 6,需要再借 3 位作为子网号 → 新前缀 = /20+3 = /23,即子网掩码 = 255.255.254.0(前23位1)。
(2)主机位数 = 32 - 23 = 9 位 → 主机数 = 2⁹ - 2(全0网络号、全1广播号)= 512 - 2 = 510 台。
(3)块大小(增量) = 2^(32-23) = 512,第三字节增量 = 512/256 = 2(/23 意味着第三字节末尾1位也属于网络位)
  第 1 子网:网络 = 172.16.0.0/23,广播 = 172.16.1.255
  第 2 子网:网络 = 172.16.2.0/23,广播 = 172.16.3.255

📝 真题 2:【TCP 序号/确认号 + 拥塞控制分析】(软考 2022 年真题改编)

主机 A 与主机 B 建立 TCP 连接,A 的初始序号 seq=1000,B 的初始序号 seq=3000。连接建立成功后,A 向 B 连续发送两个 TCP 段:
  段 1:seq=1001,payload 长度 = 400 字节(SYN/FIN 均 0)
  段 2:seq=1401,payload 长度 = 600 字节
B 收到段 1 后立即回复 ACK1,收到段 2 后回复 ACK2。之后 A 继续发送,假设慢启动阈值 ssthresh 初始值=64(单位 MSS=1000B),且无丢包:
(1)求 ACK1 与 ACK2 中 ack 字段分别为多少?
(2)若连接为慢启动阶段,发送完段 2 后 A 的 cwnd 从 1MSS 变为多少?经过 2 个无丢包 RTT 后 cwnd 约为多少?
【答案】
(1)ACK 序号:ACK = 期望收到的下一个字节序号 = 上次收到数据的 seq + 数据长度
  ACK1 ack = 1001 + 400 = 1401(表示 1001~1400 字节收到,下一个要 1401)
  ACK2 ack = 1401 + 600 = 2001
(2)慢启动:cwnd 初始 = 1 MSS(1000B);每收到 1 个 ACK 确认了新数据,cwnd += 1 MSS(等价每 RTT 翻倍)
  发送段 2 后收到 ACK1 → cwnd = 2;收到 ACK2 → cwnd = 3 MSS = 3000B
  第 1 个 RTT 后 cwnd 翻倍 ≈ 6;第 2 个 RTT 后再翻倍 ≈ 12 MSS = 12000B(仍 < ssthresh=64,继续慢启动指数增长)

📝 真题 3:【带宽时延积 + 链路利用率】(软考经典案例)

一条长度为 1000 km 的光纤链路,信号传播速度为 2 × 10⁸ m/s,链路带宽为 1 Gbps。现传输一个 2000 字节的帧,采用停等协议(Stop-and-Wait),忽略处理/排队时延。问:
(1)传播时延是多少 ms?RTT 是多少?
(2)时延带宽积 BDP 是多少字节(Byte)?
(3)停等协议下的链路利用率 U 是多少?若改用滑动窗口,窗口大小至少为多少帧时,才能让链路利用率达到 100%?
【答案】
(1)传播时延 tp = 距离 / 传播速度 = 1000×10³ m / (2×10⁸ m/s) = 5×10⁻³ s = 5 ms
  RTT = 2 × tp = 10 ms = 0.01 s
(2)发送时延 tf = 帧长 / 速率 = (2000×8 bit) / (10⁹ bps) = 16,000 / 10⁹ s = 16 μs = 0.016 ms
  时延带宽积 BDP = 带宽 × RTT = 10⁹ b/s × 0.01 s = 10⁷ bit = 1,250,000 Byte = 约 1.25 MB
(3)停等利用率 U = 发送时间 / (发送时间 + RTT) = 0.016 / (0.016 + 10) ≈ 0.16%(极低!)
  管道内能容纳帧数 W = RTT / tf ≈ 10 ms / 0.016 ms = 625 帧,即窗口 ≥ 625 帧时,利用率接近 100%,
  此时窗口大小 = 625 × 2000B = 1,250,000B = BDP ✅(印证 BDP = 让管道充满所需的最小窗口)

📝 真题 4:【路由表下一跳最长匹配】(软考 2024 年上半年题)

路由器收到一个目的 IP = 10.1.25.137 的数据包,路由表如下。问该数据包的下一跳是( )?
  ① 10.1.0.0/16    →  下一跳 R1
  ② 10.1.16.0/20  →  下一跳 R2
  ③ 10.1.24.0/22  →  下一跳 R3
  ④ 0.0.0.0/0        →  下一跳 R4(默认路由)
A. R1   B. R2   C. R3   D. R4
【答案 C】最长前缀匹配(Longest Prefix Match):路由选择掩码最长(前缀最长/最精确)且匹配的条目。
  计算:目的 10.1.25.137 → 第3字节 = 25 (二进制 00011001)
  ① /16:只要前 16 位=10.1 ✔(前缀16位)
  ② /20:掩码第三字节前 4 位=16 (0001xxxx),25=00011001 前4位=0001 ✔(前缀20位,比①长)
  ③ /22:掩码第三字节前 6 位 = 24 (000110xx),25=00011001 前6位=000110=24 ✔(前缀22位,最长!)
  ④ 默认路由(0位)永远最后才考虑
  → ③ 前缀最长(/22),选下一跳 R3,答案 C
🎓 全文复习速记口诀:
七层应表会传网链物,四层应用传网链。封装头加尾,解封装剥头尾。
物理层编码:曼彻斯特跳变中间0→1,差分跳变看边沿。
链路层CSMA/CD:先听后发,边发边听,冲突重发。
IP 划分:借 n 位子网=2ⁿ,余 m 位主机=2ᵐ-2。
ARP 请求广播,ARP 应答单播。RIP 跳数≤15,OSPF 区域0骨干,BGP 路径矢量。
TCP 三次 SYN→SYN+ACK→ACK,四次 FIN→ACK→FIN→ACK,2MSL 等最后。
拥塞控制:慢指翻避加一,三包乘半超回一。
性能:发送时延=帧长/速率,传播=距离/光速,BDP=带宽×RTT。
奈奎斯特 2Blog₂M,香农 Blog₂(1+S/N),取两者小者为上限!