Por que o WireShark acha que esse quadro é um segmento TCP de uma PDU remontada

9

Encontre um pequeno arquivo pcap aqui ilustrando meu problema.

Eu tenho um handshake TCP de três vias, seguido por dois logons FIX. (O FIX é um protocolo usado na negociação.) O primeiro logon do FIX (quadro 4) é interpretado e analisado muito bem pelo WireShark, mas o segundo logon (quadro 6) é interpretado como a TCP segment of a reassembled PDU.

No entanto, o quadro 6 não é um segmento TCP de uma PDU remontada. Ele contém uma PDU TCP completa que deve ser interpretada e analisada como um logon FIX. Eu verifiquei se os números de sequência, números ACK, comprimentos totais de IP etc. são bons.

Por que o quadro 6 é interpretado como um segmento TCP de uma PDU remontada?

Randomblue
fonte
Existe um problema que você está enfrentando por causa disso?
Nathan C
1
Sim, estou gerando todos esses quadros e há claramente algo errado com o que fiz.
Randomblue
1
Eu sugeriria fortemente incluir os detalhes salientes dos quadros 4 e 6 (e talvez quadros adjacentes) em sua pergunta. O link para o arquivo pcap é ótimo, mas apenas uma pequena minoria de leitores estará inclinada a realmente fazer o download e visualizá-lo.
Skyhawk
À primeira vista, não consigo encontrar nada. O segmento 4 não está fragmentado. O quadro 6 é do destino e você está dizendo que esse quadro 6 deve ser interpretado como a resposta do servidor do quadro 4. ou seja, o logon FIX deve ser feito lá. direita.
Soham Chakraborty

Respostas:

15

Ter os hosts numerados .76 e .67 é um pouco entorpecedor.

O Wireshark está chamando o quadro 6 de "segmento TCP de uma PDU remontada" porque sua implementação de TCP em 10.10.10.67 está optando por enviar uma ACK sem carga útil (uma ACK "nua") em vez de incluir a carga útil que é enviada no quadro 6 com o ACK no quadro 5. (Esse é um comportamento dependente da pilha do OS / IP.) Isso, por sua vez, desencadeia um comportamento no dissector TCP para entregar as cargas úteis dos vários segmentos TCP ao dissector FIX. Por qualquer motivo, o dissector FIX não está interpretando o quadro 6.

Se você desativar a opção "Permitir que o subdissetor desagregue os fluxos TCP" nas opções do dissector TCP, verá que o Wireshark interpreta isso de maneira diferente:

Captura de tela do Wireshark

Aqui está uma discussão da lista de usuários do wireshark sobre a mesma coisa .

Evan Anderson
fonte