📄 这一页是全课的地图:课程覆盖什么、需要什么基础、用哪本教材,以及 29 讲各自对应的教材章节与配套的实验和习题。开始之前先读一遍,之后可以随时回来查日程表。
一、课程描述(Course Description)
本课程系统讲授计算机网络的原理与实践,采用自顶向下(top-down)的组织方式:从学生每天使用的网络应用出发,逐层向下揭示支撑这些应用的协议机制。
课程覆盖五层协议栈:应用层(HTTP、DNS、SMTP、流媒体)、传输层(UDP、TCP、可靠传输、拥塞控制)、网络层(IP 编址、路由算法、BGP、SDN)、链路层(差错检测、多路访问、以太网、交换机)与物理/无线层(802.11、蜂窝网络),并以网络安全作为贯穿全课的横切主题。
课程强调三件事:协议设计中的权衡(为什么是这样而不是那样)、定量分析能力(能算出时延、吞吐量与窗口大小)、动手实现能力(能写出可运行的网络程序)。
二、学习目标(Learning Outcomes)
完成本课程后,学生应当能够:
知识与理解
- 描述互联网的分层体系结构,并解释分层与封装带来的收益与代价。
- 解释分组交换与电路交换的本质差异,以及分组交换为何成为互联网的选择。
- 说明应用层、传输层、网络层、链路层各自解决什么问题,以及问题为何被放在那一层。
分析与计算
- 计算端到端时延(传输、传播、排队、处理)、吞吐量瓶颈与带宽时延积。
- 分析滑动窗口协议的效率,并推导给定链路参数下所需的窗口大小。
- 应用 Dijkstra 与 Bellman-Ford 算法计算最短路径路由表,并追踪距离向量的收敛过程。
- 执行子网划分与 CIDR 地址聚合,并完成最长前缀匹配的转发决策。
设计与实现
- 实现基于 Socket 的并发网络服务器。
- 实现具备可靠传输与拥塞控制的传输协议,并在丢包链路上验证其正确性。
- 使用 Wireshark 捕获并解释真实的协议交互过程。
评估与批判
- 评估不同协议设计(GBN vs SR、Reno vs BBR、IPv4+NAT vs IPv6)的取舍。
- 识别协议层面的安全弱点,并说明对应的防御机制及其局限。
三、先修要求(Prerequisites)
必需:
- 数据结构与算法(图算法、队列、哈希表;能理解 O(n log n) 的复杂度论证)
- C 或 Python 编程能力(能独立完成 500 行以上的程序,能用调试器)
- 离散数学与基础概率论(期望值、独立事件、几何分布)
强烈建议:
- 操作系统(进程、线程、系统调用、缓冲区的概念)—— 传输层和 Socket 编程会大量用到
- 命令行与 Linux 基本操作
不需要:
- 电子电路或信号处理知识。本课程只在第 23、25 讲触及物理层,且不涉及调制解调的数学。
四、教材与阅读材料
主教材(Required)
Kurose, J. F., & Ross, K. W. Computer Networking: A Top-Down Approach, 8th Edition. Pearson, 2021.
每一讲对应的教材章节见下面第五节的 15 周日程表(如「KR §3.5」),课前阅读是必须的:课堂讲授假设你已经读过。
参考书(Recommended)
- Peterson, L. L., & Davie, B. S. Computer Networks: A Systems Approach, 6th ed. —— 免费开源,系统实现视角更强,是 KR 的极好补充。
- Stevens, W. R. TCP/IP Illustrated, Volume 1, 2nd ed. —— 需要精确到字节的时候查它。
- Bonaventure, O. Computer Networking: Principles, Protocols and Practice —— 免费开放教材。
一手文档
课程会指定阅读若干 RFC。工程师读 RFC 的能力本身就是课程目标之一,完整清单见参考资料。
五、15 周教学日程(Course Schedule)
📅 D = Discussion Section,PS = Problem Set,L = Lab
| 周 | 讲次与主题 | 阅读 | Discussion Section | 截止 |
|---|---|---|---|---|
| 1 | L01 互联网是什么:边缘与接入网 · L02 网络核心:分组交换 | KR §1.1–1.3 | D1:课程工具链、命令行与 Wireshark 安装 | Lab 0 发布 |
| 2 | L03 时延、丢包与吞吐量 · L04 协议分层、封装与安全概览 | KR §1.4–1.7 | D2:四种时延与排队的定量计算 | Lab 0 截止 · Lab 1 发布 |
| 3 | L05 应用层原理与 HTTP · L06 Web 缓存、CDN、HTTP/2 与 HTTP/3 | KR §2.1–2.2 | D3:HTTP 的 RTT 分析与缓存命中率 | — |
| 4 | L07 DNS · L08 邮件、P2P、流媒体与实时多媒体 | KR §2.3–2.6、§9.2–9.3 | D4:dig 实操、P2P 分发时间与播放缓冲计算 | PS 1 发布 |
| 5 | L09 Socket 编程 · (机动 / 复习) | KR §2.7 | D5:Lab 2 代码走查与并发模型选型 | Lab 1 截止 · Lab 2 发布 |
| 6 | L10 传输层服务与 UDP · L11 可靠数据传输原理 | KR §3.1–3.4 | D6:反码校验和手算、rdt 状态机绘制 | PS 1 截止 |
| 7 | L12 流水线协议:GBN 与 SR · L13 TCP 基础与可靠传输 | KR §3.4–3.5 | D7:GBN/SR 报文时序图与序号空间 | Lab 2 截止 |
| 8 | L14 TCP 连接管理与流量控制 · Midterm Exam(覆盖 L01–L14) | KR §3.5 | D8:期中复习与往年真题讲评 | 期中考试 |
| 9 | L15 拥塞控制原理 · L16 TCP 拥塞控制:Reno、CUBIC、BBR | KR §3.6–3.8 | D9:cwnd 演化图判读、AIMD 收敛推演 | Lab 3 发布 · PS 2 发布 |
| 10 | L17 数据平面、调度与流量监管 · L18 IPv4 编址、子网、CIDR、NAT | KR §4.1–4.3、§7.5 | D10:Lab 3 调试专场(丢包信道与超时) | PS 2 截止 |
| 11 | L19 IPv6 与泛化转发(SDN 数据平面) · L20 路由算法:LS 与 DV | KR §4.3–5.2 | D11:子网划分、VLSM、最长前缀匹配与令牌桶 | Lab 3 截止 |
| 12 | L21 域内 OSPF 与域间 BGP · L22 SDN 控制平面、ICMP 与网络管理 | KR §5.3–5.7 | D12:Dijkstra 与 DV 的完整手算、无穷计数 | Lab 4 发布 · PS 3 发布 |
| 13 | L23 链路层与差错检测 · L24 多路访问、以太网、交换机与数据中心 | KR §6.1–6.6 | D13:CRC 长除法、ALOHA 效率、Fat-Tree 规模计算 | PS 3 截止 |
| 14 | L25 无线链路与 802.11 · L26 蜂窝网络与移动性管理 | KR §7.1–7.5 | D14:CSMA/CA 时序计算与 802.11 抓包判读 | Lab 4 截止 · PS 4 发布 |
| 15 | L27 密码学、完整性与认证 · L28 TLS、IPsec、防火墙与 DDoS | KR §8.1–8.9 | D15:RSA 手算与 TLS 握手 RTT 分析 | PS 4 截止(期末前最后一次课) |
| 考试周 | L29 综合:一个网页请求的一生 + 复习 · Final Exam(累积) | KR §6.7 | D16:期末总复习(可选) | 期末考试 |