Verbindungsorientierte Kommunikation (TCP/IP)/Connection oriented communciation

Manual: Verbindungsorientierte Kommunikation (TCP/IP)

Inhalt

  • 1 Verbindungsorientierte Kommunikation (TCP/IP)
    • 1.1 TCP Verbindungsaufbau und -beendigung
      • 1.1.1 Verbindungsaufbau-Prozess
      • 1.1.2 Verbindungsbeendigung
    • 1.2 Segment-Übertragung (windowing)
    • 1.3 Ethernet-Vernetzung

      • 1.3.1 CSMA/CD
      • 1.3.2 Half und Full Duplex Ethernet
    • 1.4 Einfache Verbindungsbeispiele im Netzwerk
      • 1.4.1 ARP Protokoll-Betrieb

1 Verbindungsorientierte Kommunikation (TCP/IP)

Die verbindungsorientierte Kommunikation ist ein Datenkommunikations-Modus bei dem zuerst eine Verbindung mit einem Remote Host oder Server hergestellt werden muss, bevor der Versand von Daten möglich ist. Ähnlich einem analogen Telefon-Netzwerk in dem erst die Verbindung hergestellt werden muss, bevor man mit der Gegenstelle kommunizieren kann. Die Verbindungsherstellung beinhaltet Handlungen wie z.B. Nummer wählen, Verbindungston erhalten, auf das Ruf-Signal warten usw.

1.1 TCP Verbindungsaufbau und -beendigung

Der Prozess, den das übertragende Gerät nutzt, um eine verbindungsorientierte Sitzung mit einem Remote Peer aufzubauen, nennt sich three-way handshake. Als Ergebnis wird eine (logische) virtuelle Ende-zu-Ende Schaltung erzeugt, bei der eine Flusssteuerung und eine Bestätigung für eine zuverlässige Lieferung verwendet werden. TCP hat mehrere Nachrichtentypen, die beim Verbindungsaufbau und Terminierungsprozess verwendet werden (siehe Abbildung 2.1).Host

image2001

1.1.1 Verbindungsaufbau

  1. Host A, welcher eine Verbindung initialisieren will, sendet ein SYN (synchronisieren)- Paket an Host B, welches eine vorgeschlagene Anfangs-Sequenznummer beinhaltet.
  2. Wenn Host B eine SYN-Nachricht empfängt, gibt er ein Paket zurück, wobei sowohl SYN- als auch ACK-Variablen im TCP-Header (SYN-ACK) gesetzt sind.
  3. Wenn der Host A SYN-ACK empfängt, sendet er ein ACK (Bestätigungs)-Paket zurück.
  4. Host B erhält abschließend ein ACK-Paket und an diesem Punkt ist die Verbindung hergestellt.

Verbindungsorientierte Protokoll-Dienste erwiedern oftmals auf erfolgreiche Sendungs-Zustellungen mit Bestätigungs-Paketen (ACKs). Wenn das Paket gesendet wurde, wartet der Sender auf die Bestätigung vom Empfänger. Wenn hierbei eine Zeitüberschreitung stattfindet und der Sender kein ACK-Paket erhält, wird das Paket erneut übertragen.

1.1.2 Verbindungsbeendigung

Wenn die Datenübertragung komplett ist und der Host die Verbindung beenden will, wird der Terminierungsprozess eingeleitet. . Entgegen dem TCP Verbindungsaufbau, welcher einen three-way handshake nutzt, wird bei der Verbindungs-Terminierung eine  four-way-Nachricht genutzt. Die Verbindung wird terminiert, wenn beide Seiten die Beendigungs-Prozedur durch das senden eines FIN- und erhalten eines ACK-Pakets durchgeführt haben.

  1. Host a, welcher die Verbindung terminieren will, sendet eine spezielle Message mit FIN (Ende) Flagge, welche anzeigt, dass er aufgehört hat, Daten zu senden.
  2. Host B erhält das FIN Segment terminiert aber nicht die Verbindung, sondern wechselt in ein “passive close” (CLOSE_WAIT) Status und sendet ACK für FIN zurück zu Host A. Jetzt wechselt Host B in den letzten, LAST_ACK Status. Ab diesem Zeitpunkt wird Host B keine weiteren Daten von Host A akzeptieren aber kann weiterhin Daten an Host A übertragen. Wenn Host B über keine weiteren Daten zum senden an Host A verfügt, wird er die Verbindung mit dem senden des FIN Segments terminieren.
  3. Wenn Host A das letzte ACK von Host B erhält, wechselt er in den TIME_WAIT Status und sendet an Host B ein ACK zurück.
  4. Host B erhält das ACK von Host A und schließt die Verbindung.

