Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Good book to learn modern networking?
326 points by charliebwrites 9 months ago | hide | past | favorite | 131 comments
I'm looking for a book to get up to speed on networking in 2024

Including classical topics from sockets, to the TCP/IP stack, to DNS, to AnyCast, and similar layers and technologys, but also modern networking setups that might include cloud providers, or other 2024-ish considerations




For me Computer Networking: A Top Down Approach (CNTDA) by Kurose is still the best textbook out there to learn modern networking:

https://gaia.cs.umass.edu/kurose_ross/index.php

Starting with the 6th edition, it has separated control and forwarding planes for the network layer to reflect the increasing popularity of software-defined networking (SDN) i.e. evolution of hardware centric to software centric networking. The fact that even before 6th edition when the chapter on networking is still monolithic (combined chapter on control and forwarding), it has already mentioned about the separation concerns between the control and forwarding planes while other popular textbooks still not highlighting this important matter. In addition, unlike many textbooks you can download all the supporting materials slides, exercises, animation, etc, of the from the authors' public website and Prof. Kurose video lectures are also available in Youtube.

My main wish lists for the next edition (9th) hopefully include Smart-NIC for modern approach to in-network computation and also the newly standardized segment routing for network layer QoS.

If there's The Nobel Prize in Literature for textbook authors, the authors of this book should be more than deserving.


I agree completely, CNTDA is a great book and Jim Kurose, the author does a superb job covering some of the chapter contents in his youtube series (Ch1 to 6.x) from then on, another channel continues each chapter video

Lectures by Jim Kurose: https://www.youtube.com/watch?v=74sEFYBBRAY&list=PL1ya5dD_M8...

Lectures by Epic Networks Lab: https://www.youtube.com/watch?v=BBzqX08GPo8&list=PLo80JwUm6h...


The licensing of this book is not something I've ever seen before...

I'm unable to buy it ?


$699 for a paperback copy. God I love textbooks.


Libgen exists purely for this reason. $50? Sure. $100? Eh sure why not?

$700? lol.


Wow, I couldn't even find the price, I guess I'm probably better off for it :)


Just skimmed through the Table of Contents. There doesn't seem to be even a word on the physical layer.


Sounds like OP (as with many reading Top-Down) don’t really care about physical layer.


Such a hasty generalization. It's not that we don't care about PHY, but expecting in depth PHY treatment in modern networking book is like expecting semiconductor physics in the The Art of Electronics book [1]. Personally PHY is my passion and trying to propose a new reliable PHY waveform to 5G and upcoming 6G standards.

Modern PHY is like bit twiddling in programming, 99% programmer don't do it and don't care unless you are doing HPC or device driver. In networking those who're doing PHY belong to communication engineering field. For modern networking the relevant PHY mostly dealing with digital I/Q signal for wired/wireless and there are many excellent books on the subject such as this [2].

[1]The Art of Electronics (2015):

https://news.ycombinator.com/item?id=38748370

[2] Digital Signal Processing in Modern Communication Systems

https://www.amazon.com/Digital-Signal-Processing-Communicati...


Did you read the description?

> "with an early emphasis on application-layer paradigms and application programming interfaces"


No. Why would I? I was merely commenting on the "best textbook out there to learn modern networking."


I consider the TOC deeper research than the blurb on site. Just pointing out it doesn't mention the book is about the physical layer at all - a probable explanation for why you didn't find it in the TOC.


To clarify, the praiseful comment made me curious and I wanted to know what's so good about the book, so I went through the Table of Contents and noticed that the physical layer is missing. I was just trying to point out that this layer is equally important as others for someone looking to gain a good grasp of networking.


> I was just trying to point out that this layer is equally important as others for someone looking to gain a good grasp of networking.

I don't agree. For those onboarding onto the subject, their mental model will be focused around the higher level details implemented around the application layer. The physical layer only starts to become remotely relevant once you start to delve onto very specialized topics.


Agreed. The physical layer really is a whole different game. I know it exists and I know various limitations of different mediums, but once you get into that low level physics and radio math you are basically stepping out of computer science at that point.

I highly doubt even 1% of engineers could describe how WiFi works on the radio / physical level let alone anything about the variosu ways we make wires and light works.


I read the 7th edition and I agree with you. It's a great book.

My wish would be for the section/mention of NAT to be expanded on and discuss NAT traversal mechanisms.


I'm still a fan of TCP/IP illustrated (book 1) [1] for understanding the fundamentals. The one from No Starch Press [2] is also a great book.

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

