Estou desenvolvendo um driver Ethernet e implementando o código de troca TCP. Para testar meu código TCP este é o cenário (monitorado no wireshark):
Servidor: dispositivo Ethernet personalizado
Cliente: computador
- Abri o soquete do cliente TCP no utilitário hercules.
- Consigo ver a solicitação ARP e a troca de resposta do dispositivo ethernet e do hercules.
- Depois que a solicitação ARP é atendida, o cliente envia o pacote TCP SYN e as respostas do servidor com SYN-ACK.
- Para concluir o handshake de 3 vias, o cliente deve enviar ACK no final, o que não estou recebendo e o hercules informa que o tempo limite da conexão TCP está esgotado.
Preciso diagnosticar o possível problema do motivo pelo qual o cliente não está reconhecendo o SYN-ACK para concluir o handshake de 3 vias.
Onde você está capturando, no cliente ou no servidor? Se você estiver capturando no cliente, tente ativar a validação da soma de verificação do cabeçalho IP por meio de "Editar -> Preferências -> Protocolos -> IPv4 -> Validar a soma de verificação IPv4, se possível" .
Parece-me que a soma de verificação do cabeçalho IP do pacote SYN/ACK do servidor é 0, portanto, inválido e, se for o caso, você terá que calculá-lo; caso contrário, a máquina cliente descartará o pacote IP como inválido.
Observe que, se você estiver capturando no cliente e a soma de verificação do cabeçalho IP do cliente do pacote SYN for 0, então, como o Wireshark indica, provavelmente é porque a máquina cliente está configurada para "descarregamento da soma de verificação IP" e o Wireshark está recebendo os pacotes antes do a soma de verificação é calculada pelo hardware.
Se você realmente quiser ver o que está acontecendo, você deve capturar em uma máquina separada usando uma porta SPAN ou TAP; dessa forma, você receberá pacotes com somas de verificação apropriadas calculadas. Para obter mais informações sobre captura, você pode querer dar uma olhada na página wiki de configuração de captura Ethernet do Wireshark , ou no muito útil manual de captura de rede em 6 partes de Jasper Bongertz, começando com a Parte 1 - Ethernet Basics em que é referenciado outro de seus artigos , As desvantagens das capturas de pacotes locais .