SelfLinux Linux im Netzwerk TCP/IP Abschnitt 5 | SelfLinux-0.13.0

| TCP/IP | Autor Formatierung GPL

#### 6 Protokolle im Transport Layer

#### 6.1 UDP - User Datagram Protocol

Das UDP ist das simpelste Protokoll auf der Transportebene. Es stellt im Gegensatz zum noch folgenden TCP nicht sicher, ob die versendeten Pakete auch wirklich beim Empfänger ankommen, sondern sendet auf gut Glück, bzw. nach dem Motto 'fire and forget'. Dafür ist es sehr schnell und erzeugt nicht so eine hohe Netzlast wie sein großer Bruder TCP. Somit eignet es sich gut für Anwendungen, die kleine Datenmengen schnell austauschen, wie verteilte Dateisysteme (NFS) oder Nameserveranfragen (DNS).

Da über IP nur eine Station adressierbar ist, könnte man zunächst ja nur eine Verbindung von Station zu Station verwenden. UDP fügt daher sogenannte Portnummern ein. Diese unterscheiden verschiedene logische Kanäle, die wiederum Diensten oder Anwendungen zugeordnet werden können. UDP ermöglicht 65535 verschiedene Portnummern, also theoretisch 65535 unterscheidbare UDP Kanäle. Die meisten Hosts unterstützen jedoch weit weniger gleichzeitig, beispielsweise 1024 oder 4096. Diese Informationen (Absender- und Empfängerport) werden wieder in einem Header vermerkt, dem UDP-Header.

Zusätzlich zum reinen IP-Paket besitzt ein UDP-Paket also noch einige wenige zusätzliche Daten wie Portnummer und Prüfsumme über die Nutzdaten (und den Header).

#### 6.2 TCP - Transmission Control Protocol

Das Transmission Control Protocol ist im Gegensatz zu den bisher beschriebenen Protokollen ähnlich wie das Telefonnetz verbindungsorientiert aufgebaut. Es verwendet IP, um Daten zu übertragen. Bevor man irgendwelche Daten per TCP an einen anderen Rechner senden kann, muß man eine Verbindung zu diesem aufgebaut haben. Damit hat TCP die Haupteigenschaft, nicht mehr einzelne Pakete, sondern Datenströme zu verarbeiten. Im Gegensatz zu Paketen sind die Datenlängen hier nicht mehr begrenzt. Über eine TCP Verbindung können Gigabytes von Daten übertragen werden, die natürlich in Millionen von IP Paketen aufgeteilt werden.

Da alle darunter liegenden Protokolle allerdings paketorientiert arbeiten, ist die Verbindung natürlich nur 'virtuell'. Durch diese festgelegte Verbindung können die zwei Verbindungspartner auch sicherstellen, dass die gesendeten Daten auch wirklich korrekt ankommen und zwar auch in der richtigen Reihenfolge und nicht doppelt. Dadurch ist es natürlich wesentlich komplexer aufgebaut als UDP. In der Regel gibt es in der Verbindung einen Client und einen Server. So verwenden auch die meisten Internetanwendungen TCP als Übertragungsprotokoll.

Eine typische TCP-Verbindung sieht so aus, dass der Client eine Verbindungsanforderung an den Server schickt. Dieser bestätigt diese Verbindung, wenn er dies möchte. Er Client bestätigt diese Antwort. Damit besteht eine feste Verbindung zwischen den beiden Partnern. Da drei Schritte erforderlich sind, um eine Verbindung aufzubauen, bezeichnet man diesen Vorgang auch als three-way-handshake (dreifach Händeschütteln). Nun können fleißig Daten übertragen werden bis entweder der Server oder der Client die Zeit gekommen sehen, die Verbindung zu trennen. Dazu sendet er einfach eine Ende-Anforderung an den anderen Rechner und nach Bestätigung durch diesen wird die Verbindung beendet.

TCP erstellt nun für eine bestimmte Menge an Daten des Datenstromes ein (IP) Paket und sendet dieses über IP. Ebenso wie UDP kennt TCP Portnummern und verwendet einen eigenen Header. Wie auch bei IP können die TCP Fragmente in falscher Reihenfolge ankommen. Diese werden von TCP sortiert und zusammengesetzt, ähnlich, wie das auch IP macht. TCP numeriert die Pakete (diese Nummer steht im TCP Header), um dies zu ermöglichen. Im TCP Header steht auch eine Header- und Datenprüfsumme.

Paketbestätigungen werden automatisch verschickt. Eine Paketbestätigung ist ein spezielles TCP Paket. Eine Bestätigung gilt immer für eine bestimmte Paketnummern. Kommt innerhalb einer bestimmten Zeit keine Bestätigung, so ist entweder das ursprüngliche Paket oder dessen Bestätigung verlorengegegangen. Verlorengegangene Pakete werden von der TCP Schicht automatisch wiederholt. Der Empfänger merkt sich die gefolgten Pakete, bis er die fehlenden erhalten hat. Dann erst kann er den Datenstrom wieder korrekt zusammensetzen.

Wird TCP verwendet, wird also sichergestellt, dass die Daten so ankommen, wie sie gesendet werden. Ein TCP Dienst muß also keine Datenprüfungen durchführen.

Zum Verbindungsabbau werden wieder spezielle Pakete verwendet, analog zum Verbindungsaufbau.

#### 6.3 Ports

Ports wurden schon kurz erwähnt, aber kaum erklärt. Dies soll an dieser Stelle nachgeholt werden.

Über das TCP und UDP Protokoll können Daten zu einem anderen Rechner übertragen werden. Nun hat man aber häufig mehrere Dienste auf einem Rechner, und möchte gleichzeitig mit mehreren Diensten kommunizieren können. Da also ein Rechner in der Regel mehr als einen Dienst anbietet (z.B. FTP, Telnet, POP, ...), muß man neben der IP-Adresse ein weiteres Adressierungsmerkmal finden. Dies sind die sogenannten Ports. So erreicht man z.B. den Dienst FTP auf einem Rechner in der Regel über TCP Port 21, Telnet läuft über TCP Port 23, DNS auf UDP Port 53. Hinter jedem Port steht auf dem Rechner ein Prozeß, der auf Anfragen wartet, hinter Port 21 entsprechend der FTP-Daemon. Solche üblichen und allgemein bekannten Ports nennt man "well-known ports".

Man sollte die Informationen nicht verwechseln. Adressen sind Teile von IP. Ports sind Teile von UDP und TCP. Es gibt damit also keine IP-Ports, sondern nur UDP Ports und TCP Ports.

In der Datei /etc/services sind etliche "well-known ports" aufgeführt.