[2] - https://nostarch.com/tcpip.htm


Warning about old books. (The NoStarch one is from 2005)

Given that IPv4 Evolved a lot over the last 20 years to manage the complexity of address assignment and shortages, everyone should be aware that IPV6 has changed too.

The chapter on IPv6 just barely hint and the development of IPv6 in real world cases.

Don't take an almost 20 year old book for gospel for IPv4 or IPv6.

Policy and implementation practice has changed enormously. Look at documentation from the last few years and from good sources. EG Apnic is the Regional Internet Registry for Asia. https://blog.apnic.net/2023/04/04/ipv6-architecture-and-subn...

Also a good source of info and opinions is the Packet Pusher set of podcasts. https://packetpushers.net/

I find that they tend to have a very real world explanation of topics covered and they avoid the "I've doing networking for 20 years. Don't tell I have to change" attitude.


What are you talking about? TCP/IP hasn't changed in the last 20 years... like, at all.

There might be best practices which have changed around NAT, software defined networking and load balancing, but it's all on top of existing protocols.

If you are talking about subnetting practices, it has always been an operational thing... that's not what these books are talking about.


Looking at the No Starch Press book: 1616 pages and 88 chapters. Something tells me that I don't know TCP/IP as well as I thought I did...


It’s meant as a reference book.

You need to know some factoid, you look it up, you actually find it because it’s 1600 pages long.

These days, most people would Google it. This book was written back in 2005 and some of us still prefer paper for reference.


FYI about 'factoid':

> The term was coined in 1973 by American writer Norman Mailer to mean a piece of information that becomes accepted as a fact even though it is not actually true, or an invented fact believed to be true because it appears in print.

* https://en.wikipedia.org/wiki/Factoid


That book's a reference encyclopedia, not an intro/primer.


"I'm still a fan of TCP/IP illustrated (book 1) [1] for understanding the fundamentals."

Agreed.

I find it difficult to gratuitously study a broad topic and instead prefer to learn by building and doing.

However, that book was one of the most readable, well paced and well presented books and it really did give me a good broad understanding that I rely on even now, 25 years later.

Even if you think a book just about TCP/IP is pigeonholing you and you'd like a broader picture of "computer networking" I would still start with this - the design decisions and solutions described can be applied very broadly.

A good example of this is the discussion of exponential backoff algorithms ... that's useful everywhere.


TCP Illustrated volume 1 and Unix Network Programming volume 1, 3rd edition.

And then just read RFC for more modern stuff like QUIC, WebSockets, WebRTC, etc.


I should add:

Don't be afraid to dive into RFCs. They're the primary source, and once you've got the basics (from eg. TCP Illustrated) understood, they're easy to read and understand.

In many cases, I find them to be better than the majority of books/articles/videos.


I'll add onto what you said: if you're afraid of RFCs, look for a Wikipedia page of that topic. They're generally much more readable and have diagrams.

For example, trying to learn the TCP fields from the RFCs alone is hard because of how many there are. Starting with the Wikipedia page on TCP and then following the linked RFCs is easier.


You can't NOT have these books on your bookshelf, if you are serious about diving deeply into TCP/IP.


Once you're past the fundamentals, if find yourself interested in high-performance networking, I recommend looking into userspace networking and NIC device drivers. The Intel 82599ES has a freely available (and readable!) data sheet, DPDK has a great book, fd.io has published absolutely insane benchmarks, ixy [1] has a wonderful paper and repo. It's a great way to go beyond the basics of networking and CPU performance. It's even more approachable today with XDP – you don't need to write device-specific code.

[1] https://github.com/emmericp/ixy


And on the other end of the advanced spectrum, any recommendations for learning datacenter networking? Eg similar to the topics in Cisco’s datacenter certifications: https://learningnetwork.cisco.com/s/ccie-data-center-exam-to...


Unfortunately I don’t have any recommendations to give, my experience starts and stops at application development. Though I would love to spend some time in a datacenter!

Potentially have a look at Infiniband and Clos/fat tree networks?

My more generic recommendation would be to explore semantic scholar for impactful/cited papers, look for some meta analyses, and just dig through multiple layers of references till you hit the fundamentals (typically things published in the 80s for a lot of CS topics).


I’ve been using http://gaia.cs.umass.edu/kurose_ross/online_lectures.htm which is a course by authors of Computer Networking: A Top-Down Approach


We used this book in my university class on networking. I can also recommend it.


Seconded; I also recommend this book.


A good progression I think is these books in order and 2 labs:

