TCP

Veröffentlicht am:

Die wichtigsten Befehle zum Merken

  • ss -ltn — lauschende TCP-Sockets finden.
  • ss -tin state established — aufgebaute Verbindungen und TCP-Details untersuchen.

Befehle und Optionen

Option oder Argument Bedeutung
-l / -t / -n Listener wählen, TCP wählen und Adressen sowie Ports numerisch anzeigen.
-i Verfügbare interne TCP-Informationen ergänzen.
state established Auf Verbindungen mit abgeschlossenem TCP-Handshake filtern.

ss liest Socket-Informationen aus dem Kernel und sendet keine Anfrage.

Die entscheidenden Konzepte

1. TCP verbindet zwei Endpunkte

TCP, das Transmission Control Protocol, verbindet Endpunkte aus IP-Adresse und Port. Ein Server lauscht üblicherweise, ein Client beginnt die Verbindung. Der normale Handshake tauscht SYN, SYN-ACK und ACK aus, um den Anfangszustand abzustimmen.

Eine aufgebaute TCP-Verbindung ist Transportzustand. Sie beweist weder eine erfolgreiche Anmeldung noch eine arbeitsfähige Anwendung. TLS und Anwendungsprotokolle führen danach eigene Austausche durch.

2. Anwendungen erhalten einen geordneten Bytestrom

TCP liefert Bytes in Reihenfolge und verbirgt gewöhnliche Paketumordnung vor der Anwendung. Es erhält nicht die Grenzen einzelner Schreibzugriffe: Zwei Schreibvorgänge können in einem Lesevorgang ankommen oder einer in mehreren.

Das Anwendungsprotokoll muss Nachrichtengrenzen festlegen, etwa durch Längenangaben oder Trennzeichen. TCP selbst verschlüsselt auch nicht. Zuverlässiger und vertraulicher Transport lösen unterschiedliche Probleme.

3. Bestätigungen und Wiederholungen gleichen Verlust aus

Sequenznummern bezeichnen Positionen im Bytestrom. Bestätigungen melden Empfang, sodass der Sender vermutlich verlorene Daten erneut übertragen kann. Diese Wiederherstellung braucht Zeit. Eine langsame Anfrage kann daher Paketverlust statt langsame Anwendungsberechnung widerspiegeln.

Eine TCP-Bestätigung bedeutet, dass der entfernte Transport Bytes erhalten hat. Sie bestätigt keine Datenbanktransaktion oder abgeschlossene Benutzeraktion. Anwendungen brauchen eigene Erfolgsantworten; ein Verbindungsabbruch kann das Ergebnis unklar lassen.

4. Zwei Kontrollen begrenzen ausstehende Daten

Flusskontrolle schützt den Empfänger: Sein angekündigtes Empfangsfenster zeigt, wie viele weitere Daten er annehmen kann. Überlastkontrolle schützt das Netzwerk, indem der Sender seine ausstehende Datenmenge an beobachtete Bedingungen anpasst.

Diese Grenzen unterscheiden sich. Ein nicht mehr lesender Empfänger und ein überlastetes Netzwerk können beide bremsen, verlangen aber andere Untersuchungen. Auch das Beenden hat Zustand: FIN beendet die Senderichtung geordnet, RST bricht eine Verbindung ab.

Ein kleines Beispiel

Optional: Führe beide Befehle unter Linux aus. Bei einer SSH-Sitzung kann diese eine vorhandene Verbindung zum Untersuchen liefern.

ss -ltn
ss -tin state established

Der erste Befehl zeigt Listener, keine Gespräche. Lies lokale Adresse und Port. Der zweite zeigt aufgebaute Endpunkte und verfügbare Details: rtt bezeichnet Laufzeiten in Millisekunden, cwnd ein Überlastfenster in Segmenten.

Bei aufgebauten Verbindungen beschreibt Recv-Q noch nicht von der Anwendung gelesene Daten und Send-Q noch nicht bestätigte Daten. Listener-Warteschlangen haben andere Bedeutungen. Werte ändern sich; eine Momentaufnahme beweist keinen dauerhaften Engpass.

Eine leere Verbindungsliste ist ohne passende Verbindungen normal. Es wird nichts geöffnet oder geschlossen. Aufräumen ist nicht erforderlich.

Merke dir: TCP liefert einen geordneten Bytestrom. Die Anwendung definiert Nachrichten und bestätigt den fachlichen Erfolg.