bk99.de entertain the web since 1997

Was ein eigener TCP-Stack in Python lehrt

Zusammenfassung

Julia Evans implementiert Teile von TCP in Python und macht Sequenznummern, Bestätigungen, Retransmits sowie Zustände experimentell sichtbar.

Ideen

  • Rohe Pakete erlauben eigene Transportlogik im Userspace.
  • Sequenznummern ordnen Bytes statt einzelner Pakete.
  • Bestätigungen melden den nächsten erwarteten Bytebereich.
  • Paketverlust erfordert Timer und erneute Übertragung.

Einsichten

  • Protokolle werden durch eigene minimale Implementierungen verständlich.
  • Zuverlässigkeit entsteht über einem unzuverlässigen Netzwerk durch Zustand.
  • Kernelabstraktionen verbergen Komplexität, die Diagnose manchmal benötigt.

Fakten

  • Das Experiment verwendet Python und Linux.
  • Scapy unterstützt das Erzeugen und Lesen von Paketen.
  • Der Kernel-TCP-Stack muss für Testverbindungen umgangen werden.

Empfehlungen

  • Experimentiere nur in isolierten Netzen.
  • Analysiere Pakete parallel mit tcpdump oder Wireshark.

Referenzen

Originalartikel lesen →