Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/aos/computer-networking-study

Learning computer networking through projects and readings
https://github.com/aos/computer-networking-study

Last synced: 14 days ago
JSON representation

Learning computer networking through projects and readings

Awesome Lists containing this project

README

        

## 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.

1. [Beej's Guide to Networking Programming](http://beej.us/guide/bgnet/)
2. Online courses (pick one)
3. Supplement that with readings, projects, and assignments.

In terms of online courses, the two best are:
- Stanford's [Introduction to Computer Networking](https://www.youtube.com/playlist?list=PLoCMsyE1cvdWKsLVyf6cPwCLDIZnOj0NS)
- [Computer Networks with David Wetherall](https://youtube.com/playlist?list=PLVEo1P9gAninM7KwP1KKolfMQdNs6P6Am)

Stanford 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.

> Update (2024-06-08): Unfortunately, both courses have been taken down. I've
> replaced the links with archived Youtube playlists of the lectures.

### Readings

Standard advice says that I should be using [Computer Networking: A Top-down
Approach](https://www.ucg.ac.me/skladiste/blog_44233/objava_64433/fajlovi/Computer%20Networking%20_%20A%20Top%20Down%20Approach,%207th,%20converted.pdf). [**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:
- [Princeton's Computer Networks repository](https://github.com/PrincetonUniversity/COS461-Public)
- [Stanford CS144 - Fall 2010](https://www.scs.stanford.edu/10au-cs144/)

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).

### Misc

I have been recommended the book [High Performance Browser Networking](https://hpbn.co/)
multiple times but I have not had time to go through it.