How amazy2596/cs144 works
NetworkDIY is a CS144 Minnow networking-stack starter project, rather than a network service. Its principal runtime workflow lets an application exchange a byte stream over TCP/IP, with a TUN device connecting packets to the host network; the stack also includes Ethernet/ARP interface handling and IPv4 routing. The graph follows the documented send/receive flow and sampled implementations. Some integration links rely on repository architecture notes because the corresponding source excerpts are incomplete.
Main entry points: tcp_peer.hh TCP peer · tcp_ipv4.cc TCP IPv4 app · tcp_sender.cc TCP sender · tcp_receiver.cc TCP receiver
Components 18
Applications
- TCP IPv4 app
apps/tcp_ipv4.cc - Stream copier
apps/bidirectional_stream_copy.cc
TCP transport
- Minnow socket
src/tcp_minnow_socket.cc - TCP peer
util/tcp_peer.hh - TCP sender
src/tcp_sender.cc - TCP receiver
src/tcp_receiver.cc - Stream reassembler
src/reassembler.cc - Byte stream
src/byte_stream.cc - Sequence numbers
src/wrapping_integers.cc
IP and routing
- TCP over IP
util/tcp_over_ip.cc - TUN adapter
util/tuntap_adapter.cc - TUN device
util/tun.cc - IPv4 router
src/router.cc
Link and runtime
- Network interface
src/network_interface.cc - ARP messages
util/arp_message.cc - Event loop
util/eventloop.cc
Other components
- Application user
- Host network
Connections 20
- Application user → TCP IPv4 app: starts
- TCP IPv4 app → Minnow socket: connects or listens
- TCP IPv4 app → Stream copier: copies bytes
- Stream copier → Minnow socket: reads and writes
- Minnow socket → TCP peer: drives TCP
- TCP peer → TCP sender: sends segments
- TCP peer → TCP receiver: processes segments
- TCP receiver → Stream reassembler: inserts payload
- Stream reassembler → Byte stream: reassembles into
- TCP sender → Byte stream: reads outbound
- TCP sender → Sequence numbers: wraps sequence numbers
- TCP receiver → Sequence numbers: unwraps sequence numbers
- TCP peer → TCP over IP: exchanges TCP messages
- TCP over IP → TUN adapter: encapsulates in IPv4
- TUN adapter → TUN device: reads and writes packets
- TUN device → Host network: exchanges packets
- Event loop → TUN adapter: dispatches I/O
- IPv4 router → Network interface: forwards datagrams
- Network interface → ARP messages: resolves next hop
- Network interface → IPv4 router: receives datagrams