- Kurose, Computer Networks a top down approach

- tcp/ip illustrated volume 1

- the no starch tcp/ip book

For labs,

- at your workplace or homelab, I’d click through the network configs in your cloud. This hits maybe on “modern networking,” although the theories in the books will match to what you see in cloud just maybe with cloud product names. Reading through terraform repos is also good

- GNS3 lab software to build networks you read about in those books.

Or tbh, just doing a net+ cert would get you in a good place for basic competency to augment a dev job.

Top of mind - there is a logic to it and it’s quite interesting technology. Learn to thing in terms of protocols and their rules and it’ll open up.


High-Performance Browser Networking: https://hpbn.co/


A very good book for web developers. I read it a couple of months ago. It's very useful and I highly recommend it, even if it doesn't go deep into the details like other books.


From time to time I find myself coming back to this one, it's short and concise. Of course if you want to go deeper this one doesn't cut the deal


https://www.ciscopress.com/

That is generally considered the gold standard for professional network education.

Yes, it’s networking according to Cisco and in some cases they do try to push some of their products as commercial solutions. However, the proprietary stuff is clearly identified by Cisco intentionally in the educational materials because the goal is education first even if you favor a competitor’s products. Cisco makes money on their educational materials and certifications so they can afford to separate their tiny bits of proprietary stuff from the education as necessary to build a strong professional labor force ready to consume their products years in the future.


for classic network programming that's relatively hands on and has a lot of examples, beej's guide to network programming is great (and free online):

https://beej.us/guide/bgnet/


Julia Evans has some good zines as a starting point and does a great job of distilling complexity and making topics like this approachable to newcomers. [1]

I'd also recommend "Network Basics for Hackers" by OccupytheWeb [2]

[1] https://wizardzines.com/

[2] https://www.amazon.com/gp/product/B0BS3GZ1R9


I use Computer Networking: A Top Down Approach for my classes on computer networks and distributed systems and on a theoretical level its a good read. My students appreciate the visual presentations. Modern networking setups depend a lot on the area of scope. Do you want to understand IP networks, tier-1 internet backbone, mobile networks, private networks, data center architecture, distributed web applications, etc.


there are a lot of things that are at play here, networking has been a commoditised and defragmented place even now, there is a tug of war that is always happening between companies who want to commoditise like cisco and junipers who emphasise a lot on the hardware and less on software, there is no proper gui for cisco or juniper products till now. and there is linux networking with tun and tap. one good book is to look at automation of networking (Network Programmability and Automation: Skills for the Next-Generation Network Engineer) which does a good job on the history and is a latest book which goes over a wide variety of places where networking can change. if you delve into kubernetes and virtual networking it is a beast on its own !! so for modern networking just do a lab and do a packet capture and you are good to go ! learning basics gets you no where ! it is like reading how alphabets are formed but never gets you write a poem, use chatgpt when you have a doubt and move on to next topic. topics you need to look at are ipaddressing, bgp, vxlan, iptables thats it !


When I was going through this, I found it helpful to re-implement stuff in code as I was learning. I compiled resources on it in this repo for my own benefit: https://github.com/aos/computer-networking-study


Adding to the already good recommendations on this thread:

