Possibilidades de TCP SYNs de entrada

1

Esta pode ser uma questão geral do TCP.

Posso receber TCP SYN packet em uma conexão ESTABLISHED OU uma conexão em TIME-WAIT state?

Isso é possível?

    
por hari 24.06.2014 / 20:49

2 respostas

2

Um SYN recebido em uma conexão ESTABLISHED TCP não deve estar acontecendo. Pode ser um pacote atrasado, que seria seguro descartar silenciosamente.

É possível terminar com o servidor em ESTABLISHED state e cliente em CLOSED state se a conexão for perdida e expirar no cliente e não no servidor ou se o cliente for reiniciado. A tentativa de abrir uma nova conexão nesse cenário faria com que um pacote SYN fosse recebido no estado ESTABLISHED . O resultado desejado é que a conexão antiga é fechada e uma nova é aberta.

A maneira como esse resultado desejado é alcançado é a seguinte:

  • O cliente envia um SYN para criar uma nova conexão.
  • O servidor envia um ACK para a conexão ESTABLISHED .
  • O cliente responde ao ACK com um pacote RST , fazendo com que a conexão ESTABLISHED desapareça.
  • O cliente retransmite SYN packet para criar uma nova conexão.

Um pacote SYN recebido no estado TIME_WAIT pode acontecer depois que o servidor fechou a conexão e o cliente abre uma nova conexão com os mesmos números de porta. Isso fará com que uma nova conexão seja aberta.

    
por 24.06.2014 / 21:02
0

Nem ... SYN é usado apenas quando a conexão é configurada pela primeira vez (o handshake de três vias) ou quando o pacote é destruído.

Basicamente:

SYN (I want to start a connection) -> ACK/SYN (OK, I want to start a connection too) -> ACK (acknowledged connection, ready for data)

Os fluxos de conversação com ACK pacotes enviados por ambos os hosts indicaram que eles recebiam os pacotes uns dos outros.

No final, FIN é enviado para o servidor e TIME_WAIT é definido no soquete. Quando o servidor responde com um pacote FIN , o soquete é liberado.

    
por 24.06.2014 / 20:53