A plain-English walkthrough of how Linux moves a TCP packet from a user-space write() call all the way to the wire and back. Covers routing decisions, ARP/NDP neighbor resolution, queueing disciplines (qdisc), NIC driver interaction, DMA, NAPI receive processing, TCP reassembly, and firewall hook points (nftables/iptables). Includes practical commands (ip route, ip neigh, tc qdisc, ss, tcpdump, ethtool) to observe each stage, kernel call-path traces for both transmit and receive, and a troubleshooting section covering common issues like bufferbloat, PMTU black holes, reverse-path filter drops, and NAT surprises.
Table of contents
What we’ll coverPart 1 - Transmit: from write() to the wirePart 2 - Receive: from the wire back to your appShort practical notes3 Impressions