计算机网络复习


Chapter 1: Introduction

1.2 Network Edge(网络边缘) 核心要素:

  1. 接入网络类型: • DSL(数字用户线)

    • Cable(电缆)

    • FTTH(光纤到户)、无线(WiFi/蜂窝网络)

  2. 链路类型: • 有线(双绞线/光纤)

    • 无线(无线电/卫星)


1.3 Network Core(网络核心) 分组交换 vs 电路交换对比表:

特性 分组交换 (Packet Switching) 电路交换 (Circuit Switching)
资源占用 动态分配(按需) 固定预留
延迟 可变(依赖拥塞) 固定
适用场景 突发数据(如网页/邮件) 实时流量(如电话)
效率 高(共享链路) 低(独占链路)

关键结论:
分组交换更适合现代互联网的突发流量特性。


1.4 Performance in Packet-Switched Networks 四大延迟来源:

  1. 传输延迟:数据推送到链路的时间(公式:L/R,L=包大小,R=带宽)
  2. 传播延迟:信号在介质中传播的时间(公式:d/s,d=距离,s=传播速度)
  3. 排队延迟:在路由器缓冲区等待的时间(依赖流量强度)
  4. 处理延迟:路由器检查包头的时间

吞吐量计算:

\(\text{端到端吞吐量} = \min(R_1, R_2, \dots, R_N)\)

\(R₁...Rₙ\)为路径上各链路速率)


1.5 Protocol Layers & Service Models OSI vs TCP/IP模型对比:

TCP/IP协议栈典型协议:

协议示例
应用层 HTTP, DNS, SMTP, FTP
传输层 TCP(可靠), UDP(不可靠)
网络层 IP, ICMP, BGP
网络接口层 Ethernet, WiFi, PPP

封装流程:


Chapter 2: Application Layer 笔记整理

2.1 Principles of Network Applications

  1. 应用层协议与底层传输协议关系
应用层协议 传输协议 选择原因
HTTP/HTTPS TCP 需要可靠传输(网页内容)
SMTP TCP 邮件不能丢失
DNS UDP 快速查询(少量数据包)
FTP TCP 大文件传输需可靠性
VoIP UDP 低延迟优先
  1. C/S vs P2P 对比
graph LR
  A[C/S模式] -->|中心化| B[服务器易成为瓶颈]
  C[P2P模式] -->|去中心化| D[节点共享资源]
特性 C/S P2P
扩展性 差(服务器压力大) 高(节点越多越快)
可靠性 单点故障 冗余性强
典型应用 Web, Email BitTorrent, Skype

2.2 Web and HTTP

  1. HTTP报文结构
    • 请求报文:

1
2
3
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Chrome

• 响应报文:

1
2
3
HTTP/1.1 200 OK
Content-Type: text/html
<html>...</html>

  1. HTTP 1.0 vs 1.1
版本 连接方式 特点
HTTP 1.0 非持久 每个对象需新建TCP连接
HTTP 1.1 持久(默认) 复用连接,减少延迟
  1. Cookie & Cache
graph TB
  A[客户端] -->|请求| B[服务器]
  B -->|Set-Cookie| A
  A -->|后续请求携带Cookie| B
  C[缓存] -->|存储静态资源| D[减少服务器负载]

2.3 FTP(文件传输协议) 工作原理:

graph LR
  A[FTP客户端] -->|控制连接: Port 21| B[FTP服务器]
  A -->|数据连接: Port 20| B
  B -->|传输文件| A

