Skip to main content

9.2 TCP-Handshake, Timeouts und TCP Reset

Ziel dieser Seite

Diese Seite beschreibt den vollständigen Lebenszyklus einer TCP-Verbindung:

  • Verbindungsaufbau zwischen Client und Server;
  • Aushandlung wichtiger TCP-Optionen;
  • zuverlässige und geordnete Datenübertragung;
  • Bestätigungen, Sequenznummern und Wiederholungen;
  • kontrollierter Verbindungsabbau;
  • Timeouts auf unterschiedlichen Ebenen;
  • abrupter Verbindungsabbruch durch TCP Reset;
  • systematische Diagnose mit Windows, Linux, macOS und Paketaufzeichnungen.

Nach der Bearbeitung muss unterschieden werden können:

  • ob bereits der TCP-Verbindungsaufbau scheitert;
  • welche Seite den Verbindungsaufbau nicht fortsetzt;
  • ob ein Port aktiv abgelehnt wird;
  • ob Pakete verworfen oder verzögert werden;
  • ob TCP erfolgreich aufgebaut wurde und erst das Anwendungsprotokoll scheitert;
  • ob eine Verbindung kontrolliert mit FIN oder abrupt mit RST beendet wurde;
  • ob ein Timeout aus TCP, der Anwendung, einem Proxy oder einer Firewall stammt;
  • welche Gegenstelle oder Zwischenkomponente wahrscheinlich einen Reset erzeugt hat;
  • ob Wiederholungen auf Paketverlust oder lediglich auf eine unvollständige Aufzeichnung zurückzuführen sind.

Ein TCP-Fehler darf nicht allein anhand einer Anwendungsmeldung wie „Timeout“ oder „Connection reset“ eingeordnet werden. Er muss mit Socketzuständen, Zeitpunkten, Protokollen und bei Bedarf einer begrenzten Paketaufzeichnung korreliert werden.


Sicherheits- und Wirkungsklassen

KennzeichnungBedeutung
LESENDErfasst ausschließlich vorhandene Zustände.
NETZAKTIVErzeugt Netzwerkverkehr zum geprüften Ziel.
SENSITIVKann interne Adressen, Verbindungen oder Nutzdaten sichtbar machen.
ÄNDERNDVerändert Konfiguration oder Laufzeitzustand.
AUSFALLRISIKOKann Verbindungen, Prozesse oder Dienste beeinträchtigen.

Paketaufzeichnungen können enthalten:

  • interne und externe IP-Adressen;
  • Portnummern;
  • Hostnamen;
  • Anwendungsdaten;
  • Authentifizierungsinformationen;
  • Cookies oder Tokens;
  • unverschlüsselte Nutzdaten;
  • Zertifikatsinformationen;
  • Kommunikationsbeziehungen.

Aufzeichnungen müssen technisch und zeitlich begrenzt, geschützt gespeichert und nach Abschluss der Diagnose kontrolliert entfernt werden.


Grundlegende Eigenschaften von TCP

TCP stellt Anwendungen einen zuverlässigen, geordneten und bidirektionalen Bytestrom zur Verfügung.

TCP bietet unter anderem:

  • verbindungsorientierte Kommunikation;
  • Sequenznummern;
  • Bestätigungen;
  • Prüfsummen;
  • Wiederholungen verlorener Segmente;
  • Flusskontrolle;
  • Überlastkontrolle;
  • geordnete Übergabe der Daten;
  • kontrollierten Verbindungsabbau;
  • Erkennung bestimmter ungültiger oder nicht mehr existierender Verbindungen.

TCP stellt keine Anwendungsnachrichten bereit. Eine Anwendung übergibt einen Bytestrom. Die Aufteilung in einzelne TCP-Segmente kann sich während der Übertragung ändern.

Folgende Annahmen sind deshalb falsch:

Eine TCP-Verbindung entspricht einer Anfrage.
Ein TCP-Segment entspricht einer Anwendungsnachricht.
Ein ACK bedeutet, dass die Anwendung die Daten verarbeitet hat.
Ein erfolgreicher Handshake bedeutet, dass HTTP, TLS oder die Anwendung funktioniert.

Ein TCP-ACK bestätigt grundsätzlich, dass die TCP-Implementierung der Gegenstelle die entsprechenden Bytes angenommen hat. Es beweist nicht, dass:

  • die Anwendung die Bytes gelesen hat;
  • die Anwendung die Anfrage verstanden hat;
  • Daten auf einen Datenträger geschrieben wurden;
  • eine Transaktion erfolgreich abgeschlossen wurde;
  • eine Anwendungsantwort erzeugt wurde.

TCP-Verbindung eindeutig bestimmen

Eine TCP-Verbindung wird durch ihre Endpunkte unterschieden:

Transportprotokoll
lokale IP-Adresse
lokaler Port
entfernte IP-Adresse
entfernter Port

Beispiel:

Client: 192.0.2.100:53124
Server: 192.0.2.25:443

Die Verbindung kann kompakt dargestellt werden als:

192.0.2.100:53124 → 192.0.2.25:443

Auf der Serverseite ist dieselbe Verbindung aus umgekehrter Perspektive sichtbar:

lokal:   192.0.2.25:443
remote:  192.0.2.100:53124

Bei NAT, Load Balancern oder Proxys können sich Adressen und Ports entlang des Pfads verändern. Paketaufzeichnungen auf verschiedenen Seiten müssen deshalb anhand von:

  • Zeitpunkt;
  • Richtung;
  • TCP-Flags;
  • Sequenznummern;
  • Nutzdaten;
  • übersetzten Adressen und Ports

korreliert werden.


Wichtige TCP-Flags

FlagBedeutung
SYNSynchronisiert Sequenznummern und beginnt normalerweise den Verbindungsaufbau.
ACKDas Bestätigungsfeld ist gültig.
FINDer Sender hat keine weiteren Daten mehr zu senden.
RSTVerbindung zurücksetzen oder ungültige Verbindung ablehnen.
PSHKennzeichnet Daten für eine zeitnahe Weitergabe innerhalb des TCP-Datenstroms.
URGDas Urgent-Pointer-Feld ist relevant.
ECEWird im Zusammenhang mit Explicit Congestion Notification verwendet.
CWRSignalisiert eine reduzierte Congestion Window nach ECN.

PSH definiert keine Anwendungsnachricht und garantiert keine bestimmte Paketgröße oder sofortige Verarbeitung durch die Anwendung.


Verbindungsaufbau zwischen Client und Server

Der reguläre TCP-Verbindungsaufbau wird als Three-Way Handshake bezeichnet.

Client                                      Server

CLOSED                                      LISTEN
   |                                           |
   |  SYN, Seq=x                               |
   |------------------------------------------>|
   |                                           |
   |  SYN, ACK, Seq=y, Ack=x+1                 |
   |<------------------------------------------|
   |                                           |
   |  ACK, Ack=y+1                             |
   |------------------------------------------>|
   |                                           |
ESTABLISHED                                ESTABLISHED

Die drei logischen Schritte sind:

  1. Der Client sendet ein Segment mit SYN.
  2. Der Server bestätigt das Client-SYN und sendet sein eigenes SYN mit SYN, ACK.
  3. Der Client bestätigt das Server-SYN mit ACK.

Das dritte Segment kann abhängig von Anwendung und TCP-Erweiterungen bereits Daten enthalten. Für die grundlegende Diagnose wird es dennoch als dritter Handshake-Schritt betrachtet.


Sequenznummern beim Handshake

Beispiel:

Client → Server:
SYN
Seq = 1000

Server → Client:
SYN, ACK
Seq = 7000
Ack = 1001

Client → Server:
ACK
Seq = 1001
Ack = 7001

Ein SYN verbraucht eine Sequenznummer. Deshalb bestätigt der Server:

1000 + 1 = 1001

Auch das SYN des Servers verbraucht eine Sequenznummer. Der Client bestätigt:

7000 + 1 = 7001

Die tatsächlich verwendeten Initial Sequence Numbers werden von den TCP-Implementierungen bestimmt und sind nicht als einfache fortlaufende Werte vorhersehbar.


TCP-Zustände während des Verbindungsaufbaus

ZustandBedeutung
CLOSEDEs besteht keine TCP-Verbindung.
LISTENDer Server wartet auf neue Verbindungsanfragen.
SYN-SENTEin SYN wurde gesendet; eine passende Antwort steht aus.
SYN-RECEIVEDSYN wurde empfangen und mit SYN/ACK beantwortet; abschließendes ACK steht aus.
ESTABLISHEDDer Handshake ist abgeschlossen.

Eine große Zahl von Verbindungen in SYN-SENT kann bedeuten:

  • Zieladresse nicht erreichbar;
  • Zielport wird gefiltert;
  • Rückweg ist fehlerhaft;
  • Server antwortet nicht;
  • SYN/ACK wird verworfen;
  • falsche IPv4- oder IPv6-Adresse;
  • Überlastung oder Ressourcenproblem;
  • ausgehende Verbindung wird lokal blockiert.

Viele Einträge in SYN-RECEIVED können bedeuten:

  • abschließende ACKs erreichen den Server nicht;
  • Rückweg vom Server zum Client funktioniert, Hinweg des ACKs jedoch nicht;
  • Clients brechen den Aufbau ab;
  • SYN-Flood oder ungewöhnlich viele unvollständige Verbindungsversuche;
  • vorgeschaltete Systeme oder Health Checks öffnen Verbindungen nicht vollständig;
  • Serverwarteschlangen oder Ressourcen sind erschöpft.

Ein einzelner kurz sichtbarer Zustand SYN-SENT oder SYN-RECEIVED ist normal. Entscheidend sind Häufigkeit, Dauer und Vergleich mit einer Baseline.


TCP-Optionen während des Handshakes

Wichtige Optionen werden typischerweise in SYN-Segmenten angeboten oder ausgehandelt.

