Co stanie się z połączeniami TCP po usunięciu kabla Ethernet?

42

W przypadku połączenia TCP po odłączeniu kabla i ponownym połączeniu po 30-40 sekundach nie występują problemy z utratą pakietów. Ale gdy czas ponownego połączenia przekroczy kilka minut, wszystkie pakiety zostaną utracone. Wiem, że działa z upływającym czasem timera retransmisji, ale chcę wiedzieć, co dokładnie dzieje się po odłączeniu kabla sieciowego.

Wpisz J
źródło
9
na „co dokładnie się dzieje” będzie bardzo trudno odpowiedzieć. Obecnie system operacyjny może robić „sprytne” rzeczy, takie jak wykrywanie, że kabel został odłączony. Usuwanie tras do tej sieci z tabeli routingu. Aktywowanie nowych tras bezprzewodowo ... Wszystko to stoi na przeszkodzie prostemu uniwersalnemu wyjaśnieniu.
Hennes
5
Czy szukałeś brakujących pakietów w wiadrze bitów?
Daniel R Hicks
4
Jedną z rzeczy, które mogą się zdarzyć na pewno jest to, że bieżące komunikaty są przerwane w środku jak
ereOn
To zależy od systemu operacyjnego i jego konfiguracji. W przypadku MS Windows spróbuj google windows mediasense.
Zaboj Campula

Odpowiedzi:

60

Z definicji na modelu warstwowym, takim jak OSI lub TCP / IP, każda warstwa działa niezależnie i nie jest świadoma niższych warstw.

Po odłączeniu kabla następuje fizyczne zakłócenie ( warstwa 1 ), więc niemal natychmiast sieć Ethernet ( warstwa 2 ) wykrywa utratę sygnału (jeśli korzystasz z systemu Windows, zobaczysz bardzo przerażające wyskakujące okienko informujące o odłączeniu sieci )

IP ( warstwa 3 ) i TCP ( warstwa 4 ) tego nie zauważą, więc będą próbowały kontynuować pracę.

TCP nie przerywa ustanowionego połączenia TCP przez pewien czas, ponieważ kiedy TCP wysyła dane, oczekuje potwierdzenia w odpowiedzi, a jeśli nie dotrze w określonym czasie, ponownie przesyła dane.

TCP ponownie prześle dane, przekazując je do IP, który przekaże je do Ethernetu, który nie jest w stanie wysłać i po prostu je odrzuci.

TCP będzie ponownie czekał i powtarzał ten proces, aż dojdzie do przekroczenia limitu czasu, który pozwoli stwierdzić, że połączenie zostało zakończone. TCP resetuje numer sekwencyjny segmentu, odrzuca informacje, które próbowano wysłać, i zwalnia bufor i zasoby pamięci przydzielone dla tego połączenia.

Podłącz kabel, zanim to się stanie, a wszystko pójdzie dalej. To sprawia, że ​​TCP jest niezawodny, a jednocześnie podatny na ataki DDos.

Jeśli system operacyjny ma więcej niż jeden interfejs (na przykład Ethernet i Wi-Fi), możliwe jest, że gdy nastąpi awaria Ethernetu, nastąpi próba połączenia Wi-Fi. Zależy to od konfiguracji routingu, ale ogólnie „ TCP nie będzie tego świadomy ”.

Podstawowa struktura ataków DDoS: tysiące klientów otwierających każde połączenie TCP co kilka sekund z serwerem, a następnie porzucające połączenie. Każde połączenie TCP pozostaje otwarte na serwerze przez długi czas (marnowanie cennych zasobów, takich jak porty TCP, przydzielona pamięć, przepustowość itp.), Zapychając zasoby serwera, aby uczestniczyć w nim uprawnieni użytkownicy.

jcbermu
źródło
7
Tak mówi model, ale wierzę, że prawdziwe systemy operacyjne wykrywają pewne awarie i natychmiast zabijają połączenia. To po prostu przydatna rzecz do zrobienia.
usr
8
@usr Dlaczego warto zabijać każde połączenie tylko dlatego, że ktoś włącza i wyłącza przełącznik Ethernet, do którego podłączony jest mój komputer?
CVn
9
@usr Wyłączenie karty sieciowej za pomocą interfejsów administracyjnych systemu operacyjnego jest zupełnie inną operacją w porównaniu do fizycznego odłączenia kabla lub innego zerwania łącza warstwy fizycznej. Proszę nie mylić tych dwóch.
CVn
7
Ponadto, jeśli nie wyślesz żadnych danych TCP, gdy kabel jest odłączony, nigdy tego nie zauważy. Dlatego musisz nadal wysyłać wiadomości podtrzymujące aktywność - aplikacje, które tylko nasłuchują, nigdy nie będą wiedzieć, czy połączenie „umrze”. Z drugiej strony oznacza to również, że jeśli żadna ze stron nie spróbuje wysłać niczego, gdy kabel jest odłączony, połączenie będzie działać dobrze po ponownym podłączeniu kabla. TCP jest używany w inny sposób niż został zaprojektowany :) Pamiętaj eksperyment TCP-over-Pigeon-mail :))
Luaan
11
@usr Niezwykle złym wyborem implementacji jest nieprzestrzeganie standardów. Połączenia TCP mogą przetrwać chwilowe przerwy w sieci. Zostało to zaprojektowane. W rzeczywistości kiedyś można było zrestartować komputer i nadal mieć połączenie TCP, ale nie zawsze było to praktyczne. Twoje założenie, że każdy chce zostać odłączony, gdy kabel zostanie szarpany, jest fałszywe i nie jest tak, jak zaprojektowano systemy.
Brad