como manter uma conexão TCP inativa?

1

se um servidor TCP estabelecer uma conexão TCP com um cliente TCP. Então o cliente TCP nunca envia nenhum pacote para o servidor.

Eu quase sei que firewalls perto do servidor TCP podem enviar um RST para ele. ou há um tempo de espera de atividade que força a conexão TCP a terminar. Mas eu não sei exatamente o que vai acontecer - alguém pode explicar um pouco?

É possível manter essa conexão TCP, a menos que eu queira que ela termine?

Eu só espero que o servidor TCP possa manter esta conexão TCP em sua pilha TCP. Mas eu não quero que o cliente TCP esteja envolvido, eu não quero que ele envie KEEP-ALIVE. Eu não quero nenhuma outra entidade de terceiros envolvida. Eu só espero que quando eu estiver escrevendo os códigos-fonte do servidor TCP, os códigos-fonte consigam manter a conexão TCP.

obrigado!

    
por misteryes 30.05.2013 / 11:46

1 resposta

0

A menos que um FIN ou RST seja enviado, a única outra maneira que o TCP padrão sabe se o outro lado parou ou se foi, é um tempo limite de expiração.

Este é realmente o melhor que você pode fazer projetando se estiver fazendo a menor quantidade possível de suposições do "outro lado" possível, e sua única conexão com esse "outro lado" é uma única interface de rede.

Um evento menor no modelo OSI pode fazer com que o sistema operacional encerre a conexão sozinho ou forneça informações que poderiam fazer com que o cliente desistisse, como a remoção do adaptador de rede em questão ou o link estado mudando para ser desconectado. Isso não precisa acontecer, no entanto.

A solução geral é enviar mensagens periódicas sem dados significativos, chamados de keepalive, através da conexão. O TCP suporta isso, mas você também pode fazê-lo na camada de aplicativos.

  • O FileZilla pode ser configurado para enviar mensagens keepalive. Você pode vê-lo enviar comandos que não fazem nada útil, mas são emitidos apenas para jogar algo no tubo e mantê-lo "ocupado".
  • PuTTY, por exemplo, tem opções keepalive também .
  • Você também pode definir opções keepalive no servidor também, mas geralmente é melhor definir isso no SSH cliente.
  • Muitos protocolos de roteamento enviam keepalives na camada de aplicativo para verificar se outras rotas estão funcionando e disponíveis, BGP , por um.
  • O TCP também suporta nativamente as mensagens keepalive, elas são basicamente pacotes nulos enviados de tempos em tempos para verificar a conexão. Este artigo do tldp.org explica bem.
por 30.05.2013 / 13:40