1.2 Segment-Übertragung (windowing)

Da man nun weiß, wie man eine TCP Verbindung herstellt, benötigt man ein weitergehendes Verständnis davon, wie man einen Datenübertragen managt und wartet.  TCP/IP Netzwerk-Übertragungen zwischen Hosts werden vom TCP-Protokoll verarbeitet.

Vorab sollte man darüber nachdenken, was passiert, wenn wenn Datagramme schneller gesendet werden, als es das empfangende Gerät verarbeiten kann. Der Empfänger speichert diese im Speicher, auch Puffer genannt. Da der Pufferraum jedoch nicht unbegrenzt ist, beginnt der Empfänger, wenn die Kapazität überschritten wird, die Daten-Frames zu verwerfen. Alle verworfenen Frames müssen dann erneut übertragen werden, was der Grund für eine niedrige Übertragungsleistung ist.

Um diesem Problem beizukommen nutzt TCP die Flusskontrolle. Der window Mechanismus wird genutzt, um den Datenfluss zu kontrollieren. Wenn die Verbindung hergestellt ist, benennt der Empfänger das window Feld (siehe auch TCP Header Format, Figur 1.6.) in jedem TCP Frame. Die Window Größe steht für den Größe der erhaltenen Daten, die der Empfänger im Puffer speichern kann. Die window size (in Bytes) wird dem Sender zusammen mit den ACKs gesendet. Mit Hilfe der window Größe lässt sich also kontrollieren, wieviele Informationen von einenm Host zum anderen übertragen werden können, ohne das eine Bestätigung erhalten wird. Der Sender wird also nur die Menge an Bites übertragen, die in der window Größe festgelegt sind und wird dann auf eine Bestätigung eines Updates der window Größe warten.

Wenn die empfangende Anwendung die Daten so schnell verarbeiten kann, wie Sie vom Sender übertragen werden, wird der Empfänger ein ‘positive window advertisement’ ( ansteigen der windows Größe) mit jeder Bestätigung mit übertragen. Das funktioniert solange, bis der der Sender wieder schneller Daten überträgt, als der Empfänger diese verarbeiten kann und der Buffer des Empfängers wieder überfüllt ist. Dieser Vorgang mündet in einer window advertise Bestätigung mit einer zero window. Ein Sender, der dieses zero window advertisement erhält, muss dann die Übertragung solange unterbrechen, bis wieder ein positive window eintrifft. Die Illustrierung dieses Prozesses ist in Figur 2.2. dargestellt.

image2002
Host A startet die Übertragung mit einer window Größe von 1000, weswegen ein 1000Byte Frame übertragen wird. Der Empfänger (Host B) erwiedert ein ACK mit einer auf 2000 ansteigenden window Größe. Host A erhält ACK und überträgt zwei Frame (jeweils 1000Bytes). Danach schickt der Empfänger ein advertise um die window Größe auf 2500 zu initiieren. Dann überträgt der Sender 3 Frames (zwei enthalten 1000Bytes und einer 500Bytes) und wartet auf ein Bestätigungs-Paket. Die ersten 3 Segmente füllen den Puffer des Empfängers schneller, als die erhaltende Anwendung die Daten verarbeiten kann, weswegen die advertised window Größe den Wert auf 0 setzt, um damit anzuzeigen, dass man erst warten muss, bis wieder eine weitere Datenübertragung möglich ist.

Die Größe von window und wie schnell man diese ansteigen oder verkleinern kann wird in verschiedenen TCP ‘Stauvermeidungs-‘Algorithmen beschrieben, wie z.B. Reno, Vegas, Tahoe etc.

1.3 Ethernet-Vernetzung

1.3.1 CSMA/CD

Das Ethernet System besteht aus 3 Basis-Elementen:

  • Das physikalische Medium, um Ethernet-Signale zwischen Netzwerkgeräten zu transportieren,
  • Medium Zugangskontroll-Systeme welche in jedem Ethernet Interface integriert sind und es mehreren Computern erlaubt eine die Kontrolle über eine faire Verteilung des geteilten Ethernet-Kanals zu erhalten,
  • Ethernet Frame, welcher ein standardisiertes Set von Bits um Daten über das System transportieren.

Ethernet Netzwerke nutzen Mehrfachzugriffe mit Trägerprüfung und Kollisionserkennung (CSMA/CD) Protokolle für die Datenübertragung. Das ist insofern hilfreich, um den Zugriff auf geteilte Datentransferraten, wenn zwei oder mehr Geräte Daten zur selben Zeit übertragen wollen, zu kontrollieren und zu managen. CSMA/CD ist eine Modifikation von CSMA. CSMA/CD wird genutzt, um die Performance von CSMA bei der Beendigung von Übertragungen zu steigern, sobald eine Kollision entdeckt wird, was die Möglichkeit einer zweiten Kollision, bei einem neuen Versuch, verringert.

Bevor man sich mehr über CSMA/CD unterhält, muss man verstehen, was eine Kollision, eine Kollisions-Domain und ein Netzwerksegment ist. Eine Kollision ist das Resultat aus Datenübertragungen, von zwei Geräte aus demselben Netzwerk, die zur selben Zeit stattfinden. Das Netzwerk stellt hier eine “Kollision” von zwei übertragenen Paketen fest und verwirft beide.

Wenn man eine große Netzwerklösung hat, ist es angebracht, dieses in kleinere Netzwerke aufzuteilen, was oftmals auch als Netzwerk-Segmentierung genannt wird. Durchgeführt wird dies, indem man Router und Switche nutzt – jeder der Switch-Ports legt separate Netzwerk-Segmente an, was in separaten Kollisions-Domains resultiert. Eine Kollisions-Domain ist ein physisches Netzwerk-Segment in einem geteilten Medium, in welchem Daten-Pakete, wenn sie versendet werden, miteinander “kollidieren” können. Daher kann auf einem Hub nur ein Computer Daten gleichzeitig empfangen, sonst kann es zu einer Kollision kommen und Daten gehen verloren.

image2003
Hubs (auch repeater genannt) werden im Physical Layer des OSI Models angesiedelt, da sie einzig elektrische Signale verarbeiten die eingegangenen Signale an jedem Ihrer Ports wieder ausgeben. Heutzutage sind diese in Netzwerken nichtmehr so häufig anzutreffen und wurden durch Switche ersetzt.

Carrier Sense – Das bedeutet, dass ein Überträger auf einen Carrier (kodierte Informationssignale) von einer anderen Station wartet, bevor er die Übertragung versucht.

Multiple Access – Das bedeutet, dass viele Stationen auf einem Medium senden und empfangen.

Collision Detection – integriert Algorithmen um Kollisionen festzustellen und um auf festgestellte Kollisionen mit dem sogenannten “Jam signal” zu antworten.

Wenn der Sender bereit ist Daten zu senden, wird permanent geprüft, ob das Medium beschäftigt ist. Wenn das Medium nicht mehr beschäftigt ist startet der Sender die Frame-Übertragung

In Figure 2.4 wird ein einfaches Beispiels dieses CSMA/CD Ablaufs dargestellt.

image2004

  1. Jeder Host im Segment, welcher Daten versenden will, “lauscht” was auf dem physikalischen Medium (Kabel) los ist und prüft, ob nicht schon ein anderer Daten versendet.
  2. Host A und Host C, auf dem geteilten Netzwerk-Segment, sehen, das kein anderer sendet und versuchen, Frames zu versenden.
  3. Host A und Host C lauschen zur gleichen Zeit weswegen beide zur selben Zeit übertragen werden und eine Kollision eintreten wird. Kollisionen erzeugen “noise”, also einen Wechsel der Voltanzahl der Signal im Kabel.
  4. Host A und Host B stellen diese Kollision fest und senden das “jam” Signal aus, um allen anderen Hosts mitzuteilen, nichtmehr zur selben Zeit Daten zu senden.Host A und Host C müssen nun erneut ihre Daten übertragen, wobei die erneute, gleichzeitige Übertragung nicht erwünscht ist. Um dem vorzubeugen starten Host A und Host B einen random timer (ms) bevor Sie den CSMA/CD Prozess erneut starten, während sie auf dem Kabel lauschen.

Jeder Computer im Ethernet-Netzwerk arbeitet unabhängig von allen anderen Stationen im Netzwerk.

1.3.2 Half und Full Duplex Ethernet

