1 Punkte von GN⁺ 2025-03-05 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Implementierung eines TCP/IP-Stacks

    • Die direkte Implementierung eines TCP/IP-Stacks kann wie eine komplexe Aufgabe wirken.
    • Die Kernspezifikation von TCP besteht aus dem Parsen des TCP-Headers, der Zustandsmaschine, Staukontrolle und der Berechnung von Wiederübertragungs-Timeouts.
    • In dieser Blogserie wird ein minimaler TCP/IP-Stack im User Space unter Linux implementiert.
    • Der Zweck dieses Beitrags und der Software ist rein lehrreich, um Netzwerk- und Systemprogrammierung tiefer zu verstehen.
  • TUN/TAP-Geräte

    • Um Low-Level-Netzwerkverkehr im Linux-Kernel abzufangen, wird ein TAP-Gerät verwendet.
    • TUN/TAP-Geräte lassen sich in User-Space-Programmen leicht einrichten und werden in verschiedenen Programmen wie OpenVPN verwendet.
    • Mit einem TAP-Gerät lassen sich Daten in Ethernet-Puffern lesen und schreiben.
  • Format von Ethernet-Frames

    • Ethernet bildet die Grundlage verschiedener Netzwerktechnologien, die Computer in einem LAN verbinden.
    • Der Ethernet-Standard hat sich seit seiner ersten Veröffentlichung im Jahr 1980 stark weiterentwickelt.
    • Der Header eines Ethernet-Frames kann als C-Struktur deklariert werden und enthält die Felder DMAC, SMAC, Ethertype und Payload.
  • Parsen von Ethernet-Frames

    • Damit der GNU-C-Compiler das Speicherlayout von Strukturen nicht optimiert, wird das Attribut packed verwendet.
    • Das gesamte Szenario zum Parsen und Verarbeiten von Ethernet-Frames ist einfach.
  • Address Resolution Protocol (ARP)

    • ARP wird verwendet, um 48-Bit-Ethernet-Adressen dynamisch auf Protokolladressen abzubilden.
    • Das Format von ARP-Paketen ist relativ einfach und enthält Hardware-Typ, Protokoll-Typ, Hardware-Größe, Protokoll-Größe, Opcode und Datenfelder.
  • Algorithmus zur Adressauflösung

    • Um die Ergebnisse von ARP zu speichern, wird eine translation table verwendet, damit doppelte ARP-Anfragen vermieden werden.
    • Der ultimative Test der ARP-Implementierung besteht darin zu prüfen, ob korrekt auf ARP-Anfragen geantwortet wird.
  • Fazit

    • Eine minimale Implementierung der Verarbeitung von Ethernet-Frames und ARP ist relativ einfach und mit wenigen Zeilen Code möglich.
    • Der Quellcode des Projekts ist auf GitHub verfügbar.
    • Im nächsten Beitrag wird die Implementierung von ICMP-Echo und -Antwort (Ping) sowie das Parsen von IPv4-Paketen fortgesetzt.

Noch keine Kommentare.

Noch keine Kommentare.