OptionZweck
MSSMaximale TCP-Nutzdatenmenge, die die jeweilige Seite in einem Segment empfangen möchte.
Window ScaleErweitert die darstellbare TCP-Empfangsfenstergröße.
SACK PermittedErlaubt Selective Acknowledgment.
TimestampsUnterstützt unter anderem RTT-Messungen und Schutzmechanismen gegen alte Segmente.
ECNErmöglicht Überlastsignalisierung ohne zwingenden Paketverlust, sofern der Pfad sie unterstützt.

Bei der Diagnose müssen die SYN- und SYN/ACK-Optionen verglichen werden.

Zu prüfen sind:

  • bietet der Client eine MSS an?
  • bietet der Server eine abweichende MSS an?
  • wird Window Scaling angeboten?
  • wird SACK unterstützt?
  • werden TCP-Timestamps verwendet?
  • verschwinden Optionen zwischen Client und Server?
  • verändert eine Firewall oder Optimierungskomponente SYN-Pakete?
  • unterscheiden sich erfolgreiche und fehlerhafte Verbindungen?

Ein Handshake kann trotz unterschiedlicher angebotener Optionen erfolgreich sein. Die Optionen können jedoch das spätere Übertragungsverhalten beeinflussen.


Erfolgreicher TCP-Handshake

Eine normale Paketfolge ist:

Client → Server  SYN
Server → Client  SYN, ACK
Client → Server  ACK

Dieser Befund beweist:

  • der Client konnte ein SYN senden;
  • das SYN erreichte einen antwortenden TCP-Endpunkt;
  • eine SYN/ACK-Antwort erreichte den Client;
  • das abschließende ACK konnte gesendet werden;
  • die TCP-Verbindung wurde mindestens kurzfristig aufgebaut.

Dieser Befund beweist nicht:

  • dass TLS funktioniert;
  • dass das richtige Zertifikat geliefert wird;
  • dass HTTP antwortet;
  • dass der virtuelle Host stimmt;
  • dass die Anwendung gesund ist;
  • dass Authentifizierung funktioniert;
  • dass eine Datenbankanfrage verarbeitet wird;
  • dass die Verbindung dauerhaft stabil bleibt.

SYN ohne Antwort

Typischer Paketbefund:

Client → Server  SYN
Client → Server  SYN erneut
Client → Server  SYN erneut
...
Timeout

Mögliche Ursachen:

  • Zielhost ist nicht erreichbar;
  • Routing ist fehlerhaft;
  • lokale Firewall verwirft das SYN;
  • Netzwerkfirewall verwirft das SYN;
  • Zielport wird still verworfen;
  • SYN erreicht den Server nicht;
  • Server-SYN/ACK wird auf dem Rückweg verworfen;
  • falsche Zieladresse;
  • falsche Adressfamilie;
  • NAT-Zuordnung fehlt;
  • Load Balancer besitzt kein erreichbares Frontend;
  • Server oder Zwischenkomponente ist überlastet;
  • Paketaufzeichnung wurde am falschen Punkt durchgeführt.

Aus einer alleinigen Clientaufzeichnung kann nicht sicher geschlossen werden, ob das SYN den Server erreicht hat. Dafür wird eine korrelierte Aufzeichnung am Server oder an einem geeigneten Zwischenpunkt benötigt.


SYN wird mit Reset beantwortet

Typischer Paketbefund:

Client → Server  SYN
Server → Client  RST, ACK

Typische Einordnung:

  • Zielhost ist erreichbar;
  • auf dem angesprochenen Endpunkt existiert häufig kein passender Listener;
  • das Betriebssystem oder eine Zwischenkomponente lehnt die Verbindung aktiv ab;
  • eine Firewall kann mit einem Reset ablehnen;
  • ein Load Balancer besitzt möglicherweise kein verwendbares Backend;
  • Portweiterleitung zeigt auf einen geschlossenen Zielport.

Eine Anwendung meldet in diesem Fall häufig:

Connection refused
Verbindung abgelehnt
No connection could be made because the target machine actively refused it

Die Meldung beweist nicht, dass der eigentliche Zielserver selbst den Reset erzeugt hat. Firewalls, Proxys und Load Balancer können ebenfalls TCP-Reset-Segmente erzeugen.


Server sendet SYN/ACK, erhält aber kein ACK

Typischer Befund am Server:

Client → Server  SYN
Server → Client  SYN, ACK
Server → Client  SYN, ACK erneut
Server → Client  SYN, ACK erneut
...

Mögliche Ursachen:

  • SYN/ACK erreicht den Client nicht;
  • Clientfirewall verwirft die Antwort;
  • asymmetrischer Rückweg;
  • NAT-Zustand ist fehlerhaft;
  • Client sendet das ACK über einen anderen Pfad;
  • Quelladressprüfung verwirft das Paket;
  • Clientprozess wurde beendet;
  • fehlerhafte oder unvollständige Paketaufzeichnung;
  • Zwischenkomponente verwirft das abschließende ACK.

Zur Eingrenzung werden Aufzeichnungen auf Client- und Serverseite benötigt.


Handshake funktioniert nur teilweise

PaketbefundEinordnung
kein SYN sichtbarAnwendung startet keinen TCP-Aufbau oder Aufzeichnungspunkt ist falsch
SYN sichtbar, keine AntwortFilterung, Routing, Verlust oder fehlender Rückweg
SYN gefolgt von RSTaktive Ablehnung
SYN/ACK wird wiederholtabschließendes ACK fehlt
Handshake vollständig, danach keine DatenAnwendung wartet, Protokollmissverständnis oder falsche Rolle
Handshake vollständig, danach RSTAnwendung, Betriebssystem oder Zwischenkomponente bricht ab
Handshake vollständig, danach FINkontrollierte Beendigung
Handshake vollständig, TLS beginnt und stopptTLS- oder Anwendungsproblem, nicht TCP-Verbindungsaufbau

Die kontrollierte Datenübertragung bei TCP

Nach dem Handshake können beide Seiten Daten senden.

TCP arbeitet als bidirektionaler Bytestrom:

Client ⇄ Server

Jede Richtung besitzt eigene:

  • Sequenznummern;
  • Bestätigungen;
  • Empfangsfenster;
  • Sendepuffer;
  • Empfangspuffer;
  • Wiederholungszustände.

Ein Client kann gleichzeitig Daten senden und Daten des Servers empfangen.


Sequenznummern bei der Datenübertragung

Beispiel:

Client sendet:
Seq = 1001
TCP-Nutzdatenlänge = 500 Bytes

Der Server bestätigt als nächste erwartete Sequenznummer:

Ack = 1501

Berechnung:

1001 + 500 = 1501

Die Bestätigungsnummer bezeichnet das nächste Byte, das die empfangende Seite erwartet.

Wenn der Server Ack = 1501 sendet, bestätigt er kumulativ alle Bytes bis einschließlich Sequenznummer 1500.


Kumulative Bestätigungen

TCP-ACKs sind grundsätzlich kumulativ.

Beispiel:

Segment 1: Seq 1001, Länge 500
Segment 2: Seq 1501, Länge 500
Segment 3: Seq 2001, Länge 500

Wenn der Empfänger anschließend sendet:

Ack = 2501

sind damit alle zusammenhängend empfangenen Bytes bis 2500 bestätigt.

Ein fehlendes Segment kann dazu führen, dass der Empfänger weiterhin dieselbe nächste erwartete Sequenznummer bestätigt.


Selective Acknowledgment

Wenn SACK während des Handshakes erlaubt wurde, kann der Empfänger zusätzlich mitteilen, welche späteren Datenblöcke bereits angekommen sind.

Beispiel:

Segment 1 angekommen
Segment 2 fehlt
Segment 3 angekommen
Segment 4 angekommen

Der kumulative ACK verweist weiterhin auf Segment 2. SACK-Informationen können jedoch anzeigen, dass Segment 3 und Segment 4 bereits vorhanden sind.

Dadurch muss der Sender nicht zwingend alle späteren Daten erneut übertragen.


Verzögerte ACKs

TCP-Implementierungen können Bestätigungen kurz verzögern, um:

  • mehrere empfangene Segmente gemeinsam zu bestätigen;
  • ACKs mit eigenen ausgehenden Daten zu kombinieren;
  • unnötige kleine Pakete zu reduzieren.

Ein nicht sofort sichtbares ACK ist deshalb nicht automatisch ein Fehler.

Entscheidend sind:

  • tatsächliche Verzögerungsdauer;
  • Wiederholungen;
  • Anwendungsreaktion;
  • Vergleich mit erfolgreichen Verbindungen;
  • Betriebssystem- und Protokollverhalten.

Flusskontrolle

Der Empfänger teilt über das TCP-Empfangsfenster mit, wie viele weitere Bytes er aufnehmen kann.

Vereinfacht:

Sender darf nur so viele unbestätigte Daten senden,
wie das angekündigte Empfangsfenster zulässt.

Ein kleiner werdendes Empfangsfenster kann darauf hindeuten, dass die empfangende Anwendung Daten nicht schnell genug aus dem Socket liest.

Ein Empfangsfenster von null bedeutet, dass momentan kein weiterer Empfangspuffer verfügbar ist. Die ausführliche Diagnose von Zero Window und Übertragungsstillständen erfolgt auf der dafür vorgesehenen Seite zu Retransmissions, Zero Window und MTU-Problemen.


Überlastkontrolle

Zusätzlich zur Flusskontrolle begrenzt TCP die Sendemenge anhand des vermuteten Netzzustands.

Wichtige Begriffe:

