/tit

🤦 Thom's Implementation of TCP

Primary LanguageRust

Thom's Implementation of TCP

Inspired by Jon Gjengset's excellent YouTube stream. Original code here.

Also inspired by wanting to print out TCP packets, to get a better feel for the protocol.

Progress

  • Basic printing of packets
  • Passive open
  • Basic state handling for arriving segments
  • User APIs: TcpListener, TcpStream
  • Closing connections
  • Receive data
  • Send data
  • Active open
  • Initial Sequence Number selection
  • Window management
  • Consolidate packets (e.g. single ACK for multiple incoming packets)
  • CLI options (listen, connect, printing options etc.)
  • Retransmission
  • Improved packet printing
  • TCP Options
  • Remote address validation
  • Reordering packets (handling out of order segments)
  • Proper IPv6 handling
  • Check requirements

Resources