| Die Transportschicht |
|---|
Einführung
IP-Daten sind in IP-Datagramm und diese sind wiederum in Rahmen eingebettet. In der Transportschicht sind nun die zwei von einander autonome Optionen verfügbar, abhängig von den Diensten der Anwendung des Benutzers, ob TCP oder UDP im Datenfeld des IP-Datagramms codiert werden soll. Sobald die Daten von IP an den richtigen Host übertragen wurden, müssen sie in diesem Rechner an die entsprechende Instanz der Anwendungsschicht weitergegeben werden. Zu den Aufgaben der Transportschicht gehört es, Datenströme in einem Multiplex- und einem Aufspaltungsverfahren zwischen verschiedenen Anwendungen der IP-Schicht zu vermitteln und an die richtigen Anwendungen zu leiten. Die Transportschicht sorgt dabei für fehlerfreie und mit einem Flusskontrollmechanismus ausgestattete verbindungsorientierte Datenübertragungen. Dies gilt auch für die einfache Weitergabe von verbindungslosen IP-Diensten. nach obenPorts
.-----------------------------.
Anwendungs- |TFTP|Sun |SNMP|FTP |Tel-|SMTP|
schicht | | RPC| | | net| | Vordefinierte Port-Adressen
|-()---()---()-+-()---()---()-| <- für bekannte Dienste der
Transport- | 69 111 161 | 21 23 25 | Anwendungsschicht
schicht | UDP | TCP |
|-----------------------------|
. .
Es sind also bestimmte Adressnummern für die verbreitesten Dienste der Anwendungsschicht, wie zum Beispiel FTP, Telnet, SMTP und HTTP, reserviert. Bei der Entwicklung eines Programms, das mit TCP oder UDP arbeitet, muss daher der zu verwendende Port definiert werden. Um sicherzustellen, dass es nicht zu etwaigen Konflikten kommt, sollte eine Portnummer ausserhalb des Bereichs der well known ports genommen werden. Anstelle einer festen Zuordnung kann jedoch auch eine dynamische Adresszuteilung der Port-Nummern eingesetzt werden, wie dies bei NFS als Funktion mit den Namen "Portmapper" genutzt wird. nach obenSocketsSockets ist im Zusammenhang mit TCP/IP ein häufig verwendeter Ausdruck, welcher ein relativ einfaches aber überaus wichtiges Konzept betitelt. Sockets sind Kennzahlen, die aus der IP-Adresse und Port-Nummern zusammensetzen. Da sowohl die IP-Adresse eines Knotenpunkts - vorausgesetzt alle Knoten arbeiten mit registrierten IP-Adressen - als auch der Port immer eindeutig sind, können mit Hilfe der Sockets Dienste der Anwendungsschicht eindeutig identifiziert werden. Da diese Informationen eindeutig sind, werden sie bei der Prüfsummenberechnung von TCP und UDP miteinbezogen. Damit will sichergestellt werden, dass wenn Datagramme zu einem falschen Host geschickt werden, jene direkt von der Transportschicht des Rechners nicht angenommen werden, wenn die Port-Adresse existiert. Die meisten Dienste der Anwendungsschicht müssen in der Lage sein Mehrfachübertragungen zuzulassen. Die einzelnen Kommunikationen müssen daher unterschieden werden können, damit die Daten an den richtigen Rechner zurückgeschickt werden. Dass mehrere Benutzer remote über Telnet auf einem Rechner, und jeweils über den gleichen TCP-Port verbunden sind, ist nichts ungewöhnliches. Eine Möglichkeit der eindeutigen Identifizierung der verschiedenen Verbindungen bestünde darin, anhand der IP-Adresse den Absender des Datagramms zu ermitteln. In diesem Fall ist es jedoch kaum oder nur sehr schwer möglich zwei verschiedene Benutzer, die mit derselben Anwendung von einem Host aus verbunden sind, voneinander zu unterscheiden. Dieses Problem wird dadurch gelöst, dass die vordefinierten reservierten Port-Adressen (well known ports) nur von Diensten der Server-Anwendungsschicht genutzt werden. Beim Client-Programm wird eine eindeutige Port-Adresse, die von keiner anderen Anwendung des Rechners verwendet wird, gewählt. Auf diese Weise können zwei Verbindungen von einem Client zum gleichen Server leicht anhand der Absender-Sockets unterschieden werden, da jene auf jeden Fall eindeutig sind. Die Anwendungsdienste übermitteln die Daten (IP-Adresse und Port-Nummer des Absender) stets an das Socket, von dem die Daten ausgesandt werden. Bei einigen Diensten, die von gleichgestellten Einheiten der identischen Schicht in differenten Systemen (Peer-to-Peer-Dienste) angeboten werden, wird dieselbe Port-Adresse für die Übertragung und den Empfang der Daten während der Kommunikation verwendet. Es handelt sich hierbei jedoch primär im Routenwahl- und Verwaltungsfunktionen, die für eine Unterscheidung der Ports bei der Rückgabe erforderlich sind. nach obenTCP
nach obenUDPNicht alle Dienste auf der Transportebene benötigen eine gesicherte Verbindung zwischen zwei Kommunikationspartnern. Wenn nun zum Beispiel ein Netzwerk als sicher genug gilt, so kann das User Datagram Protocol einen einfachen, verbindungslosen Dienst, welcher keine Datenströme unterhält, sondern die Datagramme unabhängig voneinander transportiert und keine Zustellung garantiert, darstellen. Im Header der UDP-Pakete werden die sich im Spiel befindlichen Port-Nummern und eine kleine Prüfsumme integriert. UDP-Verbindungen gelten grundsätzlich als sehr leicht simulier- und/oder imitierbar, was dieser Protokoll-Art einen nicht sonderlich vertrauenswürdigen Ruf eingebracht hat. Der Grund dafür ist leicht ersichtlich: Es gibt keine Sequenznummern, keinen Handshake und keine Bestätigungspakete. UDP-Applikationen sollten die Hosts
unbedingt einem Authentifikationsprozess unterziehen, denn sonst ist die
Nutzung der Applikationen durch eine gefälschte interne IP-Senderadress
möglich. Man könnte durch-aus auch UDP-Verbindungen von den Partnern der
Verbindungen unbemerkt übernehmen, was dann UDP-Hijacking genannt wird.
Auf öffentlich zugänglichen System sollte UDP in jedem Falle vermieden
werden. |
| Autor: Marc Ruef |