O que acontece com as conexões TCP quando eu removo o cabo Ethernet?


42

Para uma conexão TCP, quando eu removo o cabo e reconecto após 30 a 40 segundos, não há problemas de perda de pacotes. Mas quando o tempo de reconexão é superior a alguns minutos, todos os pacotes são perdidos. Sei que funciona com o temporizador de retransmissão acabando, mas quero saber exatamente o que acontece quando um cabo de rede é desconectado.


9
"o que exatamente acontece" será muito difícil de responder. Atualmente, o sistema operacional pode fazer coisas 'inteligentes', como detectar que o cabo foi removido. Eliminando as rotas para essa rede da tabela de roteamento. Ativando novas rotas via wireless, .... Tudo isso atrapalha uma simples explicação universal.
Hennes

5
Você procurou no pacote de bits os pacotes ausentes?
Daniel R Hicks #

4
Uma coisa que pode acontecer com certeza é que suas comunicações atuais são interrompidas no meio como
ereOn

Depende do sistema operacional e de sua configuração. Para o MS Windows, tente pesquisar no google windows mediasense.
Zaboj Campula

Respostas:


60

Por definição, em um modelo em camadas como OSI ou TCP / IP, cada camada funciona independentemente e não reconhece as camadas inferiores.

Quando você remove o cabo, é uma interrupção física ( camada 1 ); portanto, quase imediatamente a Ethernet ( camada 2 ) detecta uma perda de sinal (se você estiver no Windows, verá a temida rede de informações pop-up desconectada )

O IP ( camada 3 ) e o TCP ( camada 4 ) não perceberão, então eles tentarão continuar trabalhando.

O TCP não interromperá uma conexão TCP estabelecida durante um período de tempo, porque quando o TCP envia dados, ele espera uma resposta de confirmação e, se não chegar dentro de um período, retransmite os dados.

O TCP retransmitirá os dados, passando para o IP, quem passará para a Ethernet, que não poderá enviá-los e simplesmente descartá-los.

O TCP estará aguardando novamente e repetindo esse processo até que ocorra um tempo limite que permita declarar que a conexão terminou. O TCP redefine o número de sequência do segmento, descarta as informações que estavam tentando enviar e liberta os recursos de buffer e memória que foram alocados para essa conexão.

Conecte o cabo antes que isso aconteça e tudo continuará. É isso que torna o TCP confiável e ao mesmo tempo vulnerável a ataques DDos.

Se o sistema operacional tiver mais de uma interface (por exemplo, ethernet e wi-fi), é possível que, quando a ethernet for desativada, ele tente usar o wifi. Depende de como o roteamento está configurado, mas em termos gerais "o TCP não estará ciente disso ".

A estrutura básica dos ataques DDoS é: milhares de clientes abrindo cada um uma conexão TCP a cada poucos segundos em um servidor e abandonando a conexão. Cada conexão TCP fica aberta no servidor por um longo tempo (desperdiçando ativos valiosos como portas TCP, memória alocada, largura de banda etc.) obstruindo os recursos do servidor para atender usuários legítimos.


7
É o que o modelo diz, mas acredito que sistemas operacionais reais detectam algumas falhas e eliminam conexões imediatamente. Isso é apenas uma coisa útil a se fazer.
usr

8
@usr Por que seria útil eliminar todas as conexões apenas porque alguém liga e alterna o comutador Ethernet ao qual meu PC está conectado?
um CVn

9
@usr Desabilitar a placa de rede por meio das interfaces administrativas do sistema operacional é uma operação completamente diferente em comparação com desconectar fisicamente o cabo ou interromper o link da camada física. Por favor, não confunda os dois.
um CVn

7
Além disso, se você realmente não enviar dados TCP enquanto o cabo estiver desconectado, ele nunca notará. É por isso que você precisa continuar enviando mensagens keep-alive - aplicativos que apenas escutam nunca saberão se a conexão "morre". No lado positivo, isso também significa que se nenhum dos lados tentar enviar nada enquanto o cabo estiver desconectado, a conexão funcionará bem depois que o cabo for conectado novamente. O TCP é usado de maneira muito diferente da forma como foi projetado :) Lembre-se o experimento TCP-over-Pigeon-mail :))
Luaan

11
@usr É uma péssima opção de implementação não seguir os padrões. As conexões TCP podem sobreviver a interrupções temporárias na rede. Ele foi projetado para fazer isso. De fato, costumava-se reiniciar o computador e ainda ter uma conexão TCP, mas isso nem sempre era prático. Sua suposição de que todo mundo quer ser desconectado quando um cabo é puxado é falsa e não é assim que os sistemas foram projetados.
217 Brad
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.