Build a complete TCP/IP implementation in userspace using raw sockets (AF_PACKET on Linux). Implement Ethernet frame handling, ARP for address resolution, IPv4 with fragmentation, ICMP echo, and TCP with the full state machine including slow start, congestion avoidance, and retransmission. Top it off with a simple HTTP/1.1 server.
Parse Ethernet frames from a raw socket. Implement ARP request/reply to resolve IP addresses to MAC addresses. Maintain an ARP cache with timeouts.
Implement IPv4 header parsing and generation. Handle IP fragmentation and reassembly. Add ICMP echo reply (ping) support.
Implement the full TCP state machine (LISTEN, SYN-SENT, ESTABLISHED, FIN-WAIT, etc.). Add sequence number tracking, retransmission timers, and the Nagle algorithm.
Build an HTTP/1.1 server using your TCP stack. Handle GET/POST requests, parse headers, and serve static files. Add connection keep-alive.
Profile packet throughput. Implement TCP fast retransmit, selective ACKs, and window scaling. Compare performance against the Linux kernel TCP stack.
Complete all prerequisite tracks to unlock this capstone. Once submitted, your project will be peer-reviewed by 3 fellow completers.
Start Prerequisites