TCP stellt gesicherte virtuelle Verbindungen bereit. Verlorene oder \"verstümmelte\" Pakete werden noch mal übertragen und die Pakete in der gleichen Reihenfolge abgeliefert, in der sie gesendet wurden.
Die Reihenfolge der Pakete wird durch die Laufnummer bestimmt. Jedes übermittelte Byte wird gezählt. Alle TCP-Pakete, außer dem allerersten einer Sitzung, enthalten eine Quittungsnummer, was die Laufnummer des letzten in Folge korrekt empfangenen Byte zurückgibt. Die Startlaufnummer (initial sequence number) wird zeitabhängig zufällig bestimmt. Das sich die Startlaufnummer für neue Verbindungen ständig ändert, ist es TCP möglich, alte Pakete aus vorangegangenen Inkarnationen derselben virtuellen Verbindung zu erkennen.
Jede TCP-Nachricht enthält den 4-Tupel
Durch diese Kombination aus Quell- und Zielsystem und jeweiligen Port-Nummern wird sie eindeutig einer bestimmten virtuellen Verbindung zugeordnet.
Es ist nicht nur erlaubt, sondern durchaus üblich, mehrere verschiedene Verbindungen über die gleiche lokale Port-Nummer abzuwickeln. Solange sich Zielsystem oder Zielport dieser Verbindungen unterscheiden, gibt es keine Probleme.
Server-Prozesse, die einen Dienst über TCP anbieten,"lauschen" auf bestimmten Port-Nummern. Das nennt man TCP-listen. Über eine Übereinkunft haben die Server-Ports niedrige Nummern. Diese Übereinkunft wird allerdings nicht immer eingehalten, was zu Sicherheitsproblemen führen kann.
Die Port-Nummern der Standarddienste werden als bekannt vorausgesetzt.
Ein Port im Listen-Modus stellt im eigentlich eine halboffene Verbindung dar:
Nur Quellsystem und Quellport sind bekannt. Geht ein Paket mit einer Verbindungsanfrage ein, so werden die fehlenden Einträge ergänzt. Der Server-Prozess kann vom Betriebssystem dupliziert werden, so dass weitere Anfragen auf den selben Port auch behandelt werden können.
Port Dienst
25 Smtp
80 http
119 nntp
Die meisten TCP Versionen für UNIX Systeme stellen sicher, dass nur der root Port-Nummern unterhalb von 1024 nutzen kann. Dies sind die privilegierten Ports. Fremde System sollen der Echtheit von Informationen, die sie von diesen Ports erhalten, vertrauen können. Diese Einschränkung ist allerdings nur eine Konvention, deren Einhaltung von der Protokollspezifikation nicht verlangt wird. Die Konsequenz ist klar: Sie können privilegierten Ports nur dann trauen, wenn sie absolut sicher sind, dass das Quellsystem die Konvention einhält und korrekt verwaltet wird.
Die schon erwähnten Laufnummern haben auch einen gewissen Sicherheitseffekt:
Eine Verbindung kommt erst dann zustande, wenn beide Seiten jeweils den Empfang der Startlaufnummern quittiert haben.
|