BegriffBedeutung
cwndCongestion Window des Senders
rwndvom Empfänger angekündigtes Receive Window
RTTgemessene Round Trip Time
RTOberechneter Retransmission Timeout
Slow Startvorsichtige Erhöhung der Sendemenge zu Beginn oder nach bestimmten Verlusten
Congestion Avoidancekontrollierte Anpassung der Sendemenge
Fast Retransmitschnelle Wiederholung bei Verlusthinweisen
Fast RecoveryWiederherstellung nach bestimmten Verlustereignissen

Die tatsächlich sendbare unbestätigte Datenmenge wird unter anderem durch Empfangsfenster und Congestion Window begrenzt.


Retransmission Timeout

Ein Sender startet für noch nicht bestätigte Daten einen Wiederholungstimer.

Der RTO wird aus gemessenen Laufzeiten und deren Schwankungen berechnet. Er ist kein fester universeller Wert.

Wenn eine Bestätigung nicht rechtzeitig eintrifft:

  • läuft der Wiederholungstimer ab;
  • das betreffende Segment kann erneut gesendet werden;
  • der Wiederholungstimer wird typischerweise vergrößert;
  • die Sendegeschwindigkeit kann reduziert werden;
  • nach weiteren erfolglosen Versuchen kann die Verbindung aufgegeben werden.

Die genaue Anzahl der Versuche und die Gesamtdauer sind abhängig von:

  • Betriebssystem;
  • TCP-Implementierung;
  • Verbindungsphase;
  • Anwendung;
  • Socketoptionen;
  • Systemkonfiguration;
  • Zwischenkomponenten.

Es darf kein universeller TCP-Timeoutwert angenommen werden.


Fast Retransmit

Beim klassischen Fast-Retransmit-Verfahren können mehrere Duplicate ACKs den Sender darauf hinweisen, dass ein früheres Segment fehlt, während spätere Segmente angekommen sind.

Der Sender kann das fehlende Segment wiederholen, bevor der normale RTO abläuft.

Moderne TCP-Implementierungen können zusätzlich oder alternativ weitere Verlustalgorithmen und SACK-Informationen verwenden. Deshalb darf nicht jeder Fast-Retransmit ausschließlich anhand einer festen Zahl von Duplicate ACKs erklärt werden.


Duplicate ACKs richtig einordnen

Duplicate ACKs können entstehen durch:

  • tatsächlich verlorenes Segment;
  • Paketumordnung;
  • duplizierte Pakete;
  • verzögerte Übertragung;
  • unvollständige Paketaufzeichnung;
  • asymmetrische Aufzeichnung;
  • unterschiedliche Netzwerkpfade;
  • Captureverlust am Analysesystem.

Ein Duplicate ACK ist ein Hinweis und kein alleiniger Beweis für Paketverlust.


TCP-Retransmissions richtig einordnen

Eine als Retransmission markierte Übertragung kann bedeuten:

  • ursprüngliches Segment ging im Netzwerk verloren;
  • Bestätigung ging verloren;
  • ursprüngliches Segment wurde am Aufzeichnungspunkt nicht erfasst;
  • Pakete trafen in anderer Reihenfolge ein;
  • Aufzeichnungssoftware verlor Pakete;
  • Daten wurden durch Offloading anders dargestellt;
  • Wireshark ordnete den Datenstrom heuristisch ein.

Wireshark-Analysefelder wie tcp.analysis.retransmission sind Analyseergebnisse und keine im TCP-Paket übertragenen Flags.


TCP Checksum Offloading berücksichtigen

Bei einer Aufzeichnung auf dem sendenden Host kann eine TCP-Prüfsumme als fehlerhaft erscheinen, obwohl das Netzwerkpaket später korrekt übertragen wird.

Mögliche Ursache:

  • die Netzwerkkarte berechnet die Prüfsumme erst nach dem Aufzeichnungspunkt;
  • TCP Segmentation Offload zerlegt große Datenblöcke erst in der Netzwerkkarte;
  • Generic Receive Offload oder Large Receive Offload fasst Daten zusammen.

Deshalb gilt:

Eine lokal als fehlerhaft angezeigte TCP-Prüfsumme
beweist ohne weitere Prüfung keinen Netzwerkfehler.

Zu vergleichen sind:

  • Aufzeichnung am sendenden Host;
  • Aufzeichnung auf einem externen Messpunkt;
  • Offloading-Anzeige des Analysewerkzeugs;
  • erfolgreiche und fehlerhafte Verbindungen.

TCP besitzt keine Anwendungs-Lebendigkeitsprüfung

Eine bestehende TCP-Verbindung kann im Zustand ESTABLISHED verbleiben, obwohl:

  • die Gegenstelle ausgefallen ist;
  • ein Kabel getrennt wurde;
  • eine Firewall den Sitzungszustand gelöscht hat;
  • der Netzwerkpfad nicht mehr funktioniert;
  • die Anwendung der Gegenstelle nicht mehr reagiert.

Solange keine Daten übertragen oder Prüfmechanismen ausgelöst werden, erkennt TCP einen solchen Zustand nicht zwingend sofort.

Mögliche zusätzliche Mechanismen sind:

  • TCP Keepalive;
  • anwendungsspezifische Heartbeats;
  • Request-Timeouts;
  • Health Checks;
  • Sitzungszeitüberschreitungen;
  • erneuter Verbindungsaufbau.

Ein TCP-Keepalive beweist nur eine Reaktion des TCP-Endpunkts. Es beweist nicht automatisch, dass die Anwendung fachlich gesund ist.


Timeout ist nicht gleich Timeout

Die Meldung „Timeout“ kann aus verschiedenen Ebenen stammen.

TimeoutartPhaseTypischer Befund
DNS-Timeoutvor TCPkein SYN zum eigentlichen Server
TCP-Connect-TimeoutHandshakeSYN bleibt unbeantwortet
TCP-Retransmission-TimeoutDatenübertragungunbestätigte Segmente werden wiederholt
TLS-Handshake-Timeoutnach TCP-AufbauTCP steht, TLS wird nicht abgeschlossen
Application-Read-Timeoutnach AnfrageTCP steht, erwartete Antwort fehlt
Application-Write-TimeoutDatenversandAnwendung kann nicht rechtzeitig schreiben
Proxy-Connect-TimeoutProxy zum BackendClient erreicht Proxy, Proxy nicht das Backend
Proxy-Read-TimeoutProxy wartet auf BackendBackendverbindung besteht, Antwort dauert zu lange
Firewall-Idle-Timeoutlängere InaktivitätSitzungszustand der Firewall wird entfernt
NAT-Idle-Timeoutlängere InaktivitätNAT-Zuordnung läuft ab
Load-Balancer-Idle-Timeoutlängere InaktivitätLoad Balancer verwirft inaktive Sitzung
TCP-Keepalive-TimeoutPrüfmechanismusGegenstelle reagiert nicht auf Keepalive-Probes
Anwendungsdeadlinebeliebige PhaseAnwendung bricht nach eigener Gesamtfrist ab

Vor einer Änderung muss festgestellt werden, welcher Zeitgeber tatsächlich abgelaufen ist.


Connect-Timeout erkennen

Typischer Ablauf:

Anwendung startet Verbindung
Client sendet SYN
keine verwertbare Antwort
SYN wird wiederholt
Anwendung meldet Timeout

Zu prüfen sind:

  • Zeitpunkt des ersten SYN;
  • Anzahl und Abstand der SYN-Wiederholungen;
  • Zeitpunkt der Anwendungsmeldung;
  • kommt ein SYN/ACK oder RST an?
  • erreicht das SYN den Server?
  • erreicht die Antwort den Client?
  • beendet die Anwendung den Versuch vor dem TCP-Stack?
  • versucht die Anwendung danach eine weitere Zieladresse?

Bei mehreren DNS-Adressen kann die Anwendung nacheinander oder parallel unterschiedliche Ziele versuchen. Die sichtbare Gesamtdauer muss daher nicht dem Timeout eines einzelnen TCP-Versuchs entsprechen.


Anwendungs-Timeout nach erfolgreichem Handshake

Typischer Ablauf:

SYN
SYN, ACK
ACK
Anwendungsanfrage
keine oder verspätete Anwendungsantwort
Anwendung meldet Timeout

TCP ist in diesem Fall grundsätzlich aufgebaut.

Mögliche Ursachen:

  • Serveranwendung verarbeitet die Anfrage zu langsam;
  • Backenddienst reagiert nicht;
  • Datenbankabfrage blockiert;
  • Thread- oder Workerpool ist erschöpft;
  • Empfangsfenster wird klein oder null;
  • Proxy wartet auf ein Backend;
  • falsches Anwendungsprotokoll;
  • Deadlock oder Ressourcensperre;
  • Antwortpakete gehen verloren;
  • Anwendung verwendet eine zu kurze Frist.

Die Diagnose darf nicht bei einem erfolgreichen Porttest enden.


Idle-Timeout erkennen

Typischer Ablauf:

TCP-Verbindung wird erfolgreich aufgebaut
Datenübertragung funktioniert
Verbindung bleibt längere Zeit inaktiv
erste neue Übertragung schlägt fehl
eine neue TCP-Verbindung funktioniert wieder

Mögliche Ursachen:

  • Firewall hat Sessiontabelleneintrag entfernt;
  • NAT-Zuordnung ist abgelaufen;
  • Load Balancer hat die Verbindung geschlossen;
  • Proxy hat seine Idle-Frist erreicht;
  • Serveranwendung hat die Sitzung beendet;
  • Client verwendet eine veraltete Verbindung aus einem Connection Pool;
  • TCP Keepalive ist nicht aktiv oder zu spät eingestellt.

Benötigter Nachweis:

  • genaue Dauer der Inaktivität;
  • Zeitpunkt der letzten erfolgreichen Datenübertragung;
  • Paketfolge beim ersten erneuten Sendeversuch;
  • Verhalten bei einer frisch aufgebauten Verbindung;
  • konfigurierte Idle-Timeouts aller Zwischenkomponenten;
  • Anwendungspool- und Keepalive-Konfiguration.

