Most generally, I'm a developer of distributed systems. Usually these take the form of TCP/IP (and other non-IP) network overlays, and from a programming point-of-view using basic user-space level TCP or UDP sockets is sufficient for my goals.<p>At recent jobs, however, these have been taking place at a much lower level and requiring a deep knowledge of networking in the Linux kernel. I've found the transition difficult and also have found it difficult to find a unified reference for all things Linux networking. The ones I find are either too basic or targeted for SysAdmins.<p>What I would love to find is something in the style of a Beej's Guide to socket programming (https://beej.us/guide/bgnet/) but covering the following:<p>1. Overview of Linux networking, including firewalls and routing tables.<p>2. The lifecycle of a packet through the kernel from coming in "over the wire" through delivery to an application socket (and vice versa).<p>3. An overview of network interfaces, virtual network interfaces, and the utilities to set them up, tear them down, and configure them. Also covering things like TUN/TAP devices, VLANs, PVLANs, network namespaces, etc (targeted for developers).<p>4. An overview of all the linux tools to shape traffic (queuing disciplines, etc) and measure network performance.<p>I have cursory understandings of each of these, and have had such a hard time finding a universal reference (again, the same way Beej's Guide is the de-facto reference for socket programming). Many books that seem to cover the topic are decade(s) old. Thanks for any help.