Eu tenho trabalhado para obter pacotes unicast UDP implementados em um sistema embarcado, usando um chip de descarregamento de internet Wiznet W5100S.
Suas bibliotecas permitem a negociação de DHCP e eu aluguei com sucesso um endereço IP local do gateway ao qual estou conectado. Quando a função para enviar um pacote unicast UDP é invocada, o chip emitirá automaticamente uma solicitação ARP se não tiver memória anterior para fazer isso antes. Eu esperaria que o gateway respondesse com seu MAC, mas não recebo nenhuma resposta e o sistema incorporado relata "Dest_Unreach".
Você pode ver a negociação DHCP (pacote 8-14) e a solicitação ARP com falha (24) abaixo:
Estou monitorando tudo via wireshark, capture aqui: https://filebin.net/m4x2a2ujezk6hug8
Comparando a solicitação ARP do meu sistema incorporado com a do meu laptop, não há absolutamente nenhuma diferença na estrutura, além de meu sistema incorporado ter alguns zeros de preenchimento à direita. Comparação abaixo:
Eu me perguntei se algo no DHCP me configurou para falhar no ARP, mas há pouca diferença ao comparar com a negociação do meu laptop e o IP do cliente, o IP do gateway e a máscara de sub-rede parecem corretos.
Eu tentei dois gateways caso esse fosse o problema, mas nenhuma diferença.
Eu tenho realmente lutado para descobrir isso, qualquer ajuda seria muito apreciada!
Para qualquer outra pessoa que encontrar isso:
Parece que eu estava recebendo uma resposta ARP do roteador o tempo todo. A principal coisa que não percebi é que uma resposta ARP é unicast e, portanto, não posso esperar vê-la no Wireshark rodando no meu laptop, já que não é direcionada para isso!