TCP Reset

Ein TCP-Reset wird durch das Flag RST signalisiert.

Ein Reset bedeutet grundsätzlich:

Diese TCP-Verbindung soll sofort zurückgesetzt werden
oder der angesprochene TCP-Zustand ist nicht gültig.

Im Unterschied zu einem geordneten Abbau mit FIN ist ein Reset ein abrupter Abbruch.

Mögliche Anwendungsmeldungen:

Connection reset by peer
ECONNRESET
An existing connection was forcibly closed by the remote host
Die Verbindung wurde vom Kommunikationspartner zurückgesetzt
SocketException: Connection reset

Die Formulierung „by peer“ bedeutet nicht zwingend, dass der eigentliche Anwendungsprozess der Gegenstelle den Reset absichtlich erzeugt hat. Der Reset kann stammen von:

  • Betriebssystem der Gegenstelle;
  • Anwendung;
  • lokalem Betriebssystem;
  • Firewall;
  • Load Balancer;
  • Reverse Proxy;
  • NAT-Gateway;
  • Intrusion-Prevention-System;
  • Service Mesh;
  • Container- oder Cloudnetzkomponente.

Typische Ursachen eines TCP Reset

  • Verbindung zu einem geschlossenen TCP-Port;
  • Anwendung bricht einen Socket ausdrücklich ab;
  • Prozess wird beendet oder stürzt ab;
  • Anwendung schließt mit ungelesenen Eingangsdaten;
  • ungültiges Segment für eine nicht mehr existierende Verbindung;
  • Gegenstelle hat den Verbindungszustand verloren;
  • Host wurde neu gestartet;
  • alte Verbindung wird nach längerer Inaktivität erneut verwendet;
  • Firewall oder Load Balancer hat den Sitzungszustand entfernt;
  • Proxy lehnt eine Verbindung oder Anfrage ab;
  • Backend ist nicht verfügbar;
  • Protokoll wird auf dem falschen Port verwendet;
  • Sicherheitskomponente beendet die Sitzung;
  • Verbindungslimit oder Ressourcenlimit wurde erreicht;
  • Zeitüberschreitung führt zu einem erzwungenen Abbruch;
  • fehlerhafte NAT- oder Sessionzuordnung;
  • Paket gehört zu einer früheren Verbindung mit wiederverwendetem Port;
  • Anwendung verwendet eine abortive Socket-Schließung.

Nicht jede Prozessbeendigung erzeugt zwingend einen Reset. Abhängig vom Socketzustand und Betriebssystem kann auch ein kontrollierter FIN-Abbau erfolgen.


Reset während des Handshakes

Paketfolge:

Client → Server  SYN
Server → Client  RST, ACK

Mögliche Einordnung:

  • kein Listener auf dem Zielport;
  • Firewall lehnt aktiv ab;
  • Portweiterleitung zeigt auf geschlossenen Port;
  • Load Balancer lehnt ab;
  • falsche Zieladresse;
  • Dienst wurde beendet;
  • Listener existiert nur auf einer anderen lokalen Adresse;
  • IPv4-/IPv6-Bindung passt nicht.

Nächster Nachweis:

  • Listener direkt auf dem Zielsystem prüfen;
  • Prozessbesitzer bestimmen;
  • Zieladresse und Adressfamilie bestätigen;
  • Paketaufzeichnung auf Serverseite durchführen;
  • Firewall- und NAT-Pfad prüfen.

Reset unmittelbar nach erfolgreichem Handshake

Paketfolge:

SYN
SYN, ACK
ACK
RST

Mögliche Ursachen:

  • Anwendung akzeptiert und verwirft die Verbindung sofort;
  • Prozess- oder Workerlimit erreicht;
  • Zugriffskontrolle lehnt ab;
  • Proxy besitzt kein Backend;
  • Client beendet den Socket abrupt;
  • Server erwartet sofortige Protokolldaten;
  • Health Check verwendet ein unpassendes Protokoll;
  • Verbindungszustand ist zwischen Komponenten inkonsistent.

Zu prüfen sind:

  • wer sendet den Reset?
  • wird vor dem Reset Anwendungsnutzlast übertragen?
  • existiert im Serverlog eine passende Verbindung?
  • tritt der Fehler bei jedem Client auf?
  • funktioniert ein protokollspezifischer Test?

Reset nach Übertragung einer Anfrage

Paketfolge:

Handshake erfolgreich
Client sendet Anfrage
Server oder Zwischenkomponente sendet RST

Mögliche Ursachen:

  • ungültiges Anwendungsprotokoll;
  • TLS-Daten an einem Klartextport;
  • Klartextdaten an einem TLS-Port;
  • fehlerhafte oder verbotene Anfrage;
  • Anwendung stürzt bei der Verarbeitung ab;
  • Proxy oder WAF beendet die Verbindung;
  • maximale Anfragegröße überschritten;
  • Sicherheitsrichtlinie löst aus;
  • Backend schließt abrupt;
  • Server liest die Anfrage nicht vollständig;
  • Client sendet weiter, nachdem der Server bereits geschlossen hat.

Der Inhalt unmittelbar vor dem Reset ist für die Ursachenbestimmung besonders wichtig.


Reset nach längerer Inaktivität

Typischer Ablauf:

Verbindung ist ESTABLISHED
keine Übertragung über längere Zeit
Client sendet neue Daten
RST wird empfangen

Mögliche Ursache:

  • Zwischenkomponente hat den Sitzungszustand gelöscht;
  • Server hat die Verbindung lokal bereits beendet;
  • Anwendung verwendet einen veralteten Socket;
  • Connection Pool prüft die Verbindung vor Wiederverwendung nicht;
  • Idle-Timeouts verschiedener Komponenten sind nicht abgestimmt.

Zu vergleichen sind:

  • TCP-Keepalive;
  • Anwendungsheartbeat;
  • Firewall-Idle-Timeout;
  • NAT-Timeout;
  • Proxy-Timeout;
  • Load-Balancer-Timeout;
  • Connection-Pool-Lebensdauer.

Reset nach Wiederholungen

Möglicher Ablauf:

Daten werden gesendet
Bestätigung fehlt
Daten werden wiederholt
weitere Wiederholungen
RST oder lokaler Verbindungsabbruch

Ein Reset nach Wiederholungen kann bedeuten:

  • Netzwerkpfad war unterbrochen;
  • Gegenstelle hat den Zustand verloren;
  • Anwendung oder Betriebssystem gibt die Verbindung auf;
  • eine Zwischenkomponente reagiert auf eine nicht mehr bekannte Sitzung;
  • Prozess wurde während des Fehlers beendet.

Die zeitliche Reihenfolge muss genau ausgewertet werden. Der Reset kann Folge und nicht Ursache des ursprünglichen Problems sein.


Reset-Absender bestimmen

In der Clientaufzeichnung ist zunächst die Quelladresse des Reset-Segments sichtbar. Sie ist jedoch nicht immer ein eindeutiger Beweis für den tatsächlichen Erzeuger.

Zwischenkomponenten können:

  • mit der Adresse des Servers antworten;
  • Verbindungen stellvertretend terminieren;
  • NAT-Adressen verwenden;
  • einen eigenen TCP-Endpunkt darstellen;
  • Reset-Segmente erzeugen.

Belastbarer Nachweis:

  1. Aufzeichnung am Client.
  2. Aufzeichnung am Server.
  3. Zeitliche Synchronisation beider Systeme.
  4. Vergleich derselben TCP-Verbindung.
  5. Prüfung, ob der Reset den Server verlässt.
  6. Prüfung, ob der Server den Reset überhaupt empfängt.
  7. Protokolle von Firewall, Proxy und Load Balancer korrelieren.

Beispiel:

Client sieht einen RST.
Serveraufzeichnung zeigt keinen ausgehenden RST.
Firewallprotokoll zeigt eine aktive Sitzungsbeendigung.

Einordnung:
Der Reset wurde wahrscheinlich von der Firewall erzeugt.

Dies ist eine Schlussfolgerung aus mehreren Befunden und nicht allein aus der IP-Quelladresse.


FIN, RST und Timeout unterscheiden

BefundBedeutung
FINSender beendet seine Senderichtung geordnet.
RSTVerbindung wird abrupt zurückgesetzt.
TimeoutInnerhalb der erwarteten Frist kam keine verwertbare Reaktion.
ICMP-FehlerIP- oder Netzwerkebene meldet ein Problem.
AnwendungsfehlerTCP kann funktionieren, während das höhere Protokoll fehlschlägt.

Ein FIN bedeutet nicht zwingend, dass die gesamte Verbindung sofort beendet ist. TCP unterstützt einen geordneten Abbau je Richtung.


Verbindungsabbau zwischen Client und Server

Ein regulärer TCP-Abbau besteht logisch aus:

Teilnehmer A                                 Teilnehmer B

ESTABLISHED                                 ESTABLISHED
     |                                           |
     |  FIN, ACK                                 |
     |------------------------------------------>|
     |                                           |
FIN-WAIT-1                                  CLOSE-WAIT
     |                                           |
     |  ACK                                      |
     |<------------------------------------------|
     |                                           |
FIN-WAIT-2                                  CLOSE-WAIT
     |                                           |
     |  FIN, ACK                                 |
     |<------------------------------------------|
     |                                           |
TIME-WAIT                                   LAST-ACK
     |                                           |
     |  ACK                                      |
     |------------------------------------------>|
     |                                           |
TIME-WAIT                                     CLOSED
     |
     | nach Ablauf der Wartezeit
     |
  CLOSED

Dies wird häufig als Four-Way Termination bezeichnet.

In einer echten Aufzeichnung müssen nicht immer vier getrennte Pakete sichtbar sein. ACK und FIN können kombiniert werden.


FIN verbraucht eine Sequenznummer