• 控制连接:持久化(发送命令如LIST, RETR

• 数据连接:临时建立(实际传输文件)


2.4 Electronic Mail 邮件系统流程:

graph LR
  A[发件人] -->|SMTP| B[发件服务器]
  B -->|SMTP| C[收件服务器]
  C -->|POP3/IMAP| D[收件人]
协议 端口 功能
SMTP 25 发送邮件(推模式)
POP3 110 下载并删除邮件
IMAP 143 在线管理邮件

2.5 DNS(域名系统)

  1. 功能:
    • 域名 → IP地址解析

• 负载均衡(如CDN)

  1. DNS层次架构:
graph TD
  %% 定义节点形状和样式
  classDef root fill:#f9d5e5,stroke:#333;
  classDef tld fill:#e3eaa7,stroke:#333;
  classDef auth fill:#b2d3c2,stroke:#333;
  classDef local fill:#82b4d6,stroke:#333;

  %% 层次结构
  Root[("根DNS服务器
  (全球13组)")] -->|返回TLD地址| TLD["顶级域服务器
  (.com/.org等)"]
  TLD -->|返回权威DNS地址| Auth["权威DNS服务器
  (example.com)"]
  Auth -->|返回最终IP| Local["本地DNS服务器
  (ISP提供)"]
  Local -->|缓存结果| Client[客户端]

  %% 样式分类
  class Root root;
  class TLD tld;
  class Auth auth;
  class Local local;
  1. 查询过程(递归+迭代):
graph LR
  A[客户端] --> B[本地DNS]
  B --> C[根DNS]
  C --> D[顶级域DNS]
  D --> E[权威DNS]
  E --> B --> A
  1. 无根DNS的替代方案:
    • 使用备用根(如OpenNIC)

• 本地Hosts文件手动映射


2.6 Peer-to-Peer Applications BitTorrent核心机制:

graph TB
  A[Tracker服务器] -->|协调节点| B[Peer 1]
  A --> C[Peer 2]
  B -->|分块交换| C
  D[种子文件] -->|记录元数据| B & C

优势:
• 下载速度随节点增加而提升

• 抗单点故障(无中心服务器)

P2P vs C/S 补充对比:

指标 P2P C/S
成本 低(无服务器) 高(服务器维护)
隐私性 弱(节点暴露) 强(集中控制)

Chapter 3: Transport Layer


3.1 Transport-Layer Services TCP核心特性

graph TD
  A[TCP四大核心特性] --> B[可靠传输]
  A --> C[拥塞控制]
  A --> D[流量控制]
  A --> E[连接管理]

  B --> F[按序到达检测]
  B --> G[累计确认]
  B --> H[丢包恢复]
  C --> I[Additive Increase]
  C --> J[Multiplicative Decrease]
  I --> K[线性增长]
  J --> L[快速恢复]
  D --> M[通告可用缓冲区]
  M --> N[发送方限制]
  E --> O[三次握手]
  E --> P[四次挥手]

TCP在高延迟网络(如Starlink)的挑战: • 长RTT导致拥塞窗口增长缓慢

• 高丢包率误判为拥塞(实际可能是无线链路错误)

TCP vs RTP对比:

特性 TCP RTP(实时传输协议)
可靠性 可靠(重传) 不可靠(允许丢包)
顺序性 严格保序 时间戳保序
适用场景 文件传输/网页 视频流/VoIP

3.2 Multiplexing and Demultiplexing 端口号分配:

pie
  title 知名端口号
  "HTTP: 80" : 25
  "DNS: 53" : 20
  "SMTP: 25" : 15
  "FTP: 20/21" : 10
  "其他" : 30

复用/解复用功能: • 复用:多个应用进程共用同一传输层协议(如多个浏览器标签共享TCP连接)

• 解复用:通过端口号将数据分发到正确应用(如80端口→Web服务器)


3.3 UDP协议 UDP头部格式:

1
2
3
4
5
6
7
 0      7 8     15 16    23 24    31
+--------+--------+--------+--------+
| Source Port | Destination Port |
+--------+--------+--------+--------+
| Length | Checksum |
+--------+--------+--------+--------+
| Data... |

特性: • 无连接、无拥塞控制、头部开销小(8字节)


3.4 Reliable Data Transfer (RDT) RDT协议演进

版本 关键改进 问题解决
RDT1.0 理想信道
RDT2.0 ACK/NAK 比特错误
RDT2.1 序列号 重复ACK处理
RDT2.2 仅用ACK(带预期序号) 简化NAK
RDT3.0 定时器 丢包和延迟

滑动窗口协议对比

协议 回退N帧(GBN) 选择重传(SR)
重传策略 重传所有未确认帧 仅重传丢失帧
接收窗口 固定为1 >1(可缓存乱序帧)
窗口大小 ≤2ⁿ-1 ≤2ⁿ⁻¹(避免序号混淆)

窗口变化规则: • GBN:发送窗口连续移动,遇超时回退到最早未ACK的包

• SR:发送窗口仅重传丢失包,接收窗口缓存乱序帧


3.5 TCP协议详解 TCP段格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-------------------------------+-------------------------------+
| Source Port | Destination Port |
+-------------------------------+-------------------------------+
| Sequence Number |
+---------------------------------------------------------------+
| Acknowledgment Number |
+-------+-----------+-+-+-+-+-+-+-------------------------------+
| HL | Reserved |U|A|P|R|S|F| Window Size |
+-------+-----------+-+-+-+-+-+-+-------------------------------+
| Checksum | Urgent Pointer |
+---------------------------------------------------------------+
| Options (if any) | Padding |
+---------------------------------------------------------------+
| Data |

关键字段: • Seq/Ack号:字节流编号(非报文段编号)

• 标志位:SYN(建立连接)、FIN(关闭连接)、RST(强制终止)

流量控制

graph LR
  A[发送方] -->|1.数据| B[接收方]
  B -->|2.ACK+窗口| A
  A -->|3.新窗口大小| B
  
  classDef box fill:#f0f8ff,stroke:#333;
  class A,B box;

• 通过接收窗口(rwnd)避免接收缓冲区溢出


3.6 TCP拥塞控制 状态机(参考教材图3.51-3.52)

graph TD
  A[Slow Start] -->|"cwnd>=ssthresh"| B[Congestion Avoidance]
  B -->|丢包| C[Fast Recovery]
  C -->|超时| A
  C -->|"3个重复ACK"| B
  
  %% 用虚线表示自增规则(兼容性写法)
  A -. "每RTT: cwnd×2" .-> A
  B -. "每RTT: cwnd+1" .-> B
  
  classDef state fill:#e6f3ff,stroke:#3399ff;
  class A,B,C state;

拥塞控制算法

  1. 慢启动(Slow Start):cwnd指数增长(初始=1 MSS)
  2. 拥塞避免(AIMD):cwnd线性增长(+1 MSS/RTT)
  3. 快速恢复(Fast Recovery):遇3个重复ACK时减半cwnd

带宽探测机制: • Additive-Increase:拥塞避免阶段线性探测

• Multiplicative-Decrease:丢包时窗口减半

cwnd变化示例

graph LR
  X[横轴: RTT] -->|慢启动| Y[纵轴: cwnd指数上升]
  Y -->|达到ssthresh| Z[线性上升]
  Z -->|丢包| W[降至1/2并进入快速恢复]

关键图表总结

  1. TCP状态转换图:标注SS/AIMD/FR的转换条件
  2. 滑动窗口对比表:GBN与SR的窗口大小、重传策略差异
  3. RDT协议演进流程图:从1.0到3.0的改进路径
  4. cwnd变化曲线:标注ssthresh和丢包事件的影响

Chapter 4: Network Layer


4.1 网络层服务 两大核心功能:

功能 描述 实现位置
转发 (Forwarding) 将数据包从输入端口转移到输出端口 路由器数据平面
路由 (Routing) 确定数据包的全局传输路径 路由器控制平面
graph LR
  A[数据包到达输入端口] --> B[查转发表]
  B --> C{匹配条目?}
  C -->|是| D[转发到指定输出端口]
  C -->|否| E[丢弃或默认处理]

4.2 虚电路 vs 数据报网络

特性 虚电路网络 (VC) 数据报网络 (IP)
连接方式 面向连接(类似电话系统) 无连接
路径选择 建立连接时确定 每个包独立选择路径
资源预留 支持 不支持
寻址 虚电路号 (VCI) 目的IP地址
典型协议 ATM, X.25 IPv4/IPv6

4.3 路由器内部结构 交换结构类型:

  1. 基于内存

       graph LR
      A[输入端口] --> B[CPU内存]
      B --> C[输出端口]

    • 性能受限(内存带宽瓶颈)

  2. 基于总线

       graph LR
      A[输入端口] --> B[共享总线]
      B --> C[输出端口]

    • 总线竞争导致延迟

  3. 交叉开关

       graph LR
      A1[输入1] --> B1[输出1]
      A2[输入2] --> B2[输出2]
      A3[输入3] --> B3[输出3]

    • 并行传输,高性能


4.4 IP协议 IPv4数据报格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| IHL |Type of Service| Total Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification |Flags| Fragment Offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time to Live | Protocol | Header Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source IP Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination IP Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options (if any) | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

子网划分计算示例 • 给定IP:192.168.1.130/25

• 子网掩码:255.255.255.128

• 网络地址:192.168.1.128

• 广播地址:192.168.1.255

• 可用IP范围:192.168.1.129 ~ 192.168.1.254

graph LR
  A[IP地址+子网掩码] --> B[二进制转换]
  B --> C["网络地址 = IP AND 子网掩码"]
  C --> D["广播地址 = 网络地址 OR NOT(子网掩码)"]

NAT工作流程

sequenceDiagram
  participant 内网主机
  participant NAT路由器
  participant 外网服务器
  内网主机->>NAT路由器: 源IP:192.168.1.2:1234
  NAT路由器->>外网服务器: 源IP:202.100.1.1:5678
  外网服务器->>NAT路由器: 目标IP:202.100.1.1:5678
  NAT路由器->>内网主机: 目标IP:192.168.1.2:1234

4.5 路由算法 链路状态 (Dijkstra)

graph TD
  A["初始化所有节点距离为∞"] --> B[设置起点距离为0]
  B --> C{选择未处理的最小距离节点}
  C --> D[更新邻居节点距离]
  D --> C
  C -->|所有节点处理完毕| E[生成最短路径树]

Dijkstra示例表:

步骤 处理的节点 到各节点距离 (A,B,C,D)
0 - (0, ∞, ∞, ∞)
1 A (0, 2, 6, ∞)
2 B (0, 2, 3, 7)
3 C (0, 2, 3, 5)

距离向量 (Bellman-Ford) 公式:
$ D_x(y) = _v { c(x,v) + D_v(y) } $

graph LR
  A[节点X] -->|周期交换向量| B[邻居节点]
  B -->|发送距离向量| A
  A --> C[更新自身路由表]

4.6 互联网中的路由 分层路由结构

graph TD
  A[自治系统AS1] -->|BGP| B[自治系统AS2]
  A -->|OSPF| C[内部路由器]
  B -->|RIP| D[内部路由器]

协议对比:

协议 类型 算法 特点
OSPF 链路状态 Dijkstra 快速收敛,适合大型网络
RIP 距离向量 Bellman-Ford 简单,跳数限制15
BGP 路径向量 策略路由 跨AS路由,支持策略控制

BGP工作流程

graph LR
  A[AS1] -->|通告路径| B[AS2]
  B -->|聚合路径| C[AS3]
  C -->|应用策略过滤| D[最终路由表]

IPv6 vs IPv4对比

特性 IPv4 IPv6
地址长度 32位 128位
头部字段 20字节+选项 固定40字节
分片处理 允许路由器分片 仅源端分片
广播支持 支持 仅支持组播
推广难点 地址耗尽/NAT兼容性 设备升级成本/过渡技术

Traceroute实现原理

sequenceDiagram
  participant 源主机
  participant 路由器1
  participant 路由器2
  participant 目标主机
  源主机->>路由器1: TTL=1 → ICMP超时报文
  源主机->>路由器2: TTL=2 → ICMP超时报文
  源主机->>目标主机: TTL=3 → 端口不可达报文

Chapter 5: Data Link Layer


5.2 差错检测与纠正 奇偶校验(单维奇偶校验)

graph LR
  A[数据位] --> B[添加校验位]
  B --> C{奇校验: 1的总数为奇}
  C -->|是| D[发送数据+校验位]
  C -->|否| E[翻转校验位]

示例:
• 数据 1010 → 奇校验位为 0(1的个数为2,需补1个1)

• 发送数据:10100


CRC(循环冗余校验) 原理:
• 发送端:数据 + 余数(EDC) = 数据多项式 ÷ 生成多项式

• 接收端:验证余数是否为0

计算步骤:

  1. 数据后补 n 个0(n=生成多项式位数-1)
  2. 用生成多项式做二进制除法
  3. 余数作为EDC附加到数据
graph TD
  A[原始数据D] --> B[附加n个0: D左移n位]
  B --> C[模2除法: D / 生成多项式G]
  C --> D[得到余数R]
  D --> E[发送数据: D+R]

示例:
• 数据 101001,生成多项式 1101

• 计算得余数 001 → 发送 101001001

接收端验证

graph TD
  F[接收D+R] --> G[用G做模2除法]
  G --> H{余数=0?}
  H -->|是| I[数据正确]
  H -->|否| J[数据出错]

5.3 多路访问协议 三大类协议对比

类型 典型协议 特点
信道划分 TDM, FDM, CDMA 固定分配资源,低冲突
随机接入 ALOHA, CSMA/CD 竞争信道,高冲突概率
轮询 令牌环 有序访问,无冲突

CSMA/CD(载波侦听/碰撞检测) 流程:

graph TD
  A[有数据发送?] --> B[侦听信道]
  B --> C{信道空闲?}
  C -->|是| D[发送数据]
  C -->|否| E[等待随机退避时间]
  D --> F{检测到碰撞?}
  F -->|是| G[发送拥塞信号]
  G --> H[二进制指数退避]
  H --> E

二进制指数退避算法:
• 第 n 次碰撞后,随机选择延迟时间:0 ~ 2ⁿ⁻¹ 倍时隙

• 最大退避次数:10 → 时隙上限为 1023


5.4 链路层寻址 MAC地址与广播地址 • MAC地址:48位(如 00:1A:2B:3C:4D:5E

• 广播地址:FF:FF:FF:FF:FF:FF


ARP协议流程

sequenceDiagram
  participant 主机A
  participant 交换机
  participant 主机B
  主机A->>交换机: ARP广播请求 (Who has IP_Y?)
  交换机->>所有主机: 转发请求
  主机B->>交换机: ARP单播响应 (IP_Y is MAC_B)
  交换机->>主机A: 转发响应
  主机A-->主机B: 更新ARP缓存

交换机 vs Hub vs 路由器

设备 工作层级 转发方式 特点
Hub 物理层 广播 无智能,冲突域扩大
交换机 数据链路层 基于MAC地址转发 自学习转发表,隔离冲突域
路由器 网络层 基于IP地址路由 连接不同网络,隔离广播域

交换机自学习流程:

graph TD
  A[接收帧] --> B[记录源MAC+接口]
  B --> C{目标MAC已知?}
  C -->|是| D[转发到对应接口]
  C -->|否| E[广播到所有接口]

5.4 VLAN(虚拟局域网) 优势:

  1. 广播域分割:减少不必要的流量
  2. 安全性提升:不同VLAN间通信需路由器
  3. 灵活配置:按逻辑而非物理位置分组
graph TD
  A[物理交换机] --> B[VLAN 10]
  A --> C[VLAN 20]
  B --> D[部门A]
  C --> E[部门B]

5.7 网页请求全流程 协议栈与流程

graph TB
  A[用户输入URL] --> B[DNS查询]
  B --> C[建立TCP连接]
  C --> D[发送HTTP请求]
  D --> E[接收响应数据]
  E --> F[渲染页面]
  F --> G[关闭连接]

  %% 添加协议注释
  B -.->|UDP 53端口| H[DNS服务器]
  C -.->|TCP三次握手| I[目标服务器]
  D -.->|HTTP/HTTPS| I
  G -.->|TCP四次挥手| I

各层协议:

层级 协议/设备
应用层 HTTP, DNS
传输层 TCP (可靠), UDP (DNS)
网络层 IP, ARP
链路层 以太网 (MAC地址), 交换机
物理层 双绞线/光纤, Hub

数据封装流程

graph LR
  A[HTTP数据] --> B[加TCP头]
  B --> C[加IP头]
  C --> D[加以太网头]
  D --> E[物理信号传输]

重点总结

  1. CRC计算:掌握二进制除法步骤,理解生成多项式作用
  2. CSMA/CD退避算法:记住退避时间公式 0 ~ 2ⁿ⁻¹
  3. ARP与交换机表:区分ARP的广播查询与交换机的自学习机制
  4. VLAN优势:理解逻辑分割广播域的意义
  5. 协议层级对应:明确DNS/UDP、HTTP/TCP、IP/以太网的封装关系