한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Game-Lag-Whitepaper › L8 Sockets und Protokolle

Verlust der letzten Daten durch harten Abbruch per RST SO_LINGER, abrupt RST

Ursachen-ID sk-linger · Hauptzuständig Server-Entwicklung (Entwicklungsteam)

In der interaktiven Fassung mit Grafiken und Experimenten öffnen →

Trennt der Server eine Verbindung überstürzt, gehen der zuletzt gesendete Hinweis oder die Bestätigung des Speicherns verloren.

Warum Server schließt die Verbindung per hartem Abbruch (RST). Passiert, wenn SO_LINGER auf 0 s steht oder geschlossen wird, bevor alle empfangenen Daten gelesen sind → Folge Noch in Übertragung befindlicher Kick-Grund und letzte Daten werden verworfen → Auf dem Bildschirm Grundlos „Verbindung wegen eines unbekannten Fehlers getrennt“

Symptome
Verbindungsabbruch
Faktoren
Paketverlust
Wer ist betroffen
Nur ich
Wann
Gelegentlich, zufällig
Zuständigkeit
Hauptzuständig Server-Entwicklung (Entwicklungsteam)
Aufgaben Entwicklungsteam
Nach dem Senden des Grundes zuerst nur die Senderichtung schließen (shutdown), empfangene Daten bis zum Schließen der Gegenseite vollständig lesen und erst dann schließen, SO_LINGER mit 0 s vermeiden.
Im Graphen
Vereinzelte Spitzen ohne Muster · Per RST beendete Verbindungen
Wo nachsehen
Zuwachs von TcpExtTCPAbortOnData (per RST geschlossen, obwohl noch Daten zu senden waren, SO_LINGER 0 s) und TcpExtTCPAbortOnClose (mit ungelesenen Daten geschlossen) in nstat -az prüfen, im Moment der Trennung im Paketmitschnitt auf dem Server prüfen, ob ein RST hinausgeht und kein FIN
Spricht dafür
Zum Zeitpunkt der Meldungen „Verbindung wegen eines unbekannten Fehlers getrennt“ sendet der Server RST, und AbortOnData oder AbortOnClose steigen
Spricht dagegen
Server beendet die Verbindung normal per FIN, Grund wird trotzdem nicht angezeigt: Verbindungsabbau im Client
Prüfmittel
Mit Infrastruktur-Tools prüfbar (ohne Spielcode)

Quellen

  1. closesocket function (winsock.h) Microsoft
    Ist SO_LINGER aktiv und die Zeit auf 0 gesetzt, wird die Verbindung hart abgebrochen und sofort zurückgesetzt, nicht gesendete Daten gehen verloren
  2. RFC 9293: Transmission Control Protocol (TCP) IETF
    Wird mit noch ungelesenen empfangenen Daten geschlossen, sendet TCP ein RST, um den Datenverlust anzuzeigen
  3. Graceful Shutdown, Linger Options, and Socket Closure Microsoft
    Reihenfolge: mit shutdown zuerst nur die Senderichtung schließen, nach der Abschlussmeldung der Gegenseite den Socket schließen
  4. SNMP counter Linux kernel
    TcpExtTCPAbortOnData: per RST geschlossen, obwohl noch Daten zu senden waren (etwa durch SO_LINGER 0 s), TcpExtTCPAbortOnClose: mit ungelesenen Daten geschlossen und RST gesendet

Verwandte Ursachen

Gleiche Schicht: L8 Sockets und Protokolle

Ursachen aus anderen Schichten mit demselben Symptom (Verbindungsabbruch)

Karte in der interaktiven Fassung mit Grafiken und Experimenten ansehen