Digamos que um aplicativo de espaço do usuário tenha uma conexão TCP com algum ponto de extremidade não local. Em algum momento, a rede é interrompida abruptamente (ou seja, conexão excluída no gerenciador de rede, desconecte o dongle wifi, corte o cabo Ethernet)
O que está acontecendo conceitualmente dentro do kernel para lidar com a situação e como isso se manifesta no aplicativo de espaço do usuário?
Sub-questões de orientação:
- quais são os tempos limite envolvidos?
- o kernel tentará ocultar do espaço do usuário a conexão é perdida ao tentar se reconectar?
- esperar por uma resposta pode fazer com que o aplicativo userspace não queira sair normalmente?
A interface de rede ou outra infraestrutura caindo não significa necessariamente que a “conexão foi perdida” - o TCP pode continuar tentando retransmitir por um longo tempo antes de encerrar a conexão (depende do que aconteceu - um erro na interface local provavelmente causará um erro imediato , mas um roteador caindo em algum lugar ao longo do caminho pode não).
Não depende do kernel, é determinado pelo protocolo TCP e o “userspace app” pode muito bem esperar muito tempo antes de receber um erro no soquete.
Para responder especificamente a cada subpergunta: