Frage Tcp Re-Übertragung Timeout in kürzester Zeit?


Ich habe zwei Windows 2012 R2-Computer (122 und 115) auf demselben VMWare-Host gehostet. Wir haben einen Herzschlag auf der Anwendungsebene zwischen diesen beiden Maschinen, von Zeit zu Zeit wird es eine erneute TCP-Übertragung geben. Basierend auf dem Wireshark-Protokoll sieht es so aus, als ob eine erneute Übertragung in 12-45 Millisekunden stattfindet und eine erneute Übertragung entweder auf 122 oder 115 stattfinden könnte. Beispielsweise sieht eines der letzten Protokolle (dieses Protokoll wird auf der 122-Maschine erfasst) aus :

  1. Um 10: 30: 42.654764 sendet 115 zu 122: PSH + ACK Seq = 28457 Ack = 26914 Win = 524032 Len = 59
  2. Um 10: 30: 42,668642 122 sendet an 115: ACK Seq = 26914 Ack = 28516 Win = 524800 Len = 0
  3. Um 10: 30: 42,668764 sendet 115 an 122: [Tcp-Neuübertragung] PSH + ACK Seq = 28457 Ack = 26914 Win = 524032 Len = 59
  4. Um 10: 30: 42,668787 sendet 122 zu 115: ACK Seq = 26914 Ack = 28516 Win = 524800 Len = 0 SLE = 28457 SRE = 28516

Es sieht so aus, als ob 115 denkt, dass 122 nach 34 Millisekunden abgelaufen ist (selbst wenn 122 etwas früher reagiert) und dann eine erneute Übertragung versucht. Ich habe versucht, diese Zeitüberschreitung bei der Übertragung in der Registrierung ohne Erfolg zu finden. (Ich suchte etwas wie InitialRtt) Meine Fragen:

  1. Ist 34 Millisekunden Standard?
  2. Könnte VMWare damit etwas zu tun haben?
  3. Gibt es irgendeinen Grund, warum 122 im ACK langsam ist? (Die Software an beiden Enden ist von uns codiert, aber glaube nicht, dass wir jemals versuchen, diesen Wert anzupassen, da könnte ich falsch liegen, da ich den Code nicht selbst geschrieben habe).

1
2018-05-10 17:51


Ursprung




Antworten:


Bei etablierten TCP-Verbindungen werden Zeitlimits für die erneute Übertragung abhängig von der RTT der Verbindung zwischen Client und Server dynamisch berechnet. Im Wesentlichen wird TCP versuchen herauszufinden, wie lange es vernünftigerweise warten sollte, bis ein ACK für ein Paket, das es gesendet hat, zu hören ist. Wenn dieser Timer abläuft, wird eine erneute Übertragung ausgelöst.

Basierend auf Ihrem Beispiel können wir annehmen, dass 122 ein Paket von 115 empfängt. 122 sendet ein ACK für dieses Paket, erreicht aber nie 115. 115 denkt, dass sein ursprüngliches Paket nie von 122 empfangen wurde, sendet es also erneut, nachdem der Neuübertragungszeitgeber abgelaufen ist. 122 empfängt diese Neuübertragung und sendet eine weitere ACK.

Ich hoffe, das hilft.


0
2018-05-17 17:40