Cosa succede alle connessioni TCP quando rimuovo il cavo Ethernet?


42

Per una connessione TCP, quando rimuovo il cavo e ricollego dopo 30-40 secondi non si verificano problemi di perdita di pacchetti. Ma quando il tempo di riconnessione è superiore a pochi minuti, tutti i pacchetti vengono persi. So che funziona quando il timer di ritrasmissione si sta esaurendo, ma voglio sapere cosa succede esattamente quando viene scollegato un cavo di rete.


9
"cosa succede esattamente" sarà molto difficile rispondere. In questi giorni il sistema operativo potrebbe fare cose "intelligenti", come rilevare che il cavo è stato rimosso. Eliminazione dei percorsi verso quella rete dalla tabella di routing. Attivazione di nuovi percorsi tramite wireless, .... Tutto ciò si intromette in una semplice spiegazione universale.
Hennes,

5
Hai cercato nel secchiello i pacchetti mancanti?
Daniel R Hicks,

4
Una cosa che può accadere per certo è che le comunicazioni attuali sono interrotte nel mezzo di come
ereOn

Dipende dal sistema operativo e dalla sua configurazione. Per MS Windows prova a google windows mediasense.
Zaboj Campula,

Risposte:


60

Per definizione su un modello a più livelli come OSI o TCP / IP, ogni livello funziona in modo indipendente e ignaro dei livelli inferiori.

Quando rimuovi il cavo, si tratta di un'interruzione fisica ( livello 1 ), quindi Ethernet quasi immediatamente ( livello 2 ) rileva una perdita di segnale (se sei su Windows vedrai il pop-up molto temuto che informa la rete disconnessa )

IP ( livello 3 ) e TCP ( livello 4 ) non lo noteranno, quindi proveranno a continuare a funzionare.

TCP non interromperà una connessione TCP stabilita per un periodo di tempo perché quando TCP invia i dati, si aspetta un ACK in risposta e se non arriva entro un periodo di tempo, ritrasmette i dati.

TCP ritrasmetterà i dati, passandoli a IP, che li passerà a Ethernet, che non è in grado di inviarli e semplicemente li elimina.

TCP attenderà nuovamente e ripeterà questo processo fino a quando non si verificherà un timeout che consentirà di dichiarare che la connessione è terminata. TCP reimposta il numero di sequenza del segmento, elimina le informazioni che stava tentando di inviare e libera il buffer e le risorse di memoria allocate per quella connessione.

Collegare il cavo prima che accada e tutto andrà avanti. Questo è ciò che rende TCP affidabile e allo stesso tempo vulnerabile agli attacchi DDos.

Se il sistema operativo ha più di un'interfaccia (ad esempio, Ethernet e Wi-Fi), è possibile che quando la Ethernet si interrompe, proverà tramite Wi-Fi. Dipende da come è configurato il routing, ma in termini generali " TCP non lo saprà ".

La struttura di base degli attacchi DDoS è: migliaia di client aprono ciascuno una connessione TCP ogni pochi secondi a un server e poi abbandonano la connessione. Ogni connessione TCP rimane aperta sul server per lungo tempo (sprecando risorse preziose come porte TCP, memoria allocata, larghezza di banda, ecc.) Intasando le risorse del server per assistere gli utenti legittimi.


7
Questo è ciò che dice il modello, ma credo che i sistemi operativi reali rilevino alcuni errori e interrompano immediatamente le connessioni. Questa è solo una cosa utile da fare.
usr

8
@usr Perché sarebbe utile interrompere ogni connessione solo perché qualcuno spegne e riaccende lo switch Ethernet a cui è collegato il mio PC?
un CVn

9
@usr La disabilitazione della scheda di rete tramite le interfacce amministrative del sistema operativo è un'operazione completamente diversa rispetto allo scollegamento fisico del cavo o alla rottura del collegamento del livello fisico. Per favore, non confondere i due.
un CVn

7
Inoltre, se in realtà non si inviano dati TCP mentre il cavo è disconnesso, non se ne accorgerà mai . Ecco perché è necessario continuare a inviare messaggi keep-alive: le applicazioni che ascolteranno sempre non sapranno mai se la connessione "si interrompe". Tra i lati positivi, significa anche che se nessuna delle parti ha tentato di inviare qualcosa mentre il cavo era scollegato, la connessione funzionerà bene dopo che il cavo è stato ricollegato. TCP viene utilizzato in modo molto diverso da come è stato progettato :) Ricorda l'esperimento TCP-over-Pigeon-mail :))
Luaan,

11
@usr È una scelta di implementazione davvero sbagliata non seguire gli standard. Le connessioni TCP possono sopravvivere a interruzioni temporanee della rete. È progettato per farlo. In effetti, in passato era possibile riavviare il computer e disporre comunque di una connessione TCP, ma ciò non era sempre pratico. La tua ipotesi che tutti vogliano essere disconnessi quando un cavo viene strappato è falsa, e non è il modo in cui i sistemi sono stati progettati.
Brad,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.