Die Transportschicht

Wir 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 Sockets

Jede 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.:

Port-Nummer Prozess Beschreibung
1 TCPMUX TCP Port Service Multiplexer
5 RJE Remote Job Eintrag
7 ECHO sendet alle Daten identisch zurück
9 DISCARD eine Art schwarzes Loch
13 DAYTIME Hier kann man Zeit und Datum auslesen.
17 Quote Der Spruch zum Tage
19 CHARGEN Ein Zeichengenerator
20 FTP-DATA Daten-Port des FTP-Dienstes
21 FTP Kommandoport des FTP-Kanals
23 TELNET Hier antwortet der Telnet-Server
25 SMTP Das Simple Mail Transfer Protocol
37 TIME Die Zeit im UTF
43 Who Is Wer ist wer
53 DOMAIN Der DNS
67 BOOTPS Bootstrap Protocol Server
68 BOOTPC Bootstrap Protocol Client
69 TFTP Das Trivial File Transfer Protocol
79 FINGER Wer ist den gerade auf der Maschine
80 WEB Web-Browser
109 POP2 Post Office Protocol v2
110 POP3 Post Office Protocol v3
111 RPC Sun RPC Portmap
111 NNTP Hier wartet der News-Server
137 NETBIOS-NS Der NETBIOS Name Service
138 NETBIOS-DG NETBIOS Datagram Service
139 NETBIOS-SS NETBIOS Session Service

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.