这里是 CS144 和 CS168 的混合学习路线,基本思路是学 CS168 的资料而做 CS144 的作业。CS168 公开了最新年份的电子版教材和视频,授课老师幽默风趣;CS144 提供的作业基于现代 C++,因此这条学习路线能同时满足学习计网和现代 C++ 的需求。
CS144 Fall 2025 的 Starter Code 被备份在本仓库中,你可以直接 Clone 本仓库,以此为基础开始 Lab 0 的编写。实验文档及其中英对照(机翻)在 handouts 文件夹中,希望对你有帮助。
食用方法:日程表划分为了多个阶段,每个阶段的学习流程如下:
- 学习这个阶段的 CS168 Lectures 和 Readings,可以在 这个Youtube视频列表 找到课程录屏。
- 参考 handouts 里的实验文档完成这个阶段的 CS144 Lab
- 进入下一个阶段
CS144 只有 10 周,而 CS168 有 16 周,所以在最后两个阶段会有只有课没有 Lab 的情况。祝你学得开心!
| 资源名 | 链接 |
|---|---|
| CS168 SP25 官网 | https://sp25.cs168.io/ |
| CS168 教材 | https://textbook.cs168.io/ |
| CS168 SP25 视频列表 | https://www.youtube.com/playlist?list=PL0_XloRC3MWs5MylcqPFEeTCx0RQocrD7 |
| CS144 官网 | https://cs144.github.io/ |
| CS144 Labs | https://github.com/CS144/minnow |
| 阶段 | CS144 Lab | CS168 Lectures | CS168 Readings | 备注 |
|---|---|---|---|---|
| P1 | Lab 0: ByteStream | 1. Intro 1: Layers of the Internet 2. Intro 2: Design Principles |
Intro, Layers, Headers Architecture, Design |
Lab 0 是熟悉 C++ 环境,看导论课即可。 了解一下 C 语言的 socket 使用方法会对实现 webget.cc 很有帮助。 |
| P2 | Lab 1: Reassembler | 3. Intro 3: Links | Links, Multiplexing | Lab 1 是一个纯逻辑算法题,理论需求不高,再看一节课。 在实现 ip_raw.cc 的过程中可能需要参考 CS144 9月24日的 Note。 |
| P3 | Lab 2: TCP Receiver | 11-12. Transport 1: TCP | Principles (Reliability) Design, Implementation |
Lab 2 与 TCP 协议有关,跳跃看课。CS168 前期花了较多篇幅讲路由,而把 TCP 放在课程中期。 这个 Lab 和下一个 Lab 都不简单,可能要对着测试样例调试一阵子。 |
| P4 | Lab 3: TCP Sender | 13-15. Transport 3: Congestion Control | Principles, Design, Implementation Throughput, Issues, Router-Assisted |
Lab 3 也与 TCP 有关,我们可以把 CS168 的 TCP 课程看完。 这是课程里最困难的一个 Lab。我们的 TCPSender 比 CS168 讲的版本要简单,但实现起来还是挺难的。祝你好运。 |
| P5 | Lab 4: Real World | 4-6. Routing 1-2: Principles, Distance-Vector | Intro, Model, States Distance-Vector |
Lab 4 不需要写代码,ping 真实网站并收集数据画图。我们正好补补前期的路由课。 顺提一句,接下来的 Lab 都没那么难了。 |
| P6 | Lab 5: Network Interface | 18-20. End-to-End: Ethernet, STP, ARP, DHCP | Ethernet, STP (L2 Routing) ARP, DHCP, NAT, TLS, End-to-End |
Lab 5 把 IP 和 Ethernet 连接起来,我们要学学同一子网下的主机如何通信。 |
| P7 | Lab 6: IP Router | 7-8. Routing 3-4: Link-State, Addressing, Routers | Link-State, Addressing Routers |
Lab 6 要实现软件路由器,回到 CS168 前半部分看看路由课。 |
| P8 | Lab 7: Putting it together | 21-22. Datacenters: Topology, Routing | Topology, Congestion Routing, Addressing, Virtualization |
Lab 7 不需要写代码。补下主线课。 |
| P9 | 无 Lab | 9-10. Routing (BGP) 16-17. Applications (DNS, HTTP) 23. SDN 24-25. Multicast |
Model, Design, Implementation, IP Header DNS, HTTP SDN, Host Networking Multicast, Operations, Implementation |
Lab 做完了,补完剩余的主线课程。 |
| P10 | 无 Lab | 26. Wireless 27. Cellular |
Wireless Cellular |
拓展内容,Wi-Fi 和手机蜂窝移动网络,可选学习。 |
感谢 Stanford CS144 和 Berkeley CS168 开源的顶级课程资源。