- Interconnections: Bridges, Routers, Switches, and Internetworking Protocols (https://www.amazon.com/Interconnections-Bridges-Switches-Int...)

It covers a broader range of topics than some of the other books mentioned here and helps with an understanding of where existing tech comes from and why. Also it covers topics that you don't necessarily need to know if you're only operating in a cloud environment, but that help to understand what is going on in those far off data centers.


This book is so great. The author _invented Spanning Tree_ and it's still a great foundational text along with Stevens' TCP/IP Illustrated vols 1&2.

Hardcopies of all 3 are dirt cheap and eternally valuable for the endpaper diagrams while inspecting packet captures alone.


You (and everyone else on HN) want The Illustrated Network.

https://www.amazon.com/Illustrated-Network-How-Works-Modern/...

The previous best book was TCPIP Illustrated. The author of Illustrated Network was a fan of TCPIP Illustrated and wrote their book as a modern equivalent.

Excerpt:

https://wgoralski.com//wp-content/uploads/2021/02/Illustrate...


#1 is buy yourself a hub, NOT a switch. Consider understanding the difference between a hub vs a switch an important part of your initial networking education. Then learn how to sniff traffic, using things like WireShark, etc. You will learn a lot by watching all the traffic go back and forth, and then reference TCP/IP illustrated to understand the gist. Set up an HTTP server on a server, and then add a new computer to the network and then watch ARP, DNS, etc work their magic.


IIRC, hubs aren't allowed in 1GbE or newer standards. Switches only.

So I'd advise don't waste money on a hub. As the sibling comment points out, port mirroring is a thing.


If you don't know anything about networking, how on earth are you going to learn about what port-mirroring is? You start off small, and work your way up from foundations. Hubs can be bought on eBay for cheap, and who cares if it's limited to 1Gbe? This is about learning.


> If you don't know anything about networking, how on earth are you going to learn about what port-mirroring is?

Through reading and understanding the fundamentals, just like we all had. The concept of port mirroring is super simple, I don’t remember any difficulties with that back then when I was a junior neteng. Nor did I need a hub to learn basics.


I've learned networking by doing but I haven't ever had a hub. When I tried to use Wireshark for the ~first time, and couldn't see traffic not for my host, I Googled that and got a good description. I haven't actually ever used port mirroring yet despite doing a lot of fun stuff with networking.


Lol? Where do you even find a working hub nowadays? I was gifted a 24 port one in 2012 but I forgot to take it with me two years later.

Any proper L2/L3 switch has mirroring so using a hub isn't mandatory.


One can do even simpler: install a Linux host and run tcpdump / wireshark to capture its own traffic on an interface. If you time the start of capturing with the moment you connect, you can see the DHCP, and probably DAD and DHCPv6 and/or SLAAC. Then mDNS, as well as high chance for HTTP/HTTPS. Running “sudo ntpdate time.apple.com” will give you a taste of NTP. (ARP/ND will be necessarily somewhere there as well).


There's nothing easier than hooking up 2 computers via ethernet to an isolated hub, and then watching the traffic go back and forth. There's no additional stuff to filter, you can just look at the packets which match exactly what is shown in TCP/IP Illustrated. From there, you can expand but I think the best experience is sniffing traffic between two computers on a hub to learn the fundamentals.


Two isolated computers won’t get you very far in today’s network. They might get the auto configured 169.254/16 addresses and link-local IPv6, and get some Bonjour traffic but that is about it. But those protocols are not in TCP/IP illustrated.

Back in the times of IPX and NetBEUI that was indeed a useful activity - connecting two Windows 3.11 computers with NetBEUI was a nice way to learn Ethernet LLC-2 (yes, the connection-oriented Ethernet layer protocol :-) as it allowed to nicely trigger the DLSW to learn it.


> #1 is buy yourself a hub, NOT a switch.

What?? You don’t have to buy a hub to learn networking. Switch with port mirroring works fine; a couple of VMs with packet sniffing on the interfaces work even better. I am not even sure if you still can buy a hub in 2024 - I’ve not seen any since like 2005? This advice is weird.


https://systemsapproach.org/books/

Bruce and Larry's 6th edition of Computer Networking: A Systems Approach is free to read online, or you can buy a copy. Both have a long list of achievements in the networking space.

Recently they've been publishing smaller more focused books on many topics.

(full disclosure, I helped write the Edge Cloud OPs one)


5 years ago, the authors put an older edition of the book (5.4?) as a free download from GitHub: https://github.com/SystemsApproach/book/tree/format/publishe...

Direct link to an older PDF: https://github.com/SystemsApproach/book/blob/format/publishe...


Patterns of Network Architecture by John Day is a pretty good too if you want to learn the why of how networks are the way they are today.


This might be what you are looking for;

The Illustrated Network: How TCP/IP Works in a Modern Network by Walter Goralski.

Take a good look at the ToC, covers a lot of different aspects of a "Modern Network". Start with this and then follow up with other detailed books some of which are mentioned in my other comment in this thread.


Are there any books or resources to learn troubleshooting, debugging with linux networking. Like I can read the books and know the theory, but deploying the theory in reality needs a lot of intuition that can only be gained through experience.

That's what all the training materials are missing. I want to fast track this section with practical practice problems.


Meet people and solve their network problems. Whether at work or family or where ever, any time you solve a tricky problem you learn more and people bring you more in the future, plus you helped them which is a nice feeling. Also like they said above, build yourself a wonderfully complex home or small office network and maintain it. I would also say smaller companies are better for learning the basics as in large companies oftentimes you won’t even know someone allowed to touch cables but in a small company one person has broader responsibility or access to cool problems.


right but I want a resource that will get me from 0 to 10 much faster. Like a set of 20 problems I can troubleshoot designed to help me learn quickly.

The reason why learning something likely calculus is so straight forward is because you can just do tons of problem sets and eventually you develop the instinct for it which by default comes with understanding. I want the same thing for networking. Problem sets is the key. I guess this is a start up idea.


The port is rated for 1Gbps, but the connection speed shown on the client's Windows Machine network status is only 10Mbps.

What do you do to resolve?


Give me a domain. For example right now I can use chatGPT or Google to solve which I would do in the real world. But my goal is to get familiar with tooling. I want a restricted domain, but not so restricted that I can deduce the answer.


I actually am not sure what you're trying to say here.

Can you say it a different way?


eh don't worry about it. The way you asked it the first thing I would do is google it. Or chatgpt it. Which defeats the purpose of your question.

That's literally my only route. For example, if I asked you, how do you fix a refrigerator without a broken refrigerator in front of you... what would you do? Likely google it too.

It's hard to frame the question in a way that's actually educational in the sense that it triggers problem solving. Right now the question is framed in a way where I can only look up the answer. You see what am saying? I can't actually help you here either because I don't know how to frame it correctly.


The question is actually framed in a way that you can't easily Google it.

You could possibly ChatGPT it, sure.

Or you could just answer it, and let someone correct you if it's incomplete or off-base.

We probably won't be able to help with compulsions to "cheat yourself out of learning". That's a "you" thing. =]


