计算机网络复习
计算机网络复习
Chapter 1: Introduction
1.2 Network Edge(网络边缘) 核心要素:
接入网络类型: • DSL(数字用户线)
• Cable(电缆)
• FTTH(光纤到户)、无线(WiFi/蜂窝网络)
链路类型: • 有线(双绞线/光纤)
• 无线(无线电/卫星)
1.3 Network Core(网络核心) 分组交换 vs 电路交换对比表:
特性 | 分组交换 (Packet Switching) | 电路交换 (Circuit Switching) |
---|---|---|
资源占用 | 动态分配(按需) | 固定预留 |
延迟 | 可变(依赖拥塞) | 固定 |
适用场景 | 突发数据(如网页/邮件) | 实时流量(如电话) |
效率 | 高(共享链路) | 低(独占链路) |
关键结论:
分组交换更适合现代互联网的突发流量特性。
1.4 Performance in Packet-Switched Networks 四大延迟来源:
- 传输延迟:数据推送到链路的时间(公式:L/R,L=包大小,R=带宽)
- 传播延迟:信号在介质中传播的时间(公式:d/s,d=距离,s=传播速度)
- 排队延迟:在路由器缓冲区等待的时间(依赖流量强度)
- 处理延迟:路由器检查包头的时间
吞吐量计算:
\(\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
- 应用层协议与底层传输协议关系
应用层协议 | 传输协议 | 选择原因 |
---|---|---|
HTTP/HTTPS | TCP | 需要可靠传输(网页内容) |
SMTP | TCP | 邮件不能丢失 |
DNS | UDP | 快速查询(少量数据包) |
FTP | TCP | 大文件传输需可靠性 |
VoIP | UDP | 低延迟优先 |
- 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
- HTTP报文结构
• 请求报文:
1
2
3GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Chrome
• 响应报文:
1
2
3HTTP/1.1 200 OK
Content-Type: text/html
<html>...</html>
- HTTP 1.0 vs 1.1
版本 | 连接方式 | 特点 |
---|---|---|
HTTP 1.0 | 非持久 | 每个对象需新建TCP连接 |
HTTP 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(域名系统)
- 功能:
• 域名 → IP地址解析
• 负载均衡(如CDN)
- 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;
- 查询过程(递归+迭代):
graph LR A[客户端] --> B[本地DNS] B --> C[根DNS] C --> D[顶级域DNS] D --> E[权威DNS] E --> B --> A
- 无根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 | 0 7 8 15 16 23 24 31 |
特性: • 无连接、无拥塞控制、头部开销小(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 | 0 1 2 3 |
关键字段: • 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;
拥塞控制算法
- 慢启动(Slow Start):cwnd指数增长(初始=1 MSS)
- 拥塞避免(AIMD):cwnd线性增长(+1 MSS/RTT)
- 快速恢复(Fast Recovery):遇3个重复ACK时减半cwnd
带宽探测机制: • Additive-Increase:拥塞避免阶段线性探测
• Multiplicative-Decrease:丢包时窗口减半
cwnd变化示例
graph LR X[横轴: RTT] -->|慢启动| Y[纵轴: cwnd指数上升] Y -->|达到ssthresh| Z[线性上升] Z -->|丢包| W[降至1/2并进入快速恢复]
关键图表总结
- TCP状态转换图:标注SS/AIMD/FR的转换条件
- 滑动窗口对比表:GBN与SR的窗口大小、重传策略差异
- RDT协议演进流程图:从1.0到3.0的改进路径
- 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 路由器内部结构 交换结构类型:
基于内存
graph LR A[输入端口] --> B[CPU内存] B --> C[输出端口]
• 性能受限(内存带宽瓶颈)
基于总线
graph LR A[输入端口] --> B[共享总线] B --> C[输出端口]
• 总线竞争导致延迟
交叉开关
graph LR A1[输入1] --> B1[输出1] A2[输入2] --> B2[输出2] A3[输入3] --> B3[输出3]
• 并行传输,高性能
4.4 IP协议 IPv4数据报格式
1 | 0 1 2 3 |
子网划分计算示例 • 给定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
计算步骤:
- 数据后补
n
个0(n=生成多项式位数-1) - 用生成多项式做二进制除法
- 余数作为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(虚拟局域网) 优势:
- 广播域分割:减少不必要的流量
- 安全性提升:不同VLAN间通信需路由器
- 灵活配置:按逻辑而非物理位置分组
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[物理信号传输]
重点总结
- CRC计算:掌握二进制除法步骤,理解生成多项式作用
- CSMA/CD退避算法:记住退避时间公式
0 ~ 2ⁿ⁻¹
- ARP与交换机表:区分ARP的广播查询与交换机的自学习机制
- VLAN优势:理解逻辑分割广播域的意义
- 协议层级对应:明确DNS/UDP、HTTP/TCP、IP/以太网的封装关系