Die TransportschichtWir haben auf der Vermittlungsschicht die Kommunikation zwischen nicht unmittelbar benachbarten Rechnern behandelt. Nun betrachten wir zwei Protokolle, die auf IP aufsetzen, nämlich TCP und UDP. Zuvor allerdings einige Begriffserklärungen. Ports und SocketsJede Anwendung die TCP (oder auch UDP ) nutzt hat eine sogenannte Port-Nummer, die angibt welcher Dienst auf der Zielmaschine angesprochen wird. Wenn man sich die IP-Adresse der Station als Bahnhof vorstellt, und die Dienste als dort fahrende Züge, dann ist die Portnummer das Gleis. Portnummern können zwar im Prinzip beliebig vergeben werden, aber es gibt Konventionen, welche Standardanwendung welchen Port benutzt. Die meisten TCP/IP-fähigen Maschinen haben eine Datei (/etc/services, \WINNT\SYSTEM32\ETC\SERVICES oder auch SYS:ETC\SERVICES ) in der die Zuordung von Anwendungen zu Portnummern steht. Portnummern über 255 werden normalerweise für die private Verwendung auf dem lokalen Rechner benutzt. Portnummern unter 255 sind für bestimmte Dienst reserviert. Eine Liste solcher Portnummern ist z.B.:
Eine virtuelle Berbindung zweier Maschinen auf der Transportschicht nennt man bei TCP/IP einen Socket. Jeder Socket ist durch zwei Nummern eindeutig identifiziert. Dies sind zum Einen die IP-Adresse der Maschine und zum anderen die Nummer des Ports, der von der TCP-Software benutzt wird. Dabei hat jede Maschine einen eigenen Socket. Da die IP-Adresse innerhalb des Netzes und die Portnummer auf der Maschine eindeutig sind, sind die Sockets innerhalb des Netzes ebenfalls eindeutig. Da jede Verbindung zwei Endpunkte hat und durch IP-Adresse und Portnummer auf beiden Maschinen gekennzeichnet ist, kann das TCP-Protokoll mehrere eindeutige Verbindungen zur gleichen Zeit unterhalten. Beispiel: Auf dem Server 192.168.32.3 laufen unter Anderem ein Newserver, ein Webserver und ein SMB-Server. Der Rechner 192.168.32.1 wird hochgefahren und versucht einen SMB-Share zu mounten. Die TCP-Software auf 192.168.32.1 sendet nun eine Verbindungsanforderung für eine SMB-Session mit ihrer IP-Adresse und einem freien Port auf ihrer Seite an den Server 192.168.32.1 auf Port 139. Danach werden von dem Server lokal kurzfristig ein paar Web-Seiten angefordert, und dann wird auf 192.168.32.1 Ein News-Client gestartet, der versucht die neuesten Nachrichten aus den Newsgroups abzurufen. Zu diesem Zeitpunkt zeigt die Verbindungstabelle auf 192.168.32.2 (erstellt mit dem Kommando netstat -n etwa folgendes Bild (Ausschnitt): Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State . . tcp 1 0 192.168.32.3:4395 192.168.32.3:80 CLOSE_WAIT tcp 1 0 192.168.32.3:4394 192.168.32.3:80 CLOSE_WAIT tcp 1 0 192.168.32.3:4393 192.168.32.3:80 CLOSE_WAIT tcp 1 0 192.168.32.3:4392 192.168.32.3:80 CLOSE_WAIT tcp 0 0 192.168.32.3:119 192.168.32.1:1848 ESTABLISHED tcp 0 0 192.168.32.3:139 192.168.32.1:1467 ESTABLISHED . . Wir sehen in den letzten beiden Zeilen die offenen Verbindungen zum SMB-Session-Service und zum NNTP-Port vom Client zum Server-Recher, und darüber die Verbindungen zum Web-Server auf dem lokalen Rechner, die darauf warten das die Sockets geschlossen werden (Der Client, also der Browser, läuft noch und hält sie offen, obwohl schon einige Zeit lang keine Daten mehr über die Sockets geflossen sind. |