Wir haben eine Serveranwendung, bei der bei rund 4000 Verbindungen Probleme mit der TCP-Erschöpfung auftreten. Dies geschieht alle 3 oder 4 Wochen (ungefähr). Der Anbieter, der diese Serveranwendung erstellt hat, teilt uns nach Prüfung der Ausgabe von netstat -b mit, dass einige Verbindungen auch dann offen bleiben, wenn die Clients unterbrochen wurden.
Ich habe die Aufgabe erhalten zu untersuchen, warum eine bestimmte Clientanwendung die TCP-Verbindung nicht ordnungsgemäß schließt. Ich bin der Überzeugung, dass ein heruntergefahrener Client-Computer möglicherweise NICHT vom Server melden kann, dass mit diesem Client noch eine TCP-Verbindung hergestellt wurde. Leider kann ich keine Informationen finden, um meine Ansicht zu bestätigen. Ich möchte keine Zeit mehr damit verschwenden, ein potenzielles Problem zu untersuchen, von dem ich nicht glaube, dass es überhaupt ein Problem sein kann.
tldr;
Kann ein Server eine hergestellte Verbindung zu einem Computer melden, der ausgeschaltet ist?
quelle
Ja, es ist möglich. Wie David und Paul in ihren Antworten angegeben haben, gibt es in TCP keinen Mechanismus (außer TCP-Keep-Alives, die optional sind), um eine halboffene Verbindung zu erkennen. Es ist Sache des Anwendungsherstellers, den Verbindungsstatus zu bestimmen und entsprechende Maßnahmen zu ergreifen.
In Bezug auf TCP gibt es keine Erkennung oder Unterscheidung zwischen einer halboffenen Verbindung und einer langen Leerlaufverbindung.
Sie müssen mit der Fehlerbehebung von Schicht 1 (physisch) des OSI-Modells bis Schicht 7 (Anwendung) beginnen, um herauszufinden, wo das Problem auftritt. Mein Rat wäre, ein Paketerfassungsprogramm auf einem der betroffenen Clients zu installieren und auszuführen, bis das Problem auftritt, und dann die Erfassung zu analysieren, um festzustellen, warum der Client die Verbindung nicht schließt.
quelle
Wenn eine Workstation eine Verbindung mit einem Server schließen möchte, sendet sie eine TCP-FIN. Wenn sich der Client nicht ordnungsgemäß verhält und seine Verbindungen nicht schließt, können sie tatsächlich auf dem Server eingerichtet bleiben. Sie können Zeitüberschreitungen für offene Verbindungen auf dem Server festlegen, um diese zu bereinigen. Es ist jedoch besser, die Ursache zu ermitteln. In welchen Port kommen die offenen Verbindungen? Sobald Sie wissen, auf welchen Dienst zugegriffen wird, können Sie möglicherweise die Client-App identifizieren, die auf den Server trifft.
quelle