Kein SYN-ACK-Paket vom Server

Kein SYN-ACK-Paket vom Server

Ich habe zwei Server und verwende mein eigenes eingebettetes System mit LwIP, um eine Verbindung zu diesen Servern herzustellen.

Mein eingebettetes System mit LwIP ist der Client und ich habe Server1 und Server2. Ich habe eine Verbindung mit Server1 hergestellt und die Verbindung beendet, bevor ich eine Verbindung mit Server2 hergestellt habe.

Weitere Aufschlüsselung des Flusses:

  1. Client erstellt neuen Socket mit Server1
  2. Der Client hat ein DNS-Paket gesendet, um die IP-Adresse von Server1 abzurufen; ACK vom AP erhalten
  3. Client sendet TCP-SYN-Paket;
  4. Server1 sendet TCP SYN-ACK und führt einige Datenübertragungen durch
  5. Der Client beendet die Verbindung mit Server1 durch Senden eines TCP-RST-Pakets und schließt den Socket.
  6. Client erstellt neuen Socket mit Server2
  7. Der Client hat ein DNS-Paket gesendet, um die IP-Adresse von Server2 abzurufen; ACK vom AP erhalten
  8. Client sendet TCP-SYN-Paket an Server2
  9. Server2 sendet TCP SYN-ACK und führt einige Datenübertragungen durch
  10. Der Client beendet die Verbindung mit Server2 durch Senden eines TCP-RST-Pakets und schließt den Socket.

Manchmal antwortet Server2 jedoch nicht auf das SYN-Paket des Clients, das sich in Schritt 9 befindet. Das passiert nur manchmal. Ich habe in mehreren Foren nachgesehen, zum Beispiel:

[1]Warum sendet ein Server kein SYN/ACK-Paket als Antwort auf ein SYN-Paket?

[2]Der Server sendet kein SYN/ACK-Paket als Antwort auf ein SYN-Paket

Mein Code ermöglicht keine Fensterskalierung. Ich kann den Server nicht überprüfen, da es sich um einen privaten Server handelt, daher bin ich mir nicht sicher, ob er gelöscht wurde. Meine Umgebung ist ziemlich laut und ausgelastet mit vielen Routern und Kommunikationsgeräten. Dieses Problem tritt nur in lauten Umgebungen auf, nicht aber in saubereren Umgebungen.

Was kann ich als Kunde tun, um dieses Problem zu beheben?

Antwort1

Einige Ideen, warum Ihr Server manchmal nicht mit SYN-ACK antwortet:

  • Die Anwendung auf dem Server wird gestoppt, wenn das SYN-Paket gesendet wird: Dies kann zu einem Absturz führen und dann mit einem automatischen Neustartmechanismus des Programms wieder funktionieren. Wenn die Server-Anwendung gestoppt wird oder abstürzt, wird der TCP-Listening-Socket geschlossen, sodass das Betriebssystem nicht antwortet.
  • Ihr Server hat Probleme, Ihren Client wieder zu finden. Das kann ein Routing-Problem oder asymmetrisches Routing sein (dies unterbricht die Firewall).
  • Wenn sich Client und Server im selben Netzwerk befinden, kann es zu Problemen mit Layer 2 wie dem Spanning Tree-Protokoll oder ARP kommen.
  • Paketverlust im Netzwerk: Ihr SYN- oder SYN-ACK-Paket wird gelöscht.
  • Der Server ist überlastet und kann manchmal nicht auf Ihr SYN-Paket antworten.

Es kann viele Gründe geben, warum der Server auf SYN-Pakete nicht antwortet.

Was ich tun werde:

  • Führen Sie einige TCPdumps auf dem Server aus, um das Netzwerk zu überprüfen: Empfängt der Server das SYN-Paket oder liegt vorher ein Problem im Netzwerk vor? Generiert und sendet der Server ein SYN-ACK-Paket? Und arbeiten Sie von dort aus weiter.
  • Wenn Sie keinen Zugriff auf den Server haben, tun Sie dasselbe auf dem nächstgelegenen Router/der nächstgelegenen Firewall.
  • Kontaktieren Sie jemanden, der Zugriff auf den Server hat.

verwandte Informationen