Build a TCP/IP Stack from Scratch · Module 00

What You Won't Build (Non-Goals)

What You Won't Build

To stay focused and keep the project manageable, there are a few things this course won't cover.

We're recreating the logic of the Internet stack — not reinventing all of hardware or the full Linux networking subsystem.

Out of Scope

No Physical Layer

You won't deal with electrical signals, Wi-Fi radios, or Ethernet preambles. Our entry point is a TAP device, which already gives us complete Ethernet frames in memory.

No Kernel Drivers or Privileged Code

Everything runs in user space inside Docker. We'll open /dev/net/tun, read and write bytes, and let the host kernel handle the actual NIC.

No Advanced TCP Features (Yet)

We'll build a minimal, correct TCP implementation:

  • Three-way handshake
  • Sequence/ACK handling
  • Retransmission
  • Connection close

We won't add congestion control, window scaling, or selective ACKs — those can come later as optional experiments.

No IPv6 (For Now)

To keep examples simple, we'll use IPv4 only. Once you understand the flow, adding IPv6 and NDP will feel natural.

No TLS/HTTPS or Modern Protocol Extras

Our HTTP server will speak plain HTTP over TCP. Encryption and QUIC are entire worlds of their own — outside this course's scope.

No Performance Tuning

We'll favor clarity and visibility over speed. Real stacks use zero-copy buffers, interrupts, and kernel bypass APIs; we'll just use blocking I/O so you can see what's happening.

Warning: By drawing this boundary early, you can focus on what matters most: understanding how packets move from one layer to the next and seeing the Internet's machinery operate under your own control.