A me thing? No. It's not.

The question was framed in a way where the question is total shit. I was being nice but the minute you say it's a "you" thing I'll just spill it. The question is garbage. You shouldn't ever do this it's not your thing. You can't teach and you don't know how to respect the person your teaching.

First off I can google it. First result: https://answers.microsoft.com/en-us/windows/forum/all/ethern... But I wasn't saying that. I'm saying that google is the ONLY option based off the way you framed it. You don't want to present a problem where the only way they can solve it is to google it.

The question needs to be framed in a way where the user has the tools he needs to solve the problem. If the task is how do you build a lego house, you need to provide the person with legos so he can design a house and learn what legos are. If you ask such a question to a person who doesn't know what legos are, doesn't know how legos work, then your question is complete fucking garbage. Get it?

Here's a suggestion. List a set of common networking tools in which a subset would be appropriate to solve the problem. That's one way of how it could work. You don't say hey, that's a "you" thing. No man. It's you. Yeah if you didn't catch the hint we're done.


At least I got you to look up, and maybe even learn something, as requested.

In my case, about a decade ago, it was the cable being partially broken, not something else, as 95% of the Google results have as a resolution.

Check into game theory when you're bored with networking.

Even if my question was the stupidest, least helpful question in the world, becoming aggressive won't accomplish your goals.

Happy to be "done".


if you're in trouble already, no book will help you... :D

wireshark, ifconfig, route, ping, netstat, etc are your REAL friends on Linux! :)


Yeah this is what I'm saying. Like problem sets which involves using those tools to solve.

The environment would have to be interactive though. Not a written problem set but some network of containers that exhibits the problem. That's how one gets the experience.

Think: leetcode for networking. I would pay for that.


mininet [1] can be used to emulate networks on a single computer. It is used to teach networking concepts.

1. https://github.com/mininet/mininet


I've tried in the past to read some books on the topic but failed. Too much theory, too little practice.

Is there some gamified course? Perhaps literally a game? I remember playing a game where you build your CPU with NANDs, is there something like that for networking maybe?


Not sure if there are any genuine games for the subject, but HackTheBox (labs and academy) have some very fun challenges that will force you to learn a decent bit about networking along the way. I personally feel I learn the most about networking messing around with a homelab, VMs or GNS3/Packet Tracer. Try and get a DHCP server setup, then connect clients, then subnet, then give it some vulnerabilities and find a reason to sniff traffic with wireshark. Each layer and protocol is its own beast so there's a lot to learn, I find it best to immerse in it all and understand how they interconnect.


It's more focused on security than just networking, and I don't believe it's quite what you're looking for, but https://tryhackme.com/ might be enjoyable.


Network hobbyist here: an excellent home project is to setup your own PBX. Complete with VLAN's, and backups running on your favorite HV. Most importantly, use hard phones with SCCP.

It's a challenge of itself, and will force you to demonstrate your understanding


When it comes to the networking theory, you can't go wrong with Andy Tanenbaum's book.


It doesn't qualify as a book but reading RFCs has always been my go to if I want to understand a protocol albeit RFCs can be a bit... Dry.

https://www.rfc-editor.org/


How about https://zguide.zeromq.org/ ? I have seen people recommend this dearly but I haven't had a chance to read it yet.


