Minha aposta é que o servidor não tem nenhuma entrada ARP para o endereço IP do qual o SYN vem, por isso não tem maneira de colocar um pacote de resposta no fio Ethernet porque ele não sabe qual endereço de hardware Ethernet para enviar a resposta.
Eu tenho um servidor TCP escutando em 10.10.10.101, porta 2000, em execução em uma máquina com Windows 7. Abaixo está a linha de saída correspondente para o comando netstat -aon
:
TCP 10.10.10.101:2000 0.0.0.0:0 LISTENING 2340
Eu também tenho um FPGA que envia um pacote TCP SYN a cada segundo até que o servidor responda.
O FPGA conecta-se fisicamente ao diretamente a uma interface de rede na máquina com Windows 7, que foi configurada para ter um endereço IP estático de 10.10.10.101. O endereço IP de origem dos pacotes SYN é 10.10.10.100.
Eu posso ver os pacotes SYN sendo recebidos na interface de rede usando WireShark, mas o servidor TCP não responde um SYN / ACK. Minha suposição é que o servidor TCP não está vendo os pacotes SYN por causa de problemas de roteamento.
Eu adicionei manualmente duas rotas da seguinte forma ( IF 16
refere-se à interface com o IP estático 10.10.10.101
):
route add 10.10.10.100 MASK 255.255.255.255 10.10.10.1 METRIC I IF 16
route add 10.10.10.101 MASK 255.255.255.255 10.10.10.1 METRIC I IF 16
Eu adicionei corretamente as rotas? Como posso confirmar que o servidor TCP realmente não está sendo encaminhado para os pacotes IP com o TCP SYN? O que posso fazer para obter mais informações sobre o que está errado?
Minha aposta é que o servidor não tem nenhuma entrada ARP para o endereço IP do qual o SYN vem, por isso não tem maneira de colocar um pacote de resposta no fio Ethernet porque ele não sabe qual endereço de hardware Ethernet para enviar a resposta.
Com base no que você disse em sua postagem, meu dinheiro seria que o servidor que você está executando esteja vinculado à interface errada.
Se você tiver a opção, tente desativar a interface testada que funciona em outras máquinas e, em seguida, reinicie o software do servidor.
Se você não pode desabilitar ou desconectar a outra interface porque está usando isso para a área de trabalho remota na máquina do servidor, que tal conectar o FPGA nessa interface e sua conexão de área de trabalho remota na interface que o FPGA está conectada atualmente? ?
Se você puder modificar o software do servidor, sugiro verificar a (s) interface (s) que ele está (em) vinculado (s) - tive problemas nesse sentido antes de usar as ligações de rede do Windows (envio / recebimento de transmissões UDP no interface errada) ..