Was passiert mit TCP-Verbindungen, wenn ich das Ethernet-Kabel entferne?

41

Wenn ich bei einer TCP-Verbindung das Kabel entferne und nach 30-40 Sekunden erneut eine Verbindung herstelle, treten keine Probleme mit Paketverlusten auf. Wenn die Wiederverbindungszeit jedoch einige Minuten überschreitet, gehen alle Pakete verloren. Ich weiß, dass es funktioniert, wenn der Timer für die erneute Übertragung abgelaufen ist, aber ich möchte wissen, was genau passiert, wenn ein Netzwerkkabel abgezogen wird.

Eingabe J
quelle
8
"was genau geht" wird sehr schwer zu beantworten sein. Heutzutage kann das Betriebssystem „clevere“ Dinge tun, beispielsweise das Erkennen, dass das Kabel entfernt wurde. Löschen der Routen zu diesem Netzwerk aus der Routing-Tabelle. Aktivieren neuer Routen über Funk, .... All dies steht einer einfachen universellen Erklärung im Wege.
Hennes
5
Haben Sie im Bit-Eimer nach Ihren fehlenden Paketen gesucht?
Daniel R Hicks
3
Eine Sache , die sicher passieren kann , ist , dass Ihre aktuelle Kommunikation in der Mitte unterbrochen werden als
Ereon
Dies hängt vom Betriebssystem und seiner Konfiguration ab. Versuchen Sie für MS Windows zu googeln windows mediasense.
Zaboj Campula

Antworten:

59

Per Definition auf einem Schichtenmodell als OSI oder TCP / IP arbeitet jede Schicht unabhängig und kennt die unteren Schichten nicht.

Wenn Sie das Kabel entfernen, ist es eine physische Störung ( Schicht 1 ), so dass fast inmediately Ethernet ( Schicht 2 ) erkennt einen Signalverlust (wenn Sie unter Windows sind Sie sehen das sehr gefürchtete Pop-up informiert Netzwerk getrennt )

IP ( Schicht 3 ) und TCP ( Schicht 4 ) bemerken es nicht und versuchen, weiterzuarbeiten.

TCP unterbricht eine hergestellte TCP-Verbindung während eines bestimmten Zeitraums nicht, da TCP beim Senden von Daten eine ACK als Antwort erwartet und die Daten erneut überträgt, wenn sie nicht innerhalb eines bestimmten Zeitraums eintreffen.

TCP überträgt die Daten erneut und übergibt sie an IP. Er übergibt sie an Ethernet. Er kann sie nicht senden und sie einfach verwerfen.

TCP wartet erneut und wiederholt diesen Vorgang, bis eine Zeitüberschreitung eintritt, die angibt, dass die Verbindung beendet ist. TCP setzt die Segmentsequenznummer zurück, verwirft die Informationen, die gesendet wurden, und gibt die für diese Verbindung zugewiesenen Puffer- und Speicherressourcen frei.

Stecken Sie das Kabel ein, bevor es passiert, und alles wird weitergehen. Dies macht TCP zuverlässig und gleichzeitig anfällig für DDos-Angriffe.

Wenn das Betriebssystem über mehrere Schnittstellen verfügt (z. B. Ethernet und Wi-Fi), kann es vorkommen, dass beim Ausfall des Ethernets ein Versuch über WLAN unternommen wird. Es hängt davon ab, wie das Routing konfiguriert ist, aber im Allgemeinen wird " TCP das nicht merken ".

Die Grundstruktur von DDoS-Angriffen lautet: Tausende von Clients öffnen alle paar Sekunden eine TCP-Verbindung zu einem Server und beenden dann die Verbindung. Jede TCP-Verbindung bleibt auf dem Server für eine lange Zeit offen (Verschwendung wertvoller Ressourcen wie TCP-Ports, zugewiesener Speicher, Bandbreite usw.), wodurch die Serverressourcen verstopft werden, um legitime Benutzer zu bedienen.

jcbermu
quelle
7
Das sagt das Modell, aber ich glaube, dass echte Betriebssysteme einige Fehler erkennen und Verbindungen sofort beenden . Das ist nur eine nützliche Sache.
USR
7
@usr Warum ist es nützlich, jede Verbindung zu trennen, nur weil jemand den Ethernet-Switch, mit dem mein PC verbunden ist, aus- und wieder einschaltet?
ein Lebenslauf
9
@usr Das Deaktivieren der Netzwerkkarte über die Verwaltungsschnittstellen des Betriebssystems ist ein völlig anderer Vorgang als das physische Abziehen des Kabels oder das sonstige Unterbrechen der physischen Verbindung. Bitte verwechseln Sie die beiden nicht.
ein Lebenslauf
7
Auch wenn Sie keine TCP-Daten senden, während das Kabel nicht angeschlossen ist, wird dies nie bemerkt. Aus diesem Grund müssen Sie weiterhin Keep-Alive-Nachrichten senden - Anwendungen, die nur empfangsbereit sind, werden nie erfahren, ob die Verbindung unterbrochen wird. Auf der positiven Seite bedeutet dies auch, dass, wenn keine Seite versucht hat, etwas zu senden, während das Kabel ausgesteckt war, die Verbindung einwandfrei funktioniert, nachdem das Kabel wieder eingesteckt wurde. TCP wird anders verwendet als geplant :) Denken Sie daran das TCP-over-Pigeon-Mail-Experiment :))
Luaan
11
@usr Es ist eine wirklich schlechte Wahl für die Implementierung, Standards nicht zu befolgen. TCP-Verbindungen können vorübergehende Netzwerkausfälle überstehen. Es ist so konzipiert. Früher konnte man sogar den Computer neu starten und trotzdem eine TCP-Verbindung herstellen, was jedoch nicht immer praktikabel war. Ihre Annahme, dass jeder vom Stromnetz getrennt werden möchte, wenn ein Kabel gezogen wird, ist falsch und entspricht nicht dem Design der Systeme.
Brad