It's not exactly what you asked for, but if you're interested in the low level, algorithmic part, I recommend "Network Routing: Algorithms, Protocols, and Architectures".


Classical topics haven't changed, just work through the Stevens book again to refresh your memory. For "modern" topics you have to be more specific - what exactly do you want to know?


High-Performance Browser Networking -- https://hpbn.co -- is a great book and website.


I don't really have any book recommendations for you (shocking, I know!) but I'll just offer this up by way of encouragement. I think what you're proposing to do is a great idea, and I wholeheartedly endorse having everyone (at least everyone in "the tech industry" or even tangential to it) learn at least the basics of networking.

To illustrate why I say this, let me give you some back story. In the late 1990's (98 or thereabouts) I was working in IT, but not as a programmer. I still had not finished my C.S. degree, and I wasn't applying for any programming jobs because at that time I thought no one would hire me without a degree. (as an aside, I quickly found out how wrong I was when I actually started applying for programming jobs in late 1999 / early 2000, but that's a story for another day). Anyway, I was doing a combination of network administration (Novell Netware 4 t3h win!), desktop support, and AS/400 operations. Since networking was part of my job, and networks fundamentally fascinated me, I spend a decent amount of time reading books on TCP/IP, Ethernet, socket programming, etc. Including the classics like TCP/IP Illustrated and Internetworking with TCP/IP (there's some book recommendation after all, hah!) and eventually studied for, and passed, the Network+ certification test in late 1999.

Shortly after that I got my first programming job and left all that networking engineering stuff behind. And I don't miss it, especially getting fiberglass crap all over my hands and arms while pulling ethernet cable through drop ceilings, etc. But anyway, the point is.. over the past 23 some odd years, the networking knowledge I acquired has been ridiculously valuable to me, and that value just seems to keep growing. I mean, the joke is "every system is a distributed system now" and that's actually close to true and not a joke in many cases. Nearly everything we build now involves a networking element. And when the network is broken, the system is broken. And guess what? The network breaks. A lot[1]. And knowing just enough to debug things like DNS resolution problems and what-not goes a long way.

My current day-job has me doing a lot of work with AKS and Istio on Azure, and one of my "specialities" if you want to call it that, is ingress. I spend a lot of time helping teams get things set up so that traffic comes in and hits their Istio ingress gateway, whether that be by integrating with Azure App Gateway, API-M, IBM API-C, or whatever. And it's once every couple of weeks or so that I just blow somebody away with my genius (hah, haha) by doing something like editing my hosts file to selectively override a DNS value so I can test by short-cutting straight to the ingress load balancer and bypass some upstream component, or something similar. Whipping out "dig" just has them rolling in the floor. And using netstat, netcat, etc? It's like I'm doing black magic or something.

The moral of this little story is that having even a fairly rudimentary knowledge of networking can go a long way. And as networks have become more and more fundamental to everything in computing, that's only become more true in my experience. So yeah, I highly recommend spending some time on this topic, regardless of which resources you choose to study.

[1]: https://en.wikipedia.org/wiki/Fallacies_of_distributed_compu...


I did AS/400 also. Cool stuff. We had token ring and it turns out if you are fast enough you can add in a new node to the existing ring without breaking any ongoing connections or anything. Lay all the cables out, practice the unplug and replay mentally and then boom, new employee online.

But yeah tcpdump, netcat, dig invaluable. Just the knowledge of the TCP handshake and what various timings for “connect failed” might mean about a firewall in the way vs. app not running etc is super useful, cloud or not.


Can anyone here comment about their experiences using ChatGPT to learn networking concepts? Are the responses accurate?


Would you all have any book (or YouTube) suggestions for an absolute beginner to learn from?


keith barker is great https://www.youtube.com/watch?v=8AX9LandYJU

this is the beginner track form cisco https://learningnetwork.cisco.com/s/article/200-301-ccna-stu...

this book is still great `CCNA - Cisco Certified Network Associate Study Guide (6th, 07) by Lammle, Todd`


Tangential, does anyone have recommendations for understanding OSI Layer 1 and network cards?


There are a couple of general OSI diagrams I produced recently, available here: https://www.nathanhandy.blog/articles/osi-model-revisited.ht.... They might be a good conceptual starting point for you.


Thank you, these look really beautiful!

Though layer 8 seems to be missing :p


For the physical layer, the IEEE specs are actually quite good. A lot of the IEEE 802 specifications are free in PDF format now: https://www.ieee802.org/16/arc/802-16list2/msg00142.html


