Computer Networking Self-Study
Since computer networking is a vast and deep subject, I wanted to at least get a start understanding how it all works under the hood. I also wanted to take a programming approach as it seems like the standard advice is to build projects that implement various RFCs or play around with Wireshark. I will also be using this as an opportunity to dive deep into Go.
- Beej's Guide to Networking Programming
- Online courses (pick one)
- Supplement that with readings, projects, and assignments.
In terms of online courses, the two best are:
- Stanford's Introduction to Computer Networking (Update 2020/06/08: It seems that this has been/will be taken down. I don't know if/when it will be put back up, but it maybe possible to find it by some other means.)
- Computer Networks with David Wetherall
Stanford's teaches it top-down, starting at the application layer, moving to the physical layer. Wetherall teaches it bottom-up, starting at the physical layer and moving upwards. I have personally been working through Wetherall as I find his teaching style more in line with how I like to learn.
Readings
Standard advice says that I should be using Computer Networking: A Top-down Approach. [PDF warning]
Readings:
- Unit 1: Sections 1.1-1.3; 1.5; 2.1
- Unit 2: Sections 3.1-3.5
- Unit 3: pp. 22-31; 640-648
- Unit 4: pp. 259-265; 269-279
- Unit 5: pp. 83-114
- Unit 6: pp. 305-379
- Unit 7: pp. 433-443
- Unit 8: pp. 671-693
Assignments & Projects
I will be using the assignments from the following:
I will also be implementing small, commonly used networking programs (ping, traceroute, etc.) as well as any other parts of a network that seem interesting (such as spanning tree protocol).