CS168 SP25 Project2 Distance-Vector Routing笔记

本文最后更新于 2026年4月1日 下午

前言

由于本学期学习课程安排有计算机网络,加之以寒假本来计划学习计网(本来打算是CS144)的计划因为自己太怠惰而泡汤了,所以开学之后在csdiy找到了这门课程进行学习,首先总结一下这门课目前学习下来的一些体验和感受:

  1. 课程讲的非常好,我看的是b站上Spring2025的版本,Peyrin Kao也是UCB CS的经典讲师,是我刷的为数不多的公开课里面觉得讲得最清晰最易懂的老师了。我其实是一个不太喜欢看网课的人,因为我觉得网课的吸收效率不如直接读Textbook / 文档来得快,但是这位讲师的水平还是让我折服了,他的英语也很清晰易懂,我甚至两倍速无字幕都能听懂,这方面十分推荐。
  2. 课程的脉络是以Internet为主,基本不同于国内大部分高校自底而上的讲法,Intro章节是对计算机网络的整体进行一个概述,第二章是网络层(主要是Routing的原理,第三章是传输层,后面也没有完全分层讲解,而是穿插了许多杂七杂八的点,可以看[课程教材](Home | CS 168 Textbook)目录感受一下。
  3. 课程能做的只有3个Python Project,其中Project1B因为没有公开的Gradescope,且在本地进行完整的测试不太可能,我是没去做的,而且Project的难度相对而言也不高,打算在这里学习完计算机网络知识之后,再去刷一下CS144的Lab。
  4. 再评价一下Project,工作量非常小,感觉做完也没法完全回顾知识点,更多可能得靠自己总结,这一点上我认为是没那么成功的。
  5. 综合上面两点,我认为这门课十分适合速通掉计算机网络的知识点,形成一个大概的知识图景。

Project回顾

这个Project给我一种做CS61A的Project(尤其是Scheme)时候的感觉,整个项目的文件目录相对庞大,但学生需要完成的却只有一个文件中的几个函数的TODO,简而言之——做填空题。其实我还蛮喜欢类似于Gitlet那种基本自己整体从零开始做的Project。

通过这个项目,可以回顾Routing章节的一些知识点。比如说Distance-Vector Protocols,但是不需要自己实现Bellman-Ford算法,更多是在回顾一些核心的要素,比如Five Rules,尤其是Resending, Expiring, Split Hoeizon, Poison Reverse等核心特性。

但我感觉也就仅限于此了,因为工作量实在不大,基本是填空题,分10个Stage,每个Stage的代码量顶多是六七行。重点还是复习回顾一下计算机网络的繁杂概念的知识图景。

Tasks

由于实在是不难,问LLM基本能秒杀,这里只提几个容易错的点。

  1. 在Lecture和Textbook里面举出的例子,都是“我的目的地是xx路由”,但是在这个Project里面,更多体现的是“我的目的地是xx端口”。
  2. “端口链路延迟”和“路由条目总延迟”,务必区分清楚。
  3. 搞清楚如何获取所有邻居的端口集合,和self.table里面的端口的区别。
  4. Stage4里面,处理Advertisement的时候,必须分清楚情况,具体而言,先考虑route_dst的存在性。
  5. 仔细考虑expire_time的含义。
  6. 到底是"poison the entry",还是"delete the entry",需要审视清楚。