Thanks!

For future reference, direct download links can be found here: https://ieeexplore.ieee.org/browse/standards/get-program/pag...

Found the direct link here: https://ieee802.org/


Going through Hussein Nasser course right now, which is a good guide for noobs like myself.


CCNA books

I had classes using those.

Not a programmer.

Guess u dont learn CCNA in CS degree?


It doesn't seem to be that consistent, at least in the US. In the UK about 20 years ago it seemed that most universities had a networking course that would at least get someone to the point of being able to converse with a CCNA even if they went into much more academic detail. My uni ran optional UNIX-titled courses outside of the degree to ensure staff and students had access to some practical training. It touched on Linux networking too.

I'm now in the US and I find I'm horrified at the level of networking knowledge, but occasionally impressed at the level of knowledge on other topics. It's no consistent set of topics because there seems to much more flexibility. The UK is fairly rigid with electives.


It doesn't cover everything, but I liked "High Performance Browser Networking" by Ilya Grigorik. It was very straightforward, and focused on what's relevant today in the browser. However, that "today" was 11 years ago already (huh, time flies) and didn't cover what's relevant in 2024, like practical issues of dealing with CDN. Also, it really was browser-focused, so there wasn't anything on how VPNs work and such.


W.Richards


Good on you for wanting to learn about it.

Two things strike me as odd about networking compared to many other IT/software fields:

First, it evolves much, much slower than anything else. Everything I learned 2 or even 3 decades ago is still relevant. Ethernet, DNS, DHCP, TCP/IP. New things got bolted on but everything old is still relevant. Yes, even in the modern cloud.

Second, I've met so few in the fields that actually understand anything about networking. Even as basic as an ip address and subnet. As long as the web page loads and the data is flowing, people stop caring fast. When the network breaks, most software devs are stomped and can't even do the most basic troubleshooting.

My only recommendation is to start with the absolute basic and learn from first principles. Ethernet, IPv4 (packets, IP addresses, subnets, routes), UDP, DHCP, DNS, TCP, HTTP, tunnels and VPNs, in that order. Use wireshark along the way and research everything that is unclear before going up the stack.

Try to run your own router/firewall using openwrt or pfsense/opnsense.


I'm going to exercise my n00b-privelege and ask for a recommended YouTube primer on said basics - anyone, por favor?



Hussein Nasser covers a lot of this on YouTube and has a networking course on Udemy. I love his content.


Is there material written in text or books? Always have a hard time learning from videos.


The first volume of TCP/IP Illustrated by Richard Stevens is wonderful. Ethernet frames, ARP, IP, ICMP, BOOTP, DHCP, UDP, TCP. Just make sure to get the original version.


What's wrong with the second edition?


Stevens' writing was engaging and pedagogically top shelf. Kevin Fall attempted integrating his coverage of newer protocols into the preexisting text, and unfortunately, completely butchered it.


I consider this the greatest technical book ever written.


Stevens gives himself a lot of competition with APUE tho.... hard to pick a winner between the two.


http://www.tcpipguide.com/free/t_toc.htm covers a lot of the basics.


You could do worse than Computer Networks by Tanenbaum


Network Chuck might be up your alley.


Network chuck covers the basics. The only thing I would warn is that he only covers the extreme basics. Like the top 1% of networking. But he makes it sound like when you are done with his videos that you are ready to go make $250k as a network engineer.

So yes he's entertaining, but I only look at it as entertainment. The learning materials are barely more advanced than you can get from skimming an introductory blog post on networking.


Indeed. While I respect him, I don't like his caffeinated, manic presentation style and his material is far too basic for me. I suppose his presentation style is to hype up learners on an otherwise boring topic (for most, I personally love networking).

Nonetheless, he is quite popular with the early learners, such as OP.


> When the network breaks, most software devs are stomped and can't even do the most basic troubleshooting.

Not that I'm an expert myself, but I've seen the same patterns and concluded that to be a symptom of a set of technologies whose abstractions are leaking much less than others. It e.g. rarely happens that you have to run Wireshark and the likes to debug why an image doesn't show up in your app.


I'm also not an expert, but I would wager that networking doesn't change as fast as other computing-related topics because a big chunk of it is implemented in hardware, which is very expensive to change/upgrade, and that new network elements need to be compatible and integrated into existing networks, which don't easily change because its very expensice to change/upgrade and needs to remain compatible with other networking elements.


