Esse problema do Wireshark está me deixando louco há algumas horas. O que está acontecendo aqui?
192.168.2.100 é um servidor Apache que atende um arquivo estático.
192.168.2.196 é um cliente incorporado que baixa o arquivo.
Parece que 192.168.2.196 está baixando o arquivo com alegria e então ele simplesmente começa a ignorar 192.168.2.100 e, portanto, a conexão para e eventualmente termina?
Isso está correto e por que o cliente pode estar fazendo isso?
Responder1
Os sintomas indicam claramente que há um gargalo no processamento de recebimento do lado do cliente.
O rastreamento mostra que o buffer de recebimento na pilha de rede do cliente (aparentemente LwIP) está sendo preenchido - Especificamente, o tamanho da janela nas confirmações do cliente está diminuindo à medida que uma série de pacotes são recebidos do servidor, até que o buffer de recebimento seja completamente preenchido e um " ZeroWindow" é enviado do cliente para o servidor para solicitar que pare de enviar dados.
Isso normalmente indica que a leitura do aplicativo do soquete não está drenando o buffer de recebimento rápido o suficiente para permitir que a pilha da rede acompanhe os pacotes que chegam.
As retransmissões frequentes do servidor, combinadas com ACKs atrasados do cliente, sugerem que as condições no cliente também estão impactando negativamente o processamento de pacotes recebidos de nível inferior na pilha da rede.
Você mencionou que o host do cliente era um dispositivo incorporado e também comentou que seu aplicativo parece estar bloqueado em lwip_read(). A espera sugere que outro recurso de E/S ou CPU ou gargalo de agendamento pode estar impedindo que seu thread de leitura obtenha tempo de CPU suficiente para acompanhar a transferência de arquivos. Contudo, os ACKs atrasados sugerem que pode haver um problema mais amplo. Sem saber mais sobre o dispositivo incorporado, é difícil solucionar problemas ainda mais.
O LwIP também tem restrições especiais relacionadas ao atendimento de chamadas de rede que podem ser aplicadas à sua implementação - Consulteesta página de armadilhas do LwIP.
Espero que esta informação seja útil para resolver seu problema.