Wie SYN verbraucht auch FIN eine Sequenznummer.

Beispiel:

Teilnehmer A sendet:
FIN, Seq = 5000

Teilnehmer B bestätigt:
ACK = 5001

Das FIN signalisiert:

Ich werde in dieser Richtung keine weiteren Daten mehr senden.

Die Gegenrichtung kann abhängig vom Anwendungs- und Socketzustand noch Daten übertragen.


Half-Close

Bei einem Half-Close wurde nur eine Senderichtung geordnet geschlossen.

Beispiel:

Client sendet FIN.
Server bestätigt FIN.
Server sendet weiterhin verbleibende Antwortdaten.
Server sendet später sein eigenes FIN.

Half-Close ist nicht dasselbe wie eine Half-Open Connection.

BegriffBedeutung
Half-CloseEine Richtung wurde geordnet mit FIN beendet.
Half-OpenBeide Endpunkte besitzen unterschiedliche Vorstellungen darüber, ob die Verbindung noch existiert.

Eine Half-Open Connection kann beispielsweise entstehen, wenn ein System neu startet und den früheren TCP-Zustand verliert, während die Gegenstelle die Verbindung weiterhin als vorhanden betrachtet.


TCP-Zustände beim Verbindungsabbau

ZustandBedeutung
FIN-WAIT-1Lokales FIN wurde gesendet; Bestätigung oder FIN der Gegenstelle steht aus.
FIN-WAIT-2Lokales FIN wurde bestätigt; FIN der Gegenstelle steht aus.
CLOSE-WAITFIN der Gegenstelle wurde empfangen; lokale Anwendung hat noch nicht geschlossen.
CLOSINGBeide Seiten haben nahezu gleichzeitig FIN gesendet.
LAST-ACKLokales FIN wurde nach empfangenem FIN gesendet; abschließendes ACK steht aus.
TIME-WAITEndpunkt wartet, damit verspätete Segmente einer alten Verbindung nicht falsch zugeordnet werden.
CLOSEDVerbindung ist vollständig beendet.

CLOSE-WAIT richtig interpretieren

CLOSE-WAIT bedeutet:

Die Gegenstelle hat ihre Senderichtung geschlossen.
Das lokale Betriebssystem wartet darauf,
dass die lokale Anwendung ihren Socket schließt.

Viele dauerhaft vorhandene CLOSE-WAIT-Sockets können hinweisen auf:

  • Anwendung liest EOF, schließt aber nicht;
  • Fehler im Connection-Handling;
  • blockierte Threads;
  • fehlende Fehlerbehandlung;
  • Ressourcenleck;
  • Anwendung wartet auf einen internen Vorgang;
  • Prozess reagiert nicht.

CLOSE-WAIT wird nicht durch das bloße Ändern eines TCP-Timers behoben. Zuerst müssen Prozess und Anwendungscode beziehungsweise Herstellerprotokolle geprüft werden.


FIN-WAIT-2 richtig interpretieren

FIN-WAIT-2 bedeutet:

Die lokale Seite hat ihre Senderichtung geschlossen.
Die Gegenstelle hat dies bestätigt,
aber noch kein eigenes FIN gesendet.

Mögliche Ursachen bei ungewöhnlich langen Beständen:

  • Gegenanwendung hält ihre Senderichtung offen;
  • Anwendung wartet auf weitere Verarbeitung;
  • Gegenprozess reagiert nicht;
  • Half-Close wird absichtlich verwendet;
  • Netzwerk- oder Zustandsproblem.

Ein kurzfristiger FIN-WAIT-2-Zustand ist nicht automatisch fehlerhaft.


TIME-WAIT richtig interpretieren

TIME-WAIT schützt unter anderem davor, dass verspätete Segmente einer alten Verbindung einer späteren Verbindung mit denselben Endpunkten zugeordnet werden.

Viele TIME-WAIT-Einträge können bei folgenden Arbeitslasten normal sein:

  • viele kurze HTTP-Verbindungen;
  • häufige Health Checks;
  • Proxy- oder API-Aufrufe;
  • fehlendes oder nicht genutztes Connection Pooling;
  • Lasttests;
  • Microservice-Kommunikation.

Zu prüfen sind:

  • Rate neuer Verbindungen;
  • Wiederverwendung bestehender Verbindungen;
  • Quellportbestand;
  • Verbindungslaufzeit;
  • Baseline;
  • Anwendungskonfiguration.

TIME-WAIT darf nicht vorsorglich durch aggressive Timeränderungen beseitigt werden.


Windows: TCP-Zustände prüfen

LESEND

Alle TCP-Verbindungen:

Get-NetTCPConnection |
  Sort-Object State, LocalPort

Verbindungen im Zustand SYN-SENT:

Get-NetTCPConnection `
  -State SynSent

Verbindungen im Zustand SYN-RECEIVED:

Get-NetTCPConnection `
  -State SynReceived

Aufgebaute Verbindungen:

Get-NetTCPConnection `
  -State Established

CLOSE-WAIT:

Get-NetTCPConnection `
  -State CloseWait

TIME-WAIT:

Get-NetTCPConnection `
  -State TimeWait

Bestimmten entfernten Port prüfen:

Get-NetTCPConnection `
  -RemotePort 443 |
  Select-Object `
    LocalAddress,
    LocalPort,
    RemoteAddress,
    RemotePort,
    State,
    OwningProcess

Serververbindungen eines lokalen Ports:

Get-NetTCPConnection `
  -LocalPort 443 |
  Select-Object `
    LocalAddress,
    LocalPort,
    RemoteAddress,
    RemotePort,
    State,
    OwningProcess

Kurzlebige Zustände können zwischen zwei Abfragen verschwinden. Eine Paketaufzeichnung ist für die vollständige zeitliche Reihenfolge zuverlässiger.


Windows: Prozess zuordnen

LESEND

Get-NetTCPConnection `
  -RemotePort 443 |
  ForEach-Object {
    $connection = $_
    $process = Get-Process `
      -Id $connection.OwningProcess `
      -ErrorAction SilentlyContinue

    [pscustomobject]@{
      LocalAddress  = $connection.LocalAddress
      LocalPort     = $connection.LocalPort
      RemoteAddress = $connection.RemoteAddress
      RemotePort    = $connection.RemotePort
      State         = $connection.State
      ProcessId     = $connection.OwningProcess
      ProcessName   = $process.ProcessName
    }
  }

Ein Prozess kann zwischen Socketabfrage und Prozessabfrage bereits beendet sein. Fehlende Prozessinformationen müssen deshalb mit Zeitpunkt und Ereignisprotokollen korreliert werden.


Windows: TCP-Verbindung aktiv testen

NETZAKTIV

Test-NetConnection `
  -ComputerName "app.example.test" `
  -Port 443 `
  -InformationLevel Detailed

Wichtige Felder:

  • ComputerName;
  • RemoteAddress;
  • RemotePort;
  • InterfaceAlias;
  • SourceAddress;
  • TcpTestSucceeded.

TcpTestSucceeded = True bestätigt einen erfolgreichen TCP-Verbindungsaufbau für diesen Versuch. Es bestätigt nicht die Funktion von TLS, HTTP oder der eigentlichen Anwendung.

Getrennte Prüfung einer konkreten Adresse:

Test-NetConnection `
  -ComputerName "192.0.2.25" `
  -Port 443 `
  -InformationLevel Detailed

Windows: TCP-Statistiken prüfen

LESEND

netstat -s -p tcp

IPv6-TCP-Statistiken:

netstat -s -p tcpv6

Verfügbare Leistungsindikatoren suchen:

