Digamos que eu tenha o endereço IP e MAC de um computador dentro de uma rede e desejo enviar a ele uma mensagem UDP. Ao inicializar os endereços mac e ip da mensagem enviada para o fornecido, quando o roteador da rede receber a mensagem ele deverá passá-la para o computador com o mesmo endereço mac...certo?
Estou perguntando porque um programa que escrevo parece lidar com essa limitação. funciona muito bem quando está na mesma rede, mas fora isso ... nada.
Obrigado
Responder1
Se você estiver criando um aplicativo que abre um soquete UDP e envia tráfego para um destino específico, a única coisa com a qual você precisa se preocupar são os endereços IP. Se o seu ouvinte funcionar na camada 2, ou seja, quando ambos os sistemas estiverem na mesma sub-rede, ele deverá funcionar exatamente da mesma maneira quando você passar para a camada 3, desde que sua rede esteja configurada corretamente. Se isso falhar, tente usar algo para testá-lo que você sabe que funciona. Existem muitos aplicativos de diagnóstico por aí, mas o mais fácil é provavelmentenetcat, instale-o e tente isto:
No seu sistema de destino:
nc -l -u -p 1234
No seu sistema de origem
nc -u -p 1234
Altere o número da porta para aquele que você está usando para seu aplicativo e, se você conseguir ver algo digitado na origem, aparecerá no console de destino, desde que sua rede de camada 3 esteja configurada corretamente e não esteja bloqueando o UDP. aquele porto.
Se você estiver incorporando o endereço MAC na carga útil, isso é uma coisa, mas os endereços MAC de origem (e destino) incorporados no quadro Ethernet serão alterados pelo roteador, é assim que funciona. Se o seu aplicativo espera que eles permaneçam iguais em ambas as extremidades da conversa, ele falhará, mas em geral você não deve se aprofundar tanto na pilha da rede. O que você está usando para construir isso?
Responder2
Você tem dois casos:
1- Se você estiver enviando o pacote para um host dentro da mesma sub-rede, ele será enviado diretamente para ele usando os endereços MAC e IP da máquina de destino.
2- Se você estiver enviando para um host em outra sub-rede, ele deverá ser enviado para o seu roteador. Assim, o MAC de destino será o do roteador e o IP de destino será o do destino final.
Você sabe qual é o seu caso examinando o IP e a máscara de sub-rede.
Responder3
Se os seus computadores estiverem na mesma sub-rede, não será necessário nenhum roteador para comunicação. Se você correu para o roteador, o roteador alterou o endereço MAC de origem para o MAC do roteador. Quando o roteador recebe o pacote, ele volta para o MAC interno.