Ethernet Standards, wie z.B Ethernet II und Ethernet 802.3 passieren formal das IEEE (Institute of Electrical and Electronics Engineers) Standardisierungs-Verfahren. Der Unterschied ist, dass der Ethernet II Header ein Protokoll-Typ-Feld beinhaltet, wohingegen in Ethernet 802.3 dieses Feld auf die Länge gewechselt wurde. Ethernet ist die Standard CSMA/CD Zugangs-Methode. Ethernet unterstützt verschiedene Datentransferraten, wie z.B. Ethernet (10BaseT) – 10 Mbit/s, Fast Ethernet (100Base-TX) – 100 Mbit/s, Gigabit Ethernet (1000Base-T) – 1000 Mbit/s über verschiedene Typen von physischen Medien. Dies können z.B Twisted Pair (Kupfer), Koaxial-Kabel oder Glasfaser sein. Heutzutage bestehen Ethernet Kabel aus 4 Twisted Pairs (8 Kabel). Beispielsweise nutzt 10Base-T nur eines dieser Kabelpaare für die Verbindung in beide Richtung den Half-Duplex Modus nutzend.

Die Half-Duplex Datenübertragung bedeutet, dass zwischen zwei Knotenpunkten die Daten in beide Richtunge übertragen werden können, aber nur in eine Richtung, zur selben Zeit. Auch für Gigabit Ethernet gibt es diesen Half-Duplex Standard, dieser wird in der Praxis nicht genutzt.

Full-Duplex Datenübertragungen bedeuten, dass Daten in beide Richtungen, verschiedene twisted pairs nutzend, übertragen werden können und zwar zur selben Zeit. Bei Full Duplex Ethernet können keine Datenkollisionen vorkommen, da der Datenversand und -empfang über verscheiende Kabel laufen, dobei jedes Segment direkt mit einem Switch verbunden sind.  Full-duplex Ethernet bietet in beide Richtungen Performanc. Beispielsweise unterstützt der Computer Gigabit Ethernet (full duplex mode) und das Gateway (Router) unterstützt dies ebenso, dann steht zwischen Computer und Router eine Datentransferrate von zusammengenommen 2Gbit/s zur Verfügung.

1.4 Einfache Verbindungsbeispiele im Netzwerk

1.4.1 ARP Protokoll-Betrieb

Das Address Resolution Protokoll (ARP) ist ein Protokoll, um eine Internet Protocol (IP) Adresse eines Hosts, in einem lokalen Netzwerk, auf einer Hardware Adresse (MAC address) abzubilden. Die physikalische/hardware Adresse ist auch also Media Access Control oder MAC Adresse bekannt. Jedes Netzwerk verwaltet ARP Tabellen (cache) welche MAC Adressen und ihre zugeordneten IP Adressen beinhalten. Die jeweils einzigartigen MAC Adressen identifizieren jedes Netzwerk Interface im Netzwerk. IP Adressen weren verwendet, um einen Pfad zum Ziel auszuwählen (im Routing-Prozess) wohingegen der Weiterleitungs-Prozess von Frames, von einem Interface zum anderen, auf Grundlage der Nutzung von MAC Adressen basiert.

Wenn Host im Netzwerk IP Pakete zu einem anderen Host im Netzwerk versenden wollen, schaut dieser nach der Ethernet MAC Adresse des Ziel-Hosts im ARP Cache. Wenn die MAC Adresse des Ziel-Hosts nicht in der ARP Tabelle ist, dann wird eine ARP Anforderung versandt, um das Gerät mit der entsprechenden IP Adresse zu finden. ARP sendet eine Broadcast Anfrage-Nachricht an alle Geräte im LAN, worin das Gerät mit der entsprechenden IP Adresse aufgefordert wird, seine MAC Adresse mitzuteilen. Ein Gerät, welches die IP Adresse als seine IP Adresse wiedererkennt sendet ARP eine Mitteilung mit der eigenen MAC Adresse. Figur 2.5  verdeutlicht, wie ARP nach der MAC Adresse im lokalen Netzwerk sucht.

image2005

Im folgenden die Kommandos, welche die aktuellen ARP Einträge auf PC (linux, DOS) und auf einem MikroTik Router (die Kommandos können sich rein von der Syntax her unterscheiden, obwohl sie dasselbe durchführen) anzeigen:

Für Windows und Unix-ähnliche Maschinen: arp – a listet alle IP addresses mit den entsprechenden MAC Adressen auf

ip arp print – gleiches Kommando wie arp – a zeigt aber die ARP Tabelle auf einem MikroTik Router an.

[ Top | Back to Content ]

Dieser Beitrag wurde unter Verbindungsorientierte Kommunikation (TCP/IP) abgelegt und mit , , , , , , , , , , , , , , , , , , , , , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.