Hacker News new | ask | show | jobs
by J3klin 1592 days ago
Seconding this, I'm currently studying comp-sci and having a bit of trouble keeping up in my networking modules.
3 comments

I hope this doesn't sound dismissive, because it's not meant to be, but invest some "recreational time" going down rabbit holes, such as watching various youtube videos, falling down Wikipedia rabbit holes, skimming RFCs, buying used books for cheap on Amazon, pet projects for learning purposes, etc... In hindsight, my Comp-Sci major was very academic. That is, course books and homework on networking used very formal language (almost mathematical notation), when what I really needed at that time was "plain English" explanations and real world examples. Basically, never stop being curious and reviewing the same topic through different lenses/perspectives/sources. Unfortunately, it can take some time for dispirate pieces of knowledge to coalesce into a comprehensive picture. I've also spent a lot of time learning about modern computing's origins, which lays out the road to how we got to today, which has been very helpful.

For Networking Specifically, always keep the OSI 7 Layer Model [1] in mind. The reason is that it's important that when you're learning about X, you stay focused on X without being bogged down with the details of Y. A great free networking resource is Beej's Guide to Network Programming [2].

[1] https://en.wikipedia.org/wiki/OSI_model [2] https://beej.us/guide/bgnet/

Networking is all about protocols - you're going to have to read RFCs and stare at packet diagrams. With time, practice, and repetition, it will sink in. If you really want to learn, install wireshark and practice with it regularly to build experience.
While I agree that learning and understanding actual protocols is useful to do anything practical with networking, I don’t see how reading packet diagrams would be useful during a Computer Science degree, where the focus is on concepts, rather than actual implementation.

For example, it really doesn’t matter what TCPs header layout is, what’s more interesting is how it solves the problems it’s designed to solve (e.g. reliable, ordered transit on top of an unreliable base; congestion control etc.), which are independent of the exact TCP implementation.

I also think RFCs are suboptimal for this. They will contain all the details, however this means they have to also explain uninteresting implementation details, whereas a good textbook can present the topics much more concisely.

I have some resources on info314.tcpip.dev. Mostly Linux-based projects at this point, but I will be updating in the next months with a reading list and more explanations.