这是一门完整开设的计算机网络课程,不是读书笔记,也不是知识点罗列。

它按美国研究型大学一个学期(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 开始,理解应用如何使用网络,以及网络对应用提出了什么要求。

Unit 3 · 传输层(第 10–16 讲)

课程最难也最重要的部分:如何在不可靠的网络上造出可靠的管道,以及如何让所有人共享带宽而不崩溃。

Unit 4 · 网络层:数据平面(第 17–19 讲)

路由器内部如何在纳秒级别转发分组、调度与流量监管如何给出时延保证,以及 IP 地址体系为什么长成今天这样。

Unit 5 · 网络层:控制平面(第 20–22 讲)

路由表是怎么算出来的,以及全球六万多个自治系统如何达成一致。

Unit 6 · 链路层、局域网与数据中心(第 23–24 讲)

Unit 7 · 无线、移动与安全(第 25–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

习题与考试

工具书

怎么用这门课

如果你是在自学: 按 Syllabus 的 15 周日程走。每讲读完正文先做「随堂自测」,一周结束时做对应的 Problem Set。不要跳过实验——网络这门课,不抓一次包、不写一次 socket,理解永远停留在名词层面。

如果你在准备面试: 第 5、7、13、14、16、18、24、29 讲是被问得最多的部分。第 29 讲(一个网页请求的一生)几乎是所有网络面试的终极题。

如果你只想搞懂某个具体问题:术语表反查。

本课程内容基于公开教材、RFC 文档与公开课程材料整理,用于学习与普及。文中的课程编号、评分比例和日程为教学设计示例,不对应任何真实院校的具体开课记录。协议细节以对应 RFC 的最新版本为准。