Learning how the Network of Tubes works
This project is not intended to implement any "real-world" functionality. Instead, it's my personal learning about the network stack.
- Encoding / decoding TCP header
- Encoding / decoding IP segments
- TCP state machine
- RFC 793: The main TCP RFC.
- TCP at Wikipedia: Extra summary of background information.
tcpdump
Cheatsheet: Useful summary oftcpdump
options.rust_tun
: A Rust binding for TUN which works on MacOS.mac-utun
: Another Rust TUN binding for MacOS.- WWDC Presentation on DriverKit: DriverKit allows user-space macOS drivers. Maybe even a TAP (layer 2 virtualisation) implementation.
- WWDC Presentation on Network Extensions: I think this is more background on DriverKit, etc.
- NetworkingDriverKit: A sub-component of DriverKit, for Ethernet drivers.