Número de sequência e tamanho da janela do RST

1

A RFC793 afirma o seguinte sobre o processamento de RST:

In all states except SYN-SENT, all reset (RST) segments are validated by checking their SEQ-fields. A reset is valid if its sequence number is in the window.

Mas não tenho certeza do que essa afirmação significa exatamente. Digamos que eu tenha o seguinte cenário:

Portanto,osoquete2informaaosoquete1queseutamanhodejanelaéde6KBe,emseguida,osoquete1envia6KBdedadosparaosoquete2.

E,emseguida,osoquete1enviaumpacoteRSTparaosoquete2:

O que acontecerá neste caso, o pacote RST será aceito pelo soquete 2?

    
por user574382 23.03.2016 / 17:08

2 respostas

2

O Linux apenas desativa uma conexão TCP se o número de sequência do RST for o próximo número de sequência esperado. Essa regra foi aplicada para evitar ataques de redefinição TCP cegos (consulte RFC 5961 seção 3.2 ). Então, as seguintes regras são aplicadas:

1) If the RST bit is set and the sequence number is outside the current receive window, silently drop the segment.

2) If the RST bit is set and the sequence number exactly matches the next expected sequence number (RCV.NXT), then TCP MUST reset the connection.

3) If the RST bit is set and the sequence number does not exactly match the next expected sequence value, yet is within the current receive window (RCV.NXT < SEG.SEQ < RCV.NXT+RCV.WND), TCP MUST send an acknowledgment (challenge ACK):

  <SEQ=SND.NXT><ACK=RCV.NXT><CTL=ACK>

Então você está no caso 1, seu segmento RST será silenciosamente descartado (pelo menos no Linux, isso depende da implementação, mas DEVE ser respeitado).

    
por 11.05.2016 / 10:03
0

Depois que todos os dados forem transferidos do cliente para o destino com o mecanismo de fragmento usando o valor de MTU, FIN será iniciado não o RST.

  • FIN: A transferência de dados é completada e não há mais pacotes restantes. (Fechamento gracioso)
  • RST: não estou listando nessa porta / estou sobrecarregado. (Força fechar)

Para o pacote RST, o número de sequência sim é validado porque os dispositivos src, dst e intermediário devem eliminar a sessão e a entrada da tabela de conexão / estado.

    
por 23.03.2016 / 17:47