Books are good, but don’t underestimate the power of overcomplicated home networking as a teaching project. Pick up some gear and VLAN your network so all the IoT stuff is on its own network away from your protected devices (also make it so IoT devices can only talk to the WAN). Set up a guest network. Make it so you and guests can stream to your streaming devices but guests can’t ping your protected devices (this one is a whoooole thing involving MDNS and reflectors). Set up a site-to-site Wireguard VPN with a cloud VNet (try it without using Tailscale first). Set up a Pi-Hole, then DNAT all DNS traffic to it. Come up with a fun naming scheme for your machines (mine are all ships from The Expanse). Set up DNS nicely so you never have to remember IPs. Anyway, those are just some ideas that come to mind.


I still remember the IPs for the DNS servers at a place I worked at in the 1990s. If you don’t end up remembering IPs at least for a while you aren’t really getting your hands dirty.

But yeah all those seem like good learning opportunities. If you don’t actually need email that much, running your own mail servers and DNS servers is also good, altho in the modern day some large providers will probably regard your outgoing mail as spam. (E.g. I can’t email my wife on ATT.net, and from time to time I have been blocked by gmail and office 365).


This is a good list. To make it more modern (i.e., software defined or infrastructure as code or whatever buzzword is current) you could then do it all in Terraform, Ansible, etc. on a Proxmox / PFSense / VMWare home lab.

Maybe even add GitOps - e.g. install a GitHub Actions agent locally and have it run the Terraform etc. against your lab servers automatically when you commit it.


Weren't people calling this "serverless" until 6 months ago?


Ha this is me right now. I’ve got the VLAN segmentation down, but now getting casting and airplay working across VLANs with mDNS has me a bit stumped. Definitely a bit tricker than I anticipated, I thought I’d just need to write firewall rules.

For me everything is named after things from Dune :)


mdns is a right pain as it uses the range for local subnet only, and has a TTL of 1, so you can't just pim route it round your network like normal multicast. You need a device which will reflect messages between all the different vlans -- avahi-daemon is popular


Having done almost all of these - I still feel like I know about 2% of how networking actually works :laugh: VPCs are just so unnecessarily complicated!


This is something I'd love to do, but haven't a clue where to start researching the topics.


"Networking for Systems Administrators" by Michael W. Lucas.

In retrospect, should've been called "Networking for programmers". Short. Concise. Examples for all operating systems including Windows. That will get you started. After that, to level-up, any book with good ratings would do. And you will also know which part of the networking stack you want to learn more about, thus, you'd pick the correct book for yourself. But this one is a must have if you're feeling very uncertain about your understanding of networking concepts and how everything glues together.


Wanted to bump this. It's the book I recommend when someone asks, "How can I learn networking".

My next favorite is the Top-Down book everyone above mentions. I like that it starts with loading a web page, instead of bits on a wire. And they have pcap files so you don't even need a lab.

The Stevens book is the standard text for programmers writing network code.

Beej's Guide (https://beej.us/guide/bgnet/) Is how I learned.

By the time you get here, you'll know enough to know which book to read next.


Just arrived in the mail today, in fact. I'm turning into a bit of a fan of his stuff:

https://bookshop.org/search?keywords=michael+w.+lucas


also can add this new book Network Programmability and Automation: Skills for the Next-Generation Network Engineer


There is tons to study here but you have to get your fundamentals right else you will completely get overwhelmed/confused by the cacophony of jargon/acronyms/devices. The following lay the foundations;

1. An Engineering Approach to Computer Networking : ATM Networks, the Internet, and the Telephone Network by S.Keshav

2. Foundations of Modern Networking: SDN, NFV, QoE, IoT, and Cloud by William Stallings.

3. The TCP/IP Guide by Charles Kozierok - http://www.tcpipguide.com/

4. Hands-On Network Programming with C: Learn socket programming in C and write secure and optimized network code by Lewis Van Winkle.

5. The All-New Switch Book: The Complete Guide to LAN Switching Technology by Rich Seifert and James Edwards.

To get an idea of the overall Internet Architecture/Layouts, i also recommend the following two old books to get the background information. Things have changed a lot now but are almost always built/modified on the bedrock described here.

a. Internet System Handbook by David Lynch and Marshall Rose.

b. Internet Architectures by Daniel Minoli and Andrew Schmidt.

Finally, you should look at all the configuration parameters of your home router (wan+lan+wifi), go through their documentation/google as necessary and make sure you understand what they are and how they are used. This is where the theory read from the above books meets practice in the real world.


How to win friends and influence people by Dale Carnegie


It's great for peoples, the question is probably asked for machines.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: