Olivia's Blog

All on Big Data and Windows Azure

Netzwerke für Dummies – Teil 5 (Transport und TCP)

Netzwerke für Dummies – Teil 5 (Transport und TCP)

  • Comments 1
  • Likes

Die bisherigen Beiträgen der Blogserie Netzwerke für Dummies haben sich allgemein dem OSI-Modell, der ersten Schicht des Modells (der Anwendungsschicht) und dessen häufig gebrauchten Protokollen DNS, DHCP und SMB gewidmet. Nun knöpfen wir uns eine weitere Schicht vor, der Transportschicht:

OSI Focus Transport

      

Transport (Transportschicht)

Analog zu unserer Paketgeschichte im ersten Beitrag befasst sich die Transportschicht mit – ja, wer hätte das gedacht! – dem Transport unseres Paketes: Welche Transportmittel werden zum Versand unseres Paketes hergenommen? Ein Flieger, LKW, Schiff, Bahn oder weiteren Transportmittel? Die Wahl des Transportmittels wird von einer Reihe an Faktoren beeinflusst, sei es

  • wie schnell es ankommen soll,
  • Gewicht des Paketes,
  • ob das Paket als Ganzes heil ankommen soll, egal wie lange es dauert,
  • oder dass es so dringend ist, dass es nichts ausmacht, dass das Paket nicht vollständig ankommt etc.

Dass das letzte Kriterium beim Paketversand kaum auf Zustimmung stoßen wird, weist auf den Wunsch eines zuverlässigen Transportes – und ergibt auch Sinn; ein an mich geschicktes Paket möchte ich schon lieber vollständig als in Einzelteilen erhalten.

Im Kontext der Rechnernetze ist die Transportschicht bietet anhand einer Ende-zu-Ende Verbindung einen Service an, der unabhängig von der Netzwerkschicht Daten austauscht. Diese Verantwortung beinhaltet weitere Aufgaben, wie die Teilnehmeradressierung, eine transparente Übertragung der Daten oder die Wahl der Servicequalität – also, nach welchen Kriterien ein guter Versand gemessen wird.

Im Internetzeitalter kann man durchaus auch das Beispiel einer E-Mail verwenden, die Adam der Eva zuschickt. Was passiert hinter den Kulissen? Die Transportschicht stellt sicher, dass die Email von Adams E-Mail-Server bei Evas E-Mail-Server ankommt. Wie der E-Mail-Versand im Big Picture aussieht, gehe ich später drauf ein.

4 Transport

In der großen weiten Internetwelt gibt es zwei Transportprotokolle, die sehr verbreitet sind: TCP (Transmission Control Protocol) und UDP (User Datagram Protocol). Die beiden unterscheiden sich hauptsächlich in zwei Aspekten, (i) der Zuverlässigkeit der Datenübertragung und (ii) dem Datenstrom (verbindungsorientiert oder verbindungslos). Bei TCP handelt es sich von einem zuverlässigen und verbindungsorientiertem Service, während UDP ein unzuverlässiger und verbindungsloser Service ist, auch Best-Effort Service genannt. Warum Best-Effort? Weil es stets bemüht ist, die gegebenen Datenpakete zu übertragen, aber Unzuverlässigkeit in dem Transport nur durch Hardware-Fehler oder ausgeschöpften Ressourcen zu verschulden ist.

In diesem Blogeintrag fangen wir uns zunächst mit dem TCP Protokoll an.

TCP

Das Transmission Control Protocol (TCP) bietet einen verbindungsorientierten und zuverlässigen Transportdienst zur Ende-zu-Ende-Kommunikation an.

Verbindungsorientiert

Ein Transportdienst ist verbindungsorientiert, wenn bereits vor der Datenübertragung eine Verbindung zwischen dem Sender und Empfänger-in-spe hergestellt wird, um sicherzugehen, dass der Empfänger-in-spe bereit ist, Daten zu empfangen. Wenn Adam ein Paket an Eva schickt, signalisiert Eva an Adam, dass sie nicht außer Lande ist, dass sie zu Hause sein wird, wenn das Paket ankommen soll, dass sie Platz bei sich hat, um das Paket beherbergen zu können (man weiß ja nie, wie groß das Paket sein soll!),… kurz, dass sie bereit ist. Bei Whatsapp wissen wir zum Beispiel nicht, ob der Empfänger empfangsbereit ist – wir können keine Aussage darüber treffen, ob der voraussichtliche Empfänger in gerade diesem Augenblick über eine Internetverbindung verfügt oder nicht.

Darüber hinaus setzt eine verbindungsorientierte Verbindung voraus, dass die Datenpakete in genau der gleichen Reihenfolge beim Empfänger ankommen wie gesendet. Wie dies bereitgestellt wird, wird später noch in diesem Artikel aufgegriffen.

Zuverlässig

Eine Übertragung gilt als zuverlässig, wenn der Sender Bescheid bekommt, dass alle Daten beim Empfänger angekommen sind. Bei einem Brief, den Adam der Eva schickt, heißt das, dass Adam eine Empfangsbestätigung von Eva erhält, sei es per “Hey, ich habe Deinen Brief bekommen!”-Anruf oder durch einen Service des Versanddienstes. Mit dem Einschreiben kann dies aber nicht verglichen werden, weil dies die Authentifizierung des Empfängers garantiert, d.h. dass der Brief bei der richtigen Eva ankommt. Die Empfangsbestätigung, die man beim Versand einer E-Mail einstellen kann, ist mehr als eine Bestätigung für den Empfang; diese benachrichtigt nämlich den Sender darüber, dass der Empfänger die E-Mail gelesen hat. Wenn Adam ganz dem heutigen Zeitalter getreu Eva eine Whatsapp-Nachricht verschickt, erhält Adam quasi auch eine Empfangsbestätigung, wie es sich versteht. Wenn neben seiner verschickten Nachricht 2 Haken erscheinen, ist die Nachricht bei Eva angekommen, aber im Gegensatz zum E-Mail-Versand noch nicht unbedingt gelesen.

Darüber hinaus kann man davon ausgehen, dass wir einen Transportdienst als zuverlässig sehen, wenn alle Daten korrekt, in der richtigen Reihenfolge und nicht doppelt ankommen ohne weitere Phantom-Pakete.

Bevor wir einige Mechanismen durchgehen, die zur Gewährleistung eines zuverlässigen Transportdienstes dienen, machen wir einen kurzen Exkurs in Netzwerkfunktionen.

TCP Segment

Die Datenübertragung über den Internet Protocol Suite erfolgt über den Austausch von Informationsschnipsel, sogenannten Paketen. Ein Paket besteht aus drei Teilen:

  1. einer Sequenz von Oktetten,
  2. einem Header (oder einer Kopfzeile), die Metadaten enthält, z.B. die Quelle des Paketes, das Ziel und weitere relevante Informationen, und
  3. und dem Body (oder Hauptteil) mit den Daten, die gesendet werden sollen.

Wenn Adam nun ein Riesen-Datenpaket an Eva schicken möchte, wird dies nun in mehrere kleine IP-Datenpakete aufgeteilt und vereinzelt mit eigenem IP Request versehen und verschickt. Klingt alles nach unnötigem und lästigem Mehraufwand. Stattdessen wird ein einziger Request über TCP geschickt, und TCP kümmert sich um die IP Details. Hierbei wird das Riesenpaket wird in verschiedene TCP-Segmente aufgeteilt, die so ausgerichtet sind, um eine effiziente Routenplanung durch das Netzwerk zu gewährleisten. Denn TCP wurde so entworfen, um sich dynamisch an die Eigenschaften des Internets anzupassen, wie zum Beispiel die variierenden Bandbreiten, heterogene Topologien, etc.

Ein TCP Segment besteht (ähnlich wie einem IP Paket) aus einem TCP Header und den Daten. Der TCP Header enthält zehn Pflichtfelder, u.a. die Portnummern der Quelle und des Ziels.

4 TCP header 3

Hierbei sind die lila-untergemalten Felder dem TCP Header zugehörig. Die Größe der Felder Options und Data nicht fixiert, sodass die Länge des TCP Headers ebenfalls nicht gesetzt ist. Tatsächlich ist die Größe des angehängten Datenpakets im TCP Segment auch nicht festgelegt oder in einem Feld festgehalten, sondern lässt sich errechnen, dadurch dass jedes TCP Segment in einem IP Datenpaket eingekapselt ist und die erforderlichen Angaben im IP Header zu finden sind.

Im nächsten Beitrag werden wir auf einzelne Felder des TCP Headers, z.B. Ports und der Sequenznummer, und einige Mechanismen für einen zuverlässigen Transport eingehen. So long, farewell!

Comments
  • Ich fand 1-5 echt hilfsreich.
    Was ist denn mit dem Rest.
    Bitte um weitermachen.
    Grüss aus Köln

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment