AES |
Deflate |
GIF |
X-Face |
QR-Code |
Games |
IP & Friends in der Praxis
Vorbemerkungen
Einrichten der Netzwerkumgebung
IP: Grundlage jeder Kommunikation
ICMP und einfache Nutzdaten (UDP)
Einstieg in TCP
TCP-Verbindung als Beispiel
Vorbemerkungen
Einleitung
Dieses Tutorial richtet sich an Programmierer, die einen praxisnahen und leicht verständlichen Einstieg in die technischen Grundlagen des Internets suchen – konkret: IP, ICMP, UDP und TCP. Anstatt nur theoretisch über Protokollstandards zu sprechen oder Paketmitschnitte in Tools wie Wireshark zu analysieren, zeige ich, wie man diese Protokolle aktiv nachvollziehen und begreifen kann – indem man sie selbst (wenn auch vereinfacht) implementiert.
>> Download netstack.tar.gz <<
Dieser Netzwerkstack implementiert IPv4, ICMP, UDP und TCP.
Er stellt über UDP die Dienste Echo und Daytime zur Verfügung und über TCP die Dienste Echo, discard und Quote of the Day.
Dazu habe ich einen minimalen Netzwerkstack in C geschrieben, der mit dem '/dev/net/tun'-Device arbeitet und in einem isolierten Network Namespace ausgeführt wird. Dieser Stack bildet zentrale Funktionen der genannten Protokolle ab – stark vereinfacht, aber funktionsfähig. Man kann mit ihm Pakete empfangen und senden, ICMP-Antworten generieren, UDP-Daten austauschen und sogar den Aufbau, Datenaustausch und Abbau einer TCP-Verbindung nachvollziehen.
Alle Protokolle werden durch konkrete, nachvollziehbare Beispiele begleitet. Diese Beispiele sind reproduzierbar und darauf ausgelegt, dass der Leser selbst mit dem Code experimentiert.
Zwar erhebt mein Stack keinen Anspruch darauf, mit den komplexen, produktiv eingesetzten Netzwerk-Implementierungen (wie etwa im Linux-Kernel) mitzuhalten – aber er funktioniert. Und er lässt sich erweitern. Ich möchte ausdrücklich dazu ermutigen, selbst Hand anzulegen, mit dem Code zu experimentieren und Fragen zu stellen wie: Was passiert, wenn...?
Denn eines ist klar: Das bloße Beobachten von Paketen in Wireshark oder 'tcpdump' kann zwar interessante Einblicke geben – aber viele wichtige Details bleiben verborgen, wenn man nur zuschaut. Wenn man durch Zusehen alles lernen könnte, wäre jeder Hund Metzger.
Impressum