Ask HN: What is a good book to learn about the network stack?
I'm primarily interested in the network stack on linux, with a focus on TCP (but it would still be good to understand the lower layers)
I recommend reading the following books/presentations, I have read all of them several times and it has given me a very lucrative, wonderful deep understanding of TCP/IP (including UDP), programming network connected applications, creating complex network diagrams, and being able to perfectly talk with all individuals in networking from the non-technical to telco engineers, work as an embedded engineer, network engineer and more.
I would highly recommend getting a cheap certification rack from Amazon once you get better book knowledge (CCNA/CCNP Collab, Wireless and Routing and Switching) to increase your knowledge 20x. When I did not have my own hardware there were just so many questions and things I wanted to do that were very complex or not possible to do with training simulators, books, etc.TCP/IP Illustrated Volume 1: The Protocols TCP/IP Illustrated Volume 2: The Implementation Network Flow Analysis Computer Networking: A Top-Down Approach Introduction to Sockets Programming in C using TCP/IP Beej's Guide to Network Programming Programming and Automating Cisco Networks CCNA Routing and Switching Official Cert Guide CCNA Datacenter Official Cert Guide CCNP ROUTE, SWITCH, and TSHOOT Lab Manuals CCIE and CCDE Evolving Technologies Study Guide
With the high quality managed switches you can see how your apps can affect the network, integrate your work with network connected devices, automate network devices and many more things that wouldn't give you as deep as an understanding when using an unmanaged network (e.g. create your own software that runs on routers, switches, VOIP phones and linux servers).
Ilya Grigorik"s High Performance Browser Networking is a great open-access backgrounder. Very up to date on modern topics such as WebRTC and WebSockets
Another comprehensive overall reference is Michael Kerrisk"s Linux Programming Interface handbook
And to see some of the latest developments. Check out talks from Linux NetDev Conference archives
https://www.youtube.com/channel/UCribHdOMgiD5R3OUDgx2qTg/vid...
Finally, this was recently posted, and I believe the author is working on another one for QUIC...
"The Illustrated TLS Connection: Every byte of a TLS connection explained and reproduced"
Best of luck, and you are on the right path. Master the fundamentals and the rest will follow ;)
Understanding the Linux Kernel, 3rd Edition, https://www.amazon.com/Understanding-Linux-Kernel-Third-Dani...
It's very hard and dense to read, but I don't think there's a better book out there about a networking stack implementation.
It might be too much implementation-focused for your taste though (it was for mine), in which case one of the other books more focused on protocols (already suggested in other comments) might be a better choice.
I'd recommend Patterns in Network Architecture by John Day. I had him as a professor at Boston University and loved hearing his war stories from his days working on ARPANET. https://www.amazon.com/DAY-PATTS-NET-ARCHITECTURE-_p1/dp/013...
In addition to the TCP/IP books commonly mentioned, i highly recommend the following two, both by Srinivasan Keshav;
* An Engineering Approach to Computer Networking: ATM Networks, the Internet, and the Telephone Network.
* Mathematical Foundations of Computer Networking
Networking: A Top Down Approach is a great and clear read.
tcp/ip illustrated 1&2, by richard stevens, this is the bible of networking, it covers all the different osi layers, address spaces, protocols, packet layout, etc. if you want to understand how netwokring really works, this guves you all the details.
Linux kernel is very good source to dig network stack, it has L1 - L4 implementation, and there are some books about Linux network stack design online. it is very helpful to read book and dig network stack code together.
Beej on sockets is a must read
undefined
You specifically want Linux so I would skip all the generic or cisco focused books. Have you read LDD3? http://www.makelinux.net/ldd3/ ,chapter 17 specifically. It's difficult to learn the Linux network stack without knowing C as well.
https://www.afternerd.com/blog/learn-computer-science
there is a book recommended in this article, it definitely helps!
Start with NoStarch TCP/IP Guide and then move onto TCP/IP Illustrated.
If you get through both of those and understand it you’lol have a far better grasp of networking than nearly everyone else in the business.
undefined
from a programming perspective or a configuration perspective or ?