这是一门完整开设的计算机网络课程,不是读书笔记,也不是知识点罗列。
它按美国研究型大学一个学期(15 周)的实际教学计划组织:有 Syllabus,有周计划,有编程作业,有习题和完整参考答案,有期中期末的复习范围。你可以把它当成一门可以自学完成的课来上。
课程信息
| 项目 | 内容 |
|---|---|
| 课程编号 | CS 450 — Computer Networks |
| 学分 | 4 credits(3 小时 Lecture + 1 小时 Discussion Section) |
| 学期 | 15 周 · 每周 2 次课(每次 75 分钟) |
| 教材 | Kurose & Ross, Computer Networking: A Top-Down Approach, 8th Edition |
| 先修 | 数据结构与算法、C 或 Python 编程、基础概率论;建议已学操作系统 |
| 课程层次 | 本科高年级(Upper-division undergraduate),研究生可选修 |
| 授课方式 | 自顶向下(Top-Down):应用层 → 传输层 → 网络层 → 链路层 → 无线 → 安全 |
📄 先读教学大纲 Syllabus —— 包含课程定位、学习目标、先修要求、教材,以及标明每讲对应教材章节的 15 周日程表。
为什么是「自顶向下」
传统教材从物理层开始讲电压和编码,学生要到第十周才第一次看到一个真实的网络应用。自顶向下反过来:第一周就打开浏览器抓包,看 HTTP 请求长什么样,然后不断追问「它下面靠什么支撑」。
这是 Kurose & Ross 从 1999 年起推动、如今被美国绝大多数计算机系采用的顺序。它的好处很实际:**每一层的存在理由,都由上一层提出的需求来解释。**你不会学到一个不知道为什么存在的机制。
课程结构
课程分为七个单元,共 29 讲。
Unit 1 · 计算机网络与互联网(第 1–4 讲)
互联网的组成、分组交换的核心思想、时延与吞吐量的定量分析、协议分层。
Unit 2 · 应用层(第 5–9 讲)
从 HTTP 开始,理解应用如何使用网络,以及网络对应用提出了什么要求。
- 第 5 讲:应用层原理与 HTTP
- 第 6 讲:Web 缓存、CDN 与 HTTP/2、HTTP/3
- 第 7 讲:DNS——互联网的目录服务
- 第 8 讲:电子邮件、P2P、流媒体与实时多媒体
- 第 9 讲:Socket 编程
Unit 3 · 传输层(第 10–16 讲)
课程最难也最重要的部分:如何在不可靠的网络上造出可靠的管道,以及如何让所有人共享带宽而不崩溃。
- 第 10 讲:传输层服务、多路复用与 UDP
- 第 11 讲:可靠数据传输原理
- 第 12 讲:流水线协议——GBN 与 Selective Repeat
- 第 13 讲:TCP——报文段结构、RTT 估计与可靠传输
- 第 14 讲:TCP 连接管理与流量控制
- 第 15 讲:拥塞控制原理
- 第 16 讲:TCP 拥塞控制——Reno、CUBIC、BBR 与 ECN
Unit 4 · 网络层:数据平面(第 17–19 讲)
路由器内部如何在纳秒级别转发分组、调度与流量监管如何给出时延保证,以及 IP 地址体系为什么长成今天这样。
Unit 5 · 网络层:控制平面(第 20–22 讲)
路由表是怎么算出来的,以及全球六万多个自治系统如何达成一致。
Unit 6 · 链路层、局域网与数据中心(第 23–24 讲)
Unit 7 · 无线、移动与安全(第 25–29 讲)
- 第 25 讲:无线链路与 802.11 WiFi
- 第 26 讲:蜂窝网络 4G/5G 与移动性管理
- 第 27 讲:网络安全——密码学、完整性与认证
- 第 28 讲:TLS、IPsec、防火墙与 DDoS 防御
- 第 29 讲:综合——一个网页请求的一生
编程作业(Programming Assignments)
五个动手作业,难度递增。风格参考 Stanford CS144 与 UMass Wireshark Labs。
| 作业 | 内容 | 语言 | 对应讲次 |
|---|---|---|---|
| Lab 0 | 网络工具热身:curl、dig、traceroute、netcat | Shell | 3、5、7、14 |
| Lab 1 | Wireshark 抓包分析(HTTP / DNS / TCP / IP / 802.11) | — | 5、7、13、16、24、25 |
| Lab 2 | 用 Socket 实现并发 HTTP 服务器与客户端 | Python | 5、6、9 |
| Lab 3 | 在 UDP 之上实现可靠传输协议(含拥塞控制) | Python/C++ | 11、12、13、15、16 |
| Lab 4 | 实现距离向量路由与最长前缀匹配转发表 | Python/C++ | 17、18、20、21 |
习题与考试
- Problem Set 1:引论与应用层(第 1–9 讲)
- Problem Set 2:传输层(第 10–16 讲)
- Problem Set 3:网络层与链路层(第 17–24 讲)
- Problem Set 4:无线、移动性与网络安全(第 25–29 讲)
- 期中与期末复习指南:必背公式卡、高频考点清单与两份模拟题
工具书
- 术语表:英中对照与速查
- 参考资料与延伸阅读:RFC 清单、公开课、经典论文
怎么用这门课
如果你是在自学: 按 Syllabus 的 15 周日程走。每讲读完正文先做「随堂自测」,一周结束时做对应的 Problem Set。不要跳过实验——网络这门课,不抓一次包、不写一次 socket,理解永远停留在名词层面。
如果你在准备面试: 第 5、7、13、14、16、18、24、29 讲是被问得最多的部分。第 29 讲(一个网页请求的一生)几乎是所有网络面试的终极题。
如果你只想搞懂某个具体问题: 用术语表反查。
本课程内容基于公开教材、RFC 文档与公开课程材料整理,用于学习与普及。文中的课程编号、评分比例和日程为教学设计示例,不对应任何真实院校的具体开课记录。协议细节以对应 RFC 的最新版本为准。