namespace cpp

C++ lernen, kennen, anwenden

Benutzer-Werkzeuge

Webseiten-Werkzeuge


netzwerk:pakete

Post päckchenweise

Denn was man schwarz auf weiß besitzt,
Kann man getrost nach Hause tragen.
— Johann Wolfgang Goethe : Schüler in Faust I

Der TCP/IP-Bastelbogen soll anschaulich das Verpacken und Verschicken kleiner Nachrichtenbrocken im Schichtenmodell nachvollziehbar machen: TCP-Fragment → IP-Paket → Ethernet-Frame. Beachte die absichtlich unterschiedliche Benennung der einzelnen "Formulare"! Nur die wichtigsten Einträge in den Vorspann-Abschnitten (Headern) wurden hervorgehoben.

Anfang Ende

Anleitung

  • Den ausgedruckten Bastelbogen zerschneiden und falten.
  • Beginne mit dem kleinsten, dem TCP-Fragment.
    • Als Verwalter (Schicht 4) schreibe die diktierten Daten, eine minimale HTTP-GET-Anfrage, in den Nutzdatenbereich des TCP-Fragments.
    • Ziel ist ein Webserver, der üblicherweise auf Port 80 lauscht. Diesen als Zielport eintragen.
    • Als Quellport sucht dein Rechner automatisch einen freien Port mit hoher Nummer (> 49000) aus. Über diesen läuft später die Antwort an uns ein. Sequenz- und Bestätigungsnummer lasse vorerst frei (siehe Drei-Wege-Handshake).
  • Das fertige TCP-Fragment kommt (auf Schicht 3, im Postamt) in den nächstgrößeren Umschlag, das IP-Paket.
    • Auf dem IP-Paket ist der Absender zu vermerken. Ermittle die eigene IP-Adresse deines Rechners mit ipconfig (ifconfig unter Linux).
    • Die IP-Adresse des Empfängers ist aus einer DNS-Abfrage zu ermitteln. An der Konsole kannst du den ping-Befehl dazu einsetzen.
    • Aus Faulheit verzichten wir jetzt auf die Angabe der Anzahl von Bytes (Länge des Paketes) und auf die Prüfsummenberechnung (jetzt nicht Thema, man könnte wie beim Telegramm Wörter zählen).
  • Das fertige IP-Paket wird im lokalen Kabelnetz (LAN) mittels Ethernet transportiert und dazu auf Schicht 2 (Umschlag) in den Ethernet-Frame verpackt. Im Ethernet erfolgt der Transport zum nächsten Gerät (zur nächsten Poststation, wo die Pferde ausgewechselt werden) mittels MAC-Adresse.
    • Die eigene MAC-Adresse wird von ipconfig angezeigt (zwölf Hexadezimalziffern) und auf den Frame übertragen.
    • Die MAC-Adresse des Rechners, der die Nachricht aus dem lokalen Netz ins Internet bringt (Gateway), kann zumeist nicht am Arbeitsplatz ermittelt werden. Dazu bräuchte man die Rechte und das Wissen des Netzwerkadministrators.

Dieser fertige Ethernet-Frame verlässt nun den eigenen Rechner. Die abwechselnden Nullen und Einsen am Beginn des Ethernet-Frames können als kurze Morse-Pieptöne (Schicht 1) verdeutlicht werden. Damit macht die Netzwerkkarte darauf aufmerksam, dass demnächst eine Sendung (ein "Telegramm" oder besser "Datagramm") kommt. Die Takte dienen dazu, dass die Gegenstelle sich synchronisiert. Der letzte Piepton ist lang: zwei Einsen. Dann beginnt die Datenübertragung. Am Ende des Frames wird noch eine Prüfsumme zur Kontrolle übertragen. 12 Byte, also 96 Takte Funkstille beenden die Übertragung.

Ist die nächste Poststelle noch nicht der Empfänger, wird das IP-Paket in einen neuen Ethernet-Frame umgepackt und weitergeleitet. Siehe Kleine Netze, große Netze.

Beim Empfänger wird das IP-Paket aus dem Ethernet-Frame entnommen und höher gereicht zu Schicht 3, die wiederum den Inhalt, das TCP-Fragment, an Schicht 4 weitergibt. Spielt man das Ganze mit verteilten Rollen, so sollte derjenige, der Schicht 4 verkörpert, den Nutzdaten-Text aus dem TCP-Fragment vorlesen. Mit entsprechenden Regiegeschick können alle einbezogen werden — oder es endet im Chaos … Viel Spaß beim Probieren!

Drei-Wege-Handshake

Ethernet-Frames und IP-Pakete sind Einzelobjekte im paketorientierten Datenverkehr. Dennoch muss in höheren Ebenen ein unterbrechungsfreier Datenstrom gewährleistet werden. Das TCP-Protokoll (Schicht 4, die Verwalter) stellt das durch Nummerierung sicher.

Vor der eigentlichen Datenübertragung erfolgt ein Austausch von TCP-Fragmenten zum Verbindungsaufbau, 3-Wege-Handshake genannt. Die übrigen TCP-Pakete können dazu genutzt werden.

  • Verwalter A sendet eine Synchronisierungsanfrage an Verwalter B: SYN ankreuzen! Als erste Sequenznummer wird z.B. seq# = 1000 gewählt (können bis 4 Milliarden groß werden, da 32 Bit).
  • Verwalter B erhält die Synchronisieranfrage von Verwalter A. Er schickt eine Synchronisierungsanfrage zurück. Er beginnt seine Datenübertragung z.B. mit Sequenznummer seq# = 5000. Da auch der Empfang der Anfrage von A bestätigt werden soll, wird durch ack# = 1001 mitgeteilt, dass als nächstes das Paket mit der Sequenznummer 1001 erwartet wird. Verwalter B kreuzt sowohl ACK als auch SYN an.
  • Verwalter A erhält die Antwort und schickt nun noch ein drittes Paket als Quittung zur Antwort: ack# = 5001, seq# = 1001 und kreuzt ACK an.
  • Mit dem Erhalt der Quittung bei Verwalter B ist die Verbindung hergestellt.
  • Verwalter A kann mit Paket 1001 auch schon die ersten Nutzdaten mitschicken.

Die weitergehende Unterhaltung besteht jeweils aus fortlaufend nummerierten Fragmenten. Der Empfänger quittiert eingehende Pakete (nicht immer jedes einzelne).

Der Verbindungsabbau erfolgt sinngemäß, wenn einer der beiden Kommunikationsteilnehmer (egal welcher) im TCP-Fragment FIN ankreuzt. Auch dies wird von der Gegenseite mit FIN ACK beantwortet. Auch diese Antwort wird nochmal vom ersten quittiert.

netzwerk/pakete.txt · Zuletzt geändert: 2012-07-17 19:46 (Externe Bearbeitung)