Wie wir gesehen haben, kann auf Ebene des IP eine Menge mit den Datenpaketen passieren (emphunzuverlässig, verbindungslos). Damit man eine sinnvolle und funktionierende Datenübertragung aufbauen kann, kommt auf der Ebene 4 des ISO/OSI-Referenzmodells das TCP zum Einsatz. Auf dieser Schicht wird nicht mehr von Paketen, sondern von Segmenten geredet. Ein IP-Paket kann einem TCP-Segment entsprechen, dies muß aber nicht sein (mögliche Fragmentierung durch das IP).
Das TCP stellt eine bidirektionale, gesicherte Verbindung mit den folgenden Ausprägungen her:
Damit ein Rechner gleichzeitig mehrere Verbindungen (Multiplexing) bearbeiten kann, müssen diese unterschieden werden. Dazu bedient sich das TCP der sogenannten Ports. Jeder Anwendung, die das TCP benutzen will, wird ein Port zugeordnet. Es gibt 65536 verschiedene Ports, sie sind fortlaufend numeriert. An dieser Stelle kommen folgende Definitionen ins Spiel:
Ein Port wird meißt hinter einem Doppelpunkt an die IP-Adresse (oder den
DNS-Namen) gehängt: 192.168.0.101:80
oder poldi:80
.
Ein Beispiel:
poldi
(Adresse 192.168.0.101
) läßt einen Webserver
auf Port 80
laufen. Sowohl mitch
(192.168.0.104
) als auch andi
(192.168.0.102
) wollen jetzt mit einem Browser über ihre
lokalen Ports 80
Daten vom Webserver abrufen.
In diesem Beispiel kommen die folgenden drei Sockets vor:
Rechner | Adresse | Port |
poldi |
192.168.0.101 | 80 |
andi |
192.168.0.102 | 80 |
mitch |
192.168.0.104 | 80 |
Nun könnte man meinen, daß sich poldi
verheddert, da ja beide
Rechner auf denselben Socket zugreifen. Hier kommt das Multiplexing
ins Spiel: Es wird zwar auf denselben Socket zugegriffen, aber da eine
Verbindung durch zwei Sockets definiert wird, kann poldi
die
beiden folgenden Verbindungen getrennt voneinander bearbeiten:
Rechner | Adresse | Port | Rechner | Adresse | Port |
poldi |
192.168.0.101 | 80 | andi |
192.168.0.102 | 80 |
poldi |
192.168.0.101 | 80 | mitch |
192.168.0.104 | 80 |
Das ist aber noch nicht alles. mitch
könnte in diesem Fall nur
eine einzige Verbindung zu poldi
aufbauen. Daher benutzt der
Client (mitch
) nicht den Standardport 80
, um
die Verbindungen zu einem Server aufzubauen. Vielmehr benutzt er
dynamische Portnummern, die für jede Verbindung
neu aufgebaut werden. So können beispielsweise im WWW gleichzeitig
mehrere Bilder von einem Server geladen werden, indem die Verbindungen
parallel bestehen.
Es seien folgende Sockets im Spiel, während mitch
gleichzeitig eine
HTML-Seite und zwei darin enthaltene Grafiken von poldi
herunterlädt:
Rechner | Adresse | Port |
poldi |
192.168.0.101 | 80 |
mitch |
192.168.0.104 | 1111 |
mitch |
192.168.0.104 | 1112 |
mitch |
192.168.0.104 | 1113 |
Jetzt hat mitch
also diese drei Verbindungen zu poldi
geöffnet:
Rechner | Adresse | Port | Rechner | Adresse | Port |
poldi |
192.168.0.101 | 80 | mitch |
192.168.0.104 | 1111 |
poldi |
192.168.0.101 | 80 | mitch |
192.168.0.104 | 1112 |
poldi |
192.168.0.101 | 80 | mitch |
192.168.0.104 | 1113 |
Durch diese Verfahrensweise ist es einem Server möglich, durch einen definierten Port (also eine eindeutige, immer gleiche Adreßangabe) gleichzeitig mit mehreren Clients in Verbindung zu stehen (und das auch noch mit mehreren Verbindungen pro Client).
Hier eine Auflistung der wichtigsten Standard-Portnummern. Die Portnummern sind in der RFC 1700 aufgelistet.
Auf den meisten Systemen sind die Ports über 1024 für jede Anwendung offen, während die Ports 1-1024 nur Systemprozessen (oder Anwendungen, die über entsprechende Privilegien verfügen) zur Verfügung stehen.