Get-Counter `
  -ListSet "*TCP*"

Die Namen der Leistungsindikatoren können von Sprache und Windows-Version abhängen.

Zähler müssen über einen definierten Zeitraum als Differenz oder Rate ausgewertet werden. Ein hoher kumulierter Wert seit dem Systemstart beweist keine aktuelle Störung.


Windows: Paketaufzeichnung mit pktmon

pktmon verändert den Aufzeichnungszustand und erstellt Dateien.

SENSITIV · ÄNDERND

Vorhandene Aufzeichnung stoppen:

pktmon stop

Vorhandene Filter entfernen:

pktmon filter remove

Filter für TCP-Port 443 anlegen:

pktmon filter add TCP443 -t TCP -p 443

Aufzeichnung starten:

pktmon start --capture --pkt-size 0 --file-name C:\Temp\tcp443.etl

Nach reproduziertem Fehler stoppen:

pktmon stop

In PCAPNG konvertieren:

pktmon etl2pcap C:\Temp\tcp443.etl --out C:\Temp\tcp443.pcapng

Temporären Filter entfernen:

pktmon filter remove

Voraussetzungen:

  • Zielverzeichnis existiert;
  • ausreichend freier Speicher ist vorhanden;
  • Aufzeichnungszeitraum ist begrenzt;
  • Datei wird geschützt gespeichert;
  • Filter und Aufzeichnungszustand werden anschließend zurückgesetzt.

Linux: TCP-Zustände mit ss prüfen

LESEND

Alle TCP-Sockets:

ss -tan

TCP-Sockets mit Prozessinformationen:

sudo ss -tanp

SYN-SENT:

ss -tan state syn-sent

SYN-RECEIVED:

ss -tan state syn-recv

Aufgebaute Verbindungen:

ss -tan state established

CLOSE-WAIT:

ss -tan state close-wait

TIME-WAIT:

ss -tan state time-wait

Erweiterte TCP-Informationen für Zielport 443:

sudo ss -tin \
  'dport = :443'

Erweiterte Informationen für einen lokalen Serverport:

sudo ss -tin \
  'sport = :443'

Je nach Zustand und Kernel können erweiterte Angaben enthalten sein:

  • RTT;
  • RTO;
  • Congestion Window;
  • Retransmissions;
  • Sendemenge;
  • Empfangsmenge;
  • Window Scaling;
  • MSS;
  • Timer.

Die konkrete Ausgabe hängt von Kernel und TCP-Zustand ab.


Linux: TCP-Zähler prüfen

LESEND

nstat -az

Bestimmte Zähler:

nstat -az TcpRetransSegs
nstat -az TcpAttemptFails
nstat -az TcpEstabResets

Zusätzliche klassische Statistik:

netstat -s

Zu beachten:

  • Zähler sind häufig kumulativ;
  • ein Reset-Zähler nennt nicht automatisch die betroffene Anwendung;
  • Container oder Netzwerk-Namespaces können eigene Sichten besitzen;
  • für eine aktuelle Störung sind Vorher-Nachher-Differenzen notwendig.

macOS: TCP-Zustände prüfen

LESEND

netstat -anv -p tcp

TCP-Verbindungen mit Prozesszuordnung:

sudo lsof -nP -iTCP

Aufgebaute TCP-Verbindungen:

sudo lsof \
  -nP \
  -iTCP \
  -sTCP:ESTABLISHED

Interaktive TCP-Ansicht:

nettop -m tcp

TCP-Statistiken:

netstat -s -p tcp

Kurzlebige Handshakezustände können auch unter macOS leichter mit einer Paketaufzeichnung als mit wiederholten Socketabfragen erfasst werden.


Aktive Tests unter Linux und macOS

TCP-Porttest:

NETZAKTIV

nc -vz app.example.test 443

Linux mit begrenzter Wartezeit, abhängig von der installierten nc-Variante:

nc -vz -w 5 app.example.test 443

macOS mit TCP-Verbindungsfrist:

nc -vz -G 5 app.example.test 443

HTTP- oder HTTPS-Test mit getrennten Fristen:

curl \
  --connect-timeout 5 \
  --max-time 15 \
  -v \
  https://app.example.test/

Bedeutung:

  • --connect-timeout begrenzt die Verbindungsphase;
  • --max-time begrenzt den gesamten Aufruf.

Ein Fehler nach erfolgreicher Connected-Meldung ist kein reiner TCP-Connect-Fehler mehr.


Paketaufzeichnung unter Linux

SENSITIV · LESEND

Auf Port 443 begrenzen:

sudo tcpdump \
  -ni any \
  'tcp port 443' \
  -c 200

Auf einen Host und Port begrenzen:

sudo tcpdump \
  -ni any \
  'host 192.0.2.25 and tcp port 443' \
  -c 200

Mit ausführlicheren TCP-Informationen in Datei schreiben:

sudo tcpdump \
  -ni any \
  -s 0 \
  -w /tmp/tcp443.pcap \
  'host 192.0.2.25 and tcp port 443'

Nach reproduziertem Fehler mit Strg+C beenden.

Die Datei enthält möglicherweise sensible Daten und muss anschließend geschützt ausgewertet und kontrolliert entfernt werden.


Paketaufzeichnung unter macOS

Verwendbare Schnittstellen anzeigen:

tcpdump -D

Auf einer konkreten Schnittstelle:

sudo tcpdump \
  -ni en0 \
  'host 192.0.2.25 and tcp port 443' \
  -c 200

Lokale Loopback-Verbindung:

sudo tcpdump \
  -ni lo0 \
  'tcp port 8080' \
  -c 200

In Datei schreiben:

sudo tcpdump \
  -ni en0 \
  -s 0 \
  -w /tmp/tcp443.pcap \
  'host 192.0.2.25 and tcp port 443'

Wireshark-Filter für TCP

Bestimmter Port:

tcp.port == 443

Bestimmte IP-Adresse und Port:

ip.addr == 192.0.2.25 && tcp.port == 443

Nur initiale SYN-Segmente:

tcp.flags.syn == 1 && tcp.flags.ack == 0

SYN/ACK:

tcp.flags.syn == 1 && tcp.flags.ack == 1

Reset:

tcp.flags.reset == 1

FIN:

tcp.flags.fin == 1

Vermutete Wiederholungen:

tcp.analysis.retransmission

Vermuteter Fast Retransmit:

tcp.analysis.fast_retransmission

Duplicate ACKs:

tcp.analysis.duplicate_ack

Zero Window:

tcp.analysis.zero_window

Ein bestimmter TCP-Datenstrom:

tcp.stream == 7

Die Nummer des TCP-Streams wird von Wireshark innerhalb der geöffneten Aufzeichnung vergeben und ist keine übertragene Protokollnummer.


Aufzeichnung richtig planen

Vor Beginn sind festzulegen:

Client:
<Hostname und IP-Adresse>

Server:
<Hostname und IP-Adresse>

Port:
<TCP-Port>

Zeitfenster:
<Start und Ende>

Testhandlung:
<genau ein reproduzierbarer Versuch>

Aufzeichnungspunkte:
<Client, Server und gegebenenfalls Zwischenkomponente>

Erwartete Paketfolge:
<SYN, SYN/ACK, ACK und Anwendungsdaten>

Fehlerkriterium:
<Timeout, RST, FIN oder fehlende Antwort>

Die Systemzeiten der beteiligten Geräte müssen ausreichend synchron sein. Anderenfalls können Client-, Server-, Firewall- und Proxyprotokolle nicht zuverlässig korreliert werden.


Aufzeichnung am Client und Server vergleichen

ClientaufzeichnungServeraufzeichnungMögliche Einordnung
SYN sichtbarSYN nicht sichtbarFehler vor dem Server
SYN sichtbarSYN sichtbarHinweg funktioniert
kein SYN/ACK am ClientSYN/ACK verlässt ServerRückweg oder Filterung
RST am ClientRST verlässt ServerServer oder Serveranwendung wahrscheinlich beteiligt
RST am Clientkein RST am ServerZwischenkomponente wahrscheinlich beteiligt
Daten am Client gesendetDaten erreichen ServerHinweg der Daten funktioniert
ACK fehlt am ClientACK verlässt ServerRückwegproblem
Server erhält ACK nichtClient sendet ACKFilterung oder asymmetrischer Pfad
FIN auf beiden SeitenFIN verlässt ursprünglichen Senderkontrollierter Abbau
unterschiedliche PaketfolgenÜbersetzung oder VerlustNAT, Proxy, Capturepunkt oder Netzwerkpfad prüfen

NAT, Firewall, Proxy und Load Balancer berücksichtigen

Eine Ende-zu-Ende-Verbindung kann tatsächlich aus mehreren getrennten TCP-Verbindungen bestehen.

Beispiel mit Reverse Proxy:

Client
→ TCP-Verbindung 1
→ Reverse Proxy
→ TCP-Verbindung 2
→ Backend

Ein Reset zwischen Proxy und Backend muss nicht als Reset zwischen Proxy und Client weitergegeben werden. Der Proxy kann stattdessen eine HTTP-Fehlerantwort erzeugen.

Beispiel mit NAT:

Client intern:        192.0.2.100:53124
NAT extern:           203.0.113.10:62000
Server:               198.51.100.25:443

Zu prüfen sind:

  • übersetzte Quelladresse;
  • übersetzter Quellport;
  • Sessiontabelleneintrag;
  • Ablaufzeit;
  • Rückweg;
  • Verbindung zum Backend;
  • getrennte Timeouts je TCP-Abschnitt;
  • welcher Abschnitt den Reset enthält.

Container und Kubernetes berücksichtigen

Eine TCP-Verbindung kann durch mehrere Netzwerk-Namespaces laufen:

Client
→ Hostport
→ Container-Netzwerk
→ Containersocket

oder:

Client
→ Load Balancer
→ Kubernetes-Service
→ Pod-IP
→ Anwendungscontainer

Zu prüfen sind:

  • Handshake am externen Endpunkt;
  • Handshake zum Backend;
  • Listener im Container oder Pod;
  • Host- und Containerport;
  • Service-port und targetPort;
  • Sidecar- oder Service-Mesh-Verbindung;
  • NetworkPolicy;
  • Readiness und EndpointSlices;
  • Reset innerhalb des Pods;
  • Reset am Ingress oder Gateway.

Ein erfolgreicher Handshake zum Load Balancer beweist keinen erfolgreichen Handshake zum Backend.


Typische Fehlermeldungen einordnen

MeldungMögliche TCP-Einordnung
Connection refusedhäufig Reset als Antwort auf SYN
Connection timed outHandshake oder Datenübertragung ohne rechtzeitige Antwort
Connection reset by peergültiger Reset wurde empfangen
Broken pipeSchreiben auf bereits geschlossene Verbindung
EOFGegenstelle hat den Datenstrom beendet
Operation timed outFrist der Anwendung oder Bibliothek abgelaufen
No route to hostRouting- oder lokal gemeldeter Erreichbarkeitsfehler
Network is unreachablekeine verwendbare Route
TLS handshake timeoutTCP möglicherweise erfolgreich, TLS nicht abgeschlossen
Read timed outVerbindung steht, erwartete Daten fehlen
Write timed outDaten konnten nicht innerhalb der Frist geschrieben werden

Der genaue Wortlaut hängt von Betriebssystem, Programmiersprache, Bibliothek und Anwendung ab.


Hypothese und Gegenbeweis

Beispiel für einen Connect-Timeout:

Hypothese:
Eine Netzwerkfirewall verwirft die SYN-Pakete zum TCP-Port 443.

Erwarteter Befund:
Der Client sendet wiederholt SYN-Pakete.
Der Server empfängt diese SYN-Pakete nicht.
Es wird weder SYN/ACK noch RST empfangen.

Gegenbeweis:
Die Serveraufzeichnung zeigt das eingehende SYN und ein ausgehendes SYN/ACK.

Testmethode:
Zeitgleich begrenzte Paketaufzeichnung auf Client und Server.

Erfolgskriterium:
Der genaue Punkt des Paketverlusts ist eingegrenzt.

Risiko:
Die Aufzeichnung enthält interne Verbindungsdaten und muss geschützt werden.

Beispiel für einen Reset:

Hypothese:
Der Reverse Proxy erzeugt den Reset, weil kein Backend verfügbar ist.

Erwarteter Befund:
Der Client-Handschlag mit dem Proxy ist erfolgreich.
Der Proxy kann keine Verbindung zum Backend aufbauen.
Der Client empfängt anschließend einen Reset.
Das Backend empfängt keinen Verbindungsversuch oder lehnt ihn ab.

Gegenbeweis:
Der Backend-Handschlag ist erfolgreich und der Reset verlässt nachweislich
das Backend.

Testmethode:
Aufzeichnungen und Protokolle an Client, Proxy und Backend korrelieren.

Kontrollierte Maßnahmen

MaßnahmeVoraussetzungRisiko
Listener starten oder Bindung korrigierenReset wegen fehlendem Listener bestätigtgeänderte Erreichbarkeit
Firewallregel korrigierenPaketverlust an der Firewall nachgewiesenunbeabsichtigte Freigabe
Rückweg korrigierenasymmetrischer oder fehlender Rückweg bestätigtweitere Netze können betroffen sein
NAT-Zuordnung korrigierenfalsche Übersetzung bestätigtbestehende Sitzungen werden beeinflusst
Proxy-Backend korrigierenfehlerhafter Backendpfad nachgewiesenproduktiver Datenverkehr wird umgeleitet
Idle-Timeout abstimmenSitzungsablauf nach Inaktivität bestätigtmehr Sitzungszustand und Ressourcenverbrauch
Connection-Pool-Lebensdauer anpassenWiederverwendung veralteter Verbindungen bestätigtmehr neue Verbindungen
Anwendungs-Timeout anpassenVerarbeitung dauert legitim länger und Ursache ist bekanntFehler werden eventuell später erkannt
TCP-Keepalive gezielt konfigurierenverwaiste Idle-Verbindungen bestätigtzusätzlicher Netzwerkverkehr
Anwendung korrigierenCLOSE-WAIT, abortives Schließen oder Absturz bestätigtDienstneustart oder Deployment erforderlich
Backendkapazität erhöhenRessourcenengpass nachgewiesenKosten und Betriebsänderung
Protokoll oder Zielport korrigierenfalsches Protokoll beziehungsweise falscher Port bestätigtClientkonfiguration ändert sich

Timeouts dürfen nicht pauschal verlängert werden, um Paketverlust, Deadlocks oder überlastete Backends zu verdecken.


Systematischer Diagnoseablauf

  1. Exakte Anwendungsmeldung aufnehmen.
  2. Datum, Uhrzeit und Zeitzone dokumentieren.
  3. Client, Server, Zielname und Zielport bestimmen.
  4. Verwendete IP-Adresse und Adressfamilie erfassen.
  5. Transportprotokoll bestätigen.
  6. Erwarteten Listener auf dem Server prüfen.
  7. Besitzenden Prozess bestimmen.
  8. Lokalen TCP-Test am Server durchführen.
  9. TCP-Test vom betroffenen Client durchführen.
  10. Socketzustand während des Versuchs beobachten.
  11. Prüfen, ob ein SYN erzeugt wird.
  12. Prüfen, ob der Server das SYN empfängt.
  13. Prüfen, ob SYN/ACK oder RST zurückgesendet wird.
  14. Prüfen, ob das abschließende ACK ankommt.
  15. Bei erfolgreichem Handshake Anwendungsdaten prüfen.
  16. Connect- und Anwendungs-Timeout unterscheiden.
  17. FIN und RST unterscheiden.
  18. Reset-Richtung und Reset-Zeitpunkt bestimmen.
  19. Client-, Server- und Zwischenprotokolle korrelieren.
  20. Retransmissions und Duplicate ACKs auswerten.
  21. Captureverlust und Offloading berücksichtigen.
  22. NAT-, Firewall- und Proxyzustand prüfen.
  23. Load Balancer und Backendverbindung getrennt prüfen.
  24. Container- und Netzwerk-Namespace berücksichtigen.
  25. Idle-Phase und Timeoutwerte dokumentieren.
  26. Frische und wiederverwendete Verbindung vergleichen.
  27. Hypothese und Gegenbeweis formulieren.
  28. Genau eine kontrollierte Maßnahme durchführen.
  29. Identischen Verbindungsversuch wiederholen.
  30. Anwendungsprotokoll vollständig verifizieren.
  31. Weitere repräsentative Clients prüfen.
  32. Temporäre Filter und Aufzeichnungen entfernen.
  33. Ursache, Maßnahme und Prävention dokumentieren.

Befundmatrix

BefundMögliche EinordnungNächster Nachweis
kein SYN sichtbarAnwendung, DNS oder lokaler SocketaufrufAnwendungstrace und Zieladresse
SYN wiederholt, keine AntwortDrop, Routing oder Rückwegserverseitige Aufzeichnung
SYN erreicht Server nichtNetzpfad vor dem ServerZwischenpunkte und Firewalllogs
SYN erreicht Server, kein SYN/ACKlokaler Filter, kein Listener oder ÜberlastungSocketliste und Servertrace
SYN wird mit RST beantwortetaktive AblehnungReset-Erzeuger und Listener prüfen
SYN/ACK verlässt Server, erreicht Client nichtRückweg oder FilterungClient- und Firewallaufzeichnung
SYN/ACK wird wiederholtabschließendes ACK fehltClientaufzeichnung
Handshake vollständigTCP-Connect funktioniertAnwendungsprotokoll prüfen
Handshake vollständig, keine NutzdatenAnwendung wartet oder startet Anfrage nichtAnwendungstrace
Anfrage gesendet, keine AntwortBackend oder Anwendung langsamServer- und Backendprotokolle
RST direkt nach HandshakeAnwendung oder Zwischenkomponente lehnt abReset-Sender und Logs
RST nach AnfrageProtokoll-, Anwendungs- oder SicherheitsfehlerDaten vor dem Reset auswerten
RST nach langer InaktivitätIdle-Timeout oder veralteter SocketTimeoutwerte und frische Verbindung
FIN nach Anfragekontrollierte SchließungAnwendungsergebnis prüfen
viele CLOSE-WAITlokale Anwendung schließt nichtProzess- und Threadanalyse
viele TIME-WAITviele kurzlebige VerbindungenVerbindungsrate und Pooling
viele SYN-SENTZiele antworten nichtZiel- und Pfadvergleich
viele SYN-RECEIVEDHandshake bleibt unvollständigServerwarteschlange und Clientpfad
Retransmissions nur in einer CapturedateiCaptureverlust oder Offloading möglichzweiter Aufzeichnungspunkt
frische Verbindung funktioniertalte Verbindung fehlerhaftIdle- und Poolingverhalten
Porttest funktioniert, TLS scheitertTCP funktioniert, TLS fehlerhaftTLS-Handshake analysieren
nur große Übertragung stocktVerlust, Window oder MTU möglichFolgeseite zu Retransmissions und MTU
nur ein Backend erzeugt ResetsBackend- oder Pfadproblemdirekte Backendtests
Reset am Client, nicht am ServerZwischenkomponente wahrscheinlichFirewall-, Proxy- und LB-Protokolle

Typische Diagnosefehler

  • Anwendungstimeout und TCP-Timeout gleichsetzen.
  • Einen erfolgreichen Ping als TCP-Nachweis verwenden.
  • Einen offenen TCP-Port als vollständigen Anwendungsnachweis bewerten.
  • Nur Test-NetConnection oder nc verwenden.
  • DNS-Zeit und TCP-Verbindungszeit vermischen.
  • Nur auf dem Client aufzeichnen.
  • Aus einer fehlenden Clientantwort schließen, dass der Server nichts gesendet hat.
  • Aus der RST-Quelladresse sicher auf den Erzeuger schließen.
  • Firewall, Proxy oder Load Balancer als Reset-Erzeuger ignorieren.
  • FIN und RST gleich behandeln.
  • CLOSE-WAIT durch Änderung von TCP-Timern beheben wollen.
  • TIME-WAIT pauschal als Fehler bewerten.
  • Wiederholungen ohne Sequenznummern und ACKs auswerten.
  • Duplicate ACKs automatisch als Paketverlust bewerten.
  • Wireshark-Analysemarkierungen als echte TCP-Flags interpretieren.
  • Checksum-Offloading ignorieren.
  • Captureverlust am Analysesystem ignorieren.
  • IPv4 und IPv6 nicht getrennt prüfen.
  • Client- und Serverzeit nicht synchronisieren.
  • NAT-Adressen und ursprüngliche Adressen verwechseln.
  • Proxyverbindung und Backendverbindung als eine einzige TCP-Verbindung behandeln.
  • Host-, Container- und Pod-Namespace verwechseln.
  • Veraltete Verbindung aus einem Pool nicht berücksichtigen.
  • Idle-Timeout ohne Messung vermuten.
  • Timeout pauschal erhöhen.
  • TCP Keepalive als Nachweis der Anwendungsgesundheit betrachten.
  • Firewall vollständig deaktivieren.
  • Prozess vorsorglich beenden.
  • Server vorsorglich neu starten.
  • mehrere Einstellungen gleichzeitig verändern.
  • Paketaufzeichnung ohne Filter laufen lassen.
  • sensible Capturedateien ungeschützt speichern.
  • nach der Maßnahme nur einen einzelnen erfolgreichen Versuch prüfen.

Verifikation

Nach einer Maßnahme müssen mindestens folgende Punkte geprüft werden:

  • Zielname wird zur richtigen Adresse aufgelöst;
  • richtige IPv4- oder IPv6-Adresse wird verwendet;
  • erwarteter TCP-Listener ist vorhanden;
  • richtiger Prozess besitzt den Listener;
  • SYN erreicht den Server;
  • SYN/ACK erreicht den Client;
  • abschließendes ACK erreicht den Server;
  • TCP-Verbindung erreicht ESTABLISHED;
  • keine unerwarteten Reset-Segmente entstehen;
  • Daten werden in beiden Richtungen übertragen;
  • ACKs bestätigen die erwarteten Sequenzbereiche;
  • Retransmissionsrate entspricht der Baseline;
  • Anwendung antwortet innerhalb der vorgesehenen Frist;
  • TLS funktioniert, sofern vorgesehen;
  • Proxy erreicht sein Backend;
  • Load Balancer verwendet gesunde Backends;
  • NAT- und Firewallzustand bleiben während der Sitzung bestehen;
  • wiederverwendete Verbindungen funktionieren;
  • Verhalten nach repräsentativer Inaktivität ist korrekt;
  • Verbindung wird kontrolliert beendet;
  • keine dauerhaft wachsenden CLOSE-WAIT-Bestände entstehen;
  • TIME-WAIT-Bestand ist zur Arbeitslast plausibel;
  • mehrere aufeinanderfolgende Versuche funktionieren;
  • weitere repräsentative Clients funktionieren;
  • temporäre Capturefilter wurden entfernt;
  • Aufzeichnungen wurden geschützt oder kontrolliert gelöscht;
  • Ursache, Maßnahme und Prävention wurden dokumentiert.

Ein einzelner erfolgreicher Three-Way Handshake ist keine vollständige Verifikation der Anwendung.


Dokumentationsvorlage

Störung:
<exakte Beschreibung>

Zeitpunkt:
<Datum, Uhrzeit und Zeitzone>

Client:
<Hostname und IP-Adresse>

Server:
<Hostname und IP-Adresse>

Zielname:
<FQDN>

Zielport:
<TCP-Port>

Adressfamilie:
<IPv4 oder IPv6>

Anwendung:
<Client- und Serveranwendung>

Exakte Fehlermeldung:
<Wortlaut>

Verwendete Quelladresse:
<Adresse und Port>

Verwendete Zieladresse:
<Adresse und Port>

Listener:
<Adresse, Port, Prozess und PID>

Handshake-Befund:
<SYN, SYN/ACK, ACK, RST oder fehlende Antwort>

Socketzustände:
<SYN-SENT, SYN-RECEIVED, ESTABLISHED und weitere>

Anwendungsdaten:
<gesendet, empfangen oder nicht sichtbar>

Timeoutart:
<DNS, Connect, TCP, TLS, Anwendung, Proxy oder Idle>

Timeoutdauer:
<gemessene Dauer>

Reset-Absender:
<nachgewiesener oder vermuteter Erzeuger>

Nachweis des Reset-Absenders:
<Client-, Server- und Zwischenaufzeichnung>

Retransmissions:
<Anzahl und Richtung>

FIN-Befund:
<kontrollierter Abbau oder fehlendes FIN>

Zwischenkomponenten:
<Firewall, NAT, Proxy, Load Balancer oder Service Mesh>

Nachgewiesene Ursache:
<technischer Befund>

Gegenbeweis ausgeschlossen durch:
<Test und Ergebnis>

Durchgeführte Maßnahme:
<genau eine kontrollierte Änderung>

Risiko und Rückweg:
<Beschreibung>

Verifikation:
<Handshake, Anwendungstest und weitere Systeme>

Prävention:
<Monitoring oder Konfigurationsverbesserung>

Checkliste

  •  exakte Fehlermeldung dokumentiert
  •  Datum, Uhrzeit und Zeitzone erfasst
  •  Client und Server bestimmt
  •  Zielname dokumentiert
  •  Zieladresse dokumentiert
  •  Quelladresse dokumentiert
  •  Quell- und Zielport erfasst
  •  IPv4 und IPv6 unterschieden
  •  TCP-Listener geprüft
  •  Prozessbesitzer bestimmt
  •  lokalen TCP-Test durchgeführt
  •  entfernten TCP-Test durchgeführt
  •  SYN sichtbar
  •  SYN/ACK oder RST ausgewertet
  •  abschließendes ACK geprüft
  •  Zustand SYN-SENT berücksichtigt
  •  Zustand SYN-RECEIVED berücksichtigt
  •  Zustand ESTABLISHED bestätigt
  •  TCP-Optionen bei Bedarf verglichen
  •  MSS geprüft
  •  Window Scaling berücksichtigt
  •  SACK-Unterstützung berücksichtigt
  •  Anwendungsdaten nach dem Handshake geprüft
  •  Sequenz- und Bestätigungsnummern ausgewertet
  •  Retransmissions geprüft
  •  Duplicate ACKs berücksichtigt
  •  Captureverlust ausgeschlossen
  •  Checksum-Offloading berücksichtigt
  •  Connect-Timeout bestimmt
  •  Anwendungs-Timeout bestimmt
  •  TLS-Timeout bei Bedarf berücksichtigt
  •  Proxy-Timeout bei Bedarf berücksichtigt
  •  Idle-Timeout berücksichtigt
  •  frische Verbindung getestet
  •  wiederverwendete Verbindung getestet
  •  TCP Keepalive bei Bedarf geprüft
  •  RST-Richtung bestimmt
  •  Reset-Absender eingegrenzt
  •  FIN und RST unterschieden
  •  Verbindungsabbau geprüft
  •  CLOSE-WAIT berücksichtigt
  •  FIN-WAIT-2 berücksichtigt
  •  TIME-WAIT berücksichtigt
  •  Clientaufzeichnung durchgeführt
  •  Serveraufzeichnung durchgeführt
  •  Firewallprotokolle korreliert
  •  NAT-Zustand berücksichtigt
  •  Proxy und Backend getrennt geprüft
  •  Load Balancer berücksichtigt
  •  Container- oder Pod-Namespace berücksichtigt
  •  Hypothese formuliert
  •  Gegenbeweis festgelegt
  •  Risiko und Rückweg dokumentiert
  •  nur eine kontrollierte Maßnahme durchgeführt
  •  identischen Test wiederholt
  •  Anwendungsprotokoll verifiziert
  •  weitere repräsentative Clients geprüft
  •  temporäre Filter entfernt
  •  Capturedateien geschützt oder entfernt
  •  Ursache und Prävention dokumentiert

Schnellreferenz

AufgabeBefehl oder Filter
Windows-TCP-VerbindungenGet-NetTCPConnection
Windows SYN-SENTGet-NetTCPConnection -State SynSent
Windows SYN-RECEIVEDGet-NetTCPConnection -State SynReceived
Windows ESTABLISHEDGet-NetTCPConnection -State Established
Windows CLOSE-WAITGet-NetTCPConnection -State CloseWait
Windows TIME-WAITGet-NetTCPConnection -State TimeWait
Windows-TCP-TestTest-NetConnection -ComputerName <Ziel> -Port <Port> -InformationLevel Detailed
Windows-TCP-Statistiknetstat -s -p tcp
Windows-Paketmonitorpktmon
Linux-TCP-Socketsss -tan
Linux-TCP-Detailssudo ss -tin
Linux SYN-SENTss -tan state syn-sent
Linux SYN-RECEIVEDss -tan state syn-recv
Linux ESTABLISHEDss -tan state established
Linux CLOSE-WAITss -tan state close-wait
Linux TIME-WAITss -tan state time-wait
Linux-TCP-Zählernstat -az
macOS-TCP-Socketsnetstat -anv -p tcp
macOS-Prozesszuordnungsudo lsof -nP -iTCP
macOS-Liveansichtnettop -m tcp
TCP-Porttestnc -vz <Ziel> <Port>
HTTP-/HTTPS-Testcurl --connect-timeout 5 --max-time 15 -v <URL>
Linux-Aufzeichnungsudo tcpdump -ni any 'tcp port <Port>' -c 200
macOS-Aufzeichnungsudo tcpdump -ni <Schnittstelle> 'tcp port <Port>' -c 200
Wireshark: Porttcp.port == <Port>
Wireshark: initiales SYNtcp.flags.syn == 1 && tcp.flags.ack == 0
Wireshark: SYN/ACKtcp.flags.syn == 1 && tcp.flags.ack == 1
Wireshark: Resettcp.flags.reset == 1
Wireshark: FINtcp.flags.fin == 1
Wireshark: Retransmissiontcp.analysis.retransmission
Wireshark: Fast Retransmittcp.analysis.fast_retransmission
Wireshark: Duplicate ACKtcp.analysis.duplicate_ack
Wireshark: TCP-Streamtcp.stream == <Nummer>

Befehle und Maßnahmen, die nicht unkontrolliert als erste Diagnose verwendet werden dürfen

Stop-Process
taskkill
Stop-Service
Restart-Service
netsh int ip reset
netsh winsock reset
Set-NetFirewallRule
New-NetFirewallRule
Deaktivieren der Windows-Firewall
kill
kill -9
systemctl stop
systemctl restart
sysctl -w
iptables
nft
ufw disable
firewall-cmd --permanent
docker restart
docker stop
kubectl delete
kubectl rollout restart
pauschales Erhöhen aller Timeouts
aggressives Verkürzen von TIME-WAIT
unkontrolliertes Aktivieren oder Ändern von TCP Keepalive
Deaktivieren von TCP-Offloading ohne Vergleichstest
Neustart von Firewall, Proxy oder Load Balancer

Ein Neustart kann TCP-Zustände, Sessiontabellen und den für die Diagnose wichtigen Ausgangszustand zerstören.


Quellen

Standards

Offizielle Microsoft-Dokumentation

Offizielle Linux-Dokumentation

Offizielle Wireshark-Dokumentation

Für diese Seite wurden keine Community-Berichte oder Social-Media-Aussagen als technische Nachweise verwendet.