📄 这一页是全课的地图:课程覆盖什么、需要什么基础、用哪本教材,以及 29 讲各自对应的教材章节与配套的实验和习题。开始之前先读一遍,之后可以随时回来查日程表。


一、课程描述(Course Description)

本课程系统讲授计算机网络的原理与实践,采用自顶向下(top-down)的组织方式:从学生每天使用的网络应用出发,逐层向下揭示支撑这些应用的协议机制。

课程覆盖五层协议栈:应用层(HTTP、DNS、SMTP、流媒体)、传输层(UDP、TCP、可靠传输、拥塞控制)、网络层(IP 编址、路由算法、BGP、SDN)、链路层(差错检测、多路访问、以太网、交换机)与物理/无线层(802.11、蜂窝网络),并以网络安全作为贯穿全课的横切主题。

课程强调三件事:协议设计中的权衡(为什么是这样而不是那样)、定量分析能力(能算出时延、吞吐量与窗口大小)、动手实现能力(能写出可运行的网络程序)。

二、学习目标(Learning Outcomes)

完成本课程后,学生应当能够:

知识与理解

  1. 描述互联网的分层体系结构,并解释分层与封装带来的收益与代价。
  2. 解释分组交换与电路交换的本质差异,以及分组交换为何成为互联网的选择。
  3. 说明应用层、传输层、网络层、链路层各自解决什么问题,以及问题为何被放在那一层。

分析与计算

  1. 计算端到端时延(传输、传播、排队、处理)、吞吐量瓶颈与带宽时延积。
  2. 分析滑动窗口协议的效率,并推导给定链路参数下所需的窗口大小。
  3. 应用 Dijkstra 与 Bellman-Ford 算法计算最短路径路由表,并追踪距离向量的收敛过程。
  4. 执行子网划分与 CIDR 地址聚合,并完成最长前缀匹配的转发决策。

设计与实现

  1. 实现基于 Socket 的并发网络服务器。
  2. 实现具备可靠传输与拥塞控制的传输协议,并在丢包链路上验证其正确性。
  3. 使用 Wireshark 捕获并解释真实的协议交互过程。

评估与批判

  1. 评估不同协议设计(GBN vs SR、Reno vs BBR、IPv4+NAT vs IPv6)的取舍。
  2. 识别协议层面的安全弱点,并说明对应的防御机制及其局限。

三、先修要求(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:期末总复习(可选) 期末考试