Wireshark mostra “TCP Dup Ack” no SACK após cada ACK regular

1

Eu tenho uma sessão TCP capturada via espelhamento de porta de switch e tcpdump. Ao visualizá-lo (no Wireshark), vejo o mesmo padrão sempre que envio uma mensagem; aqui está um trecho dos pacotes de saída (eu não capturo os de entrada ... ainda):

[PSH, ACK] Seq=34477 Ack=46645 Len=51 # sending first message
[ACK] Seq=34528 Ack=46714 Len=0 # acknowledge response (not shown)
[ACK] Seq=34528 Ack=46714 Len=0 SLE=46645 SRE=46714 # TCP Dup Ack!

[PSH, ACK] Seq=34528 Ack=46714 Len=51 # sending second message
[ACK] Seq=34579 Ack=46783 Len=0 # acknowledge response (not shown)
[ACK] Seq=34579 Ack=46783 Len=0 SLE=46714 SRE=46783 # TCP Dup Ack!

A questão é, por que eu recebo esses pacotes "dup ack", que na verdade são pacotes de Confirmação Seletiva TCP (SACK) que parecem ser totalmente redundantes com os pacotes ACK regulares que os precedem?

Eu vejo o padrão acima o tempo todo para esse fluxo TCP. A máquina está executando o RHEL7. Quando eu executo o tcpdump na interface regular (em vez do espelho), não vejo duplicados.

    
por John Zwinck 04.11.2015 / 22:17

1 resposta

1

O host recebe pacotes duplicados em seu cenário - uma cópia vem da fonte inicial, a outra na porta do espelho. Ele responde a ambos e, em seguida, você vê as duas respostas na porta de espelhamento. A interface não importará, desde que o pacote seja processado apenas para os parâmetros do kernel pelos quais o aplicativo se preocupa é o IP e a porta.

    
por 07.11.2015 / 12:54