CS 144
Stanford CS144: Introduction to Computer Networking 课程笔记。
Course info
- Course: CS 144: Introduction to Computer Networking, Spring 2023
- Syllabus: Syllabus/logistics handout
Notes
- 课程导论(Course intro)
- 数据报、封装与多路复用(Datagrams, encapsulation, and multiplexing)
- 服务抽象、协议栈与可靠性(Service abstractions, stacks, and reliability)
- 物理层抽象(Physical Layer Abstraction)
- 链路层 / 物理层(The Link Layer aka Physical Layer)
- 网络栈不同层的命名(Naming at different layers of the network stack)
- 分组交换(Packet Switching)
- 分组交换 2(Packet Switching 2)
- 路由基础(Routing Basics)
- Bellman-Ford 与 Dijkstra(Bellman Ford and Dijkstra)
- 互联网如何工作(简版)(How the Internet works(in brief))
- 互联网如何工作(How the Internet works)
- BGP 与真实世界的互联网(BGP and How the Internet works in the real world)
- TCP(TCP)
- TCP part 2(TCP part 2)
- TCP part 3(TCP part 3)
- 幂等性与 TCP(Idempotence and TCP)
- 为什么需要拥塞控制(Why congestion control)
- 什么是拥塞控制(What congestion control)
- 拥塞控制如何工作(How congestion control)
- 互联网视频传输(Video over Internet)
- TLS(TLS)
- 计算机安全坏态度指南(The Bad-Attitude Guide to Computer Security)
- 家庭网络史 1(History of home networking 1)
- 家庭网络史 2(History of home networking 2)
- 家庭网络史 3(History of Home Networking 3)
- 家庭网络史 4(History of Home Networking 4)
Labs
Setting up your CS144 VM
The CS144 labs are designed to work with the GNU/Linux. You have four options for setting up your development machine:
- On Intel/AMD computers: Use a VM image that we prepared in VirtualBox
- Use a Google Cloud virtual machine using our class's coupon code
- Use your own GNU/Linux installation with a C++20 compiler (GCC 12 or later, clang 15 or later)
- On ARM MacBooks and Macs: please install the UTM virtual machine software and use our ARM64 GNU/Linux virtual machine image
Because the labs were designed to use Linux-specific interfaces, we cannot support development on any other operating system—though you’re free to do whatever works for you, so long as the code you turn in works in the supported environment! It's unlikely that MacOS or Microsoft Windows (even with WSL) will be sufficient.
Labs Checkpoint
- Lab Introduction
- Linux Devkit
- Checkpoint 0: Networking Warmup
- Checkpoint 1: Stitching substrings into a byte stream
- Checkpoint 2: The TCP receiver
- Checkpoint 3: the TCP sender
- Checkpoint 4: measuring the real world
- Checkpoint 5: down the stack (the network interface)
- Checkpoint 6: building an IP router
- Checkpoint 7: putting it all together