
A detailed guide to the design and operation of protocols and applications in the TCP/IP suite.
Then there was that one time I was self-studying computer architecture (Computer Systems: A Programmer's Perspective) and was able to turn what I learned around and hack our binary code at a customer site because I wasn't in an environment where I could compile our code... and then years later, when I wanted to analyze the ROM of a 90s electronic device with a much simpler instruction set than x86, I wasn't afraid to crack open the thing in Ghidra
Let's see, what else have I read that's paid dividends over the years:
- Modern Operating Systems (Tannenbaum)
- Learning Python (Lutz)
- JavaScript - The Definitive Guide (Flanagan)
- Programming PHP (Tatroe)
- Learning Web Design (Robbins)
- Algorithms (Sedgewick)
- A book I read whose name escapes me now, about technologies like RS-282/RS-484 and serial communications in general
- (I could probably put down Cuckoo's Egg too as an "inspiration" for me ultimately getting interested in computers and networking, and I bet that's not too uncommon a story)
It's probably a sign of my age (mid 30s for reference), but when I'm curious about something and want to learn it really deeply - I look for a good book on the topic. (although I'm willing to admit that maybe this process hinders me in some ways, because it means I sometimes spend more time studying than I actually do working with a thing - I have spent a LOT more time reading about circuits than building them - but I like studying so I'm happy either way)
I learnt about traceroute, ping and other network setup basics in my very first job (early 90s) as a network admin in a remote building in Bangalore, setting up the very first WAN for some of the earliest tech (now) behemoths, when the latency of the WAN -- over the SEA-ME-WE cables -- exceeded ~1-2 seconds. The satellite hops via EU added more latency. Traceroute and ping where your best friends to diagnose the frequent drops, from the building top microwave antenna to the only ISP (govt approved, of course) that offered a whopping 2x 64 kbps links. And that supported an entire org of 400-500 developers, including state-of-the-art video conf system to NYC, Ottawa, Tokyo.
Curious to figure out how these tools worked, I borrowed copies of the bible (TCP/IP Illustrated - W Richard Stevens [1]), still the most authentic source of all things TCP/IP related.
I'm not one for nostalgia, but fond memories there. Great to see a modern Rust impl though.
One of a small number of books (such as TCP/IP Illustrated[2]) that progressed me from the larval hacker stage.
I also met Lions when I was a kid, but didn't put 2 + 2 together until 20 years later!
[0] https://github.com/bringhurst/xv6 [1] https://pdos.csail.mit.edu/6.828/2011/xv6.html [2] https://www.r-5.org/files/books/computers/internals/net/Rich...
There are a number of problems with trying to learn networking from the RFCs. First, they're specifications, not tutorials, so they just assume that you have a lot of background that you otherwise have to infer. Second, it's very common for a protocol to have been iteratively developed over the years and so split over a number of RFCs. In some cases, people will eventually try to consolidate things into a single document or document suite, but it's a big pain to do that, so it often doesn't happen.
Finally, a lot of the foundational RFCs were written long before we had a good understanding of how to design a robust networking protocol. For example, if you just implement TCP's original rate control algorithm [RFC 793] you get a system which is very vulnerable to congestion collapse (see https://ee.lbl.gov/papers/congavoid.pdf for more). Even with a more modern specification for RCP as in RFC 9293, you kind of have to work to piece together the shape of a working system. The QUIC RFCs are better because they were written all at once, but it's still not really designed to teach you.
IMO a better place to start is TCP/IP Illustrated by W. Richard Stevens. Volume 1 really explains the protocols. Volume 2 shows how to actually implement them.
https://archive.org/details/RichardStevensTCPIPIllustratedEN
Personally, I think if you understand the fundamentals, you will quickly realize things like software defined networks and CDN technologies are just abstractions on top of other stuff.
[1] - https://www.amazon.com/TCP-Illustrated-Protocols-Addison-Wes...