将UDP消息发送到networking中的计算机

说我有一个networking内的计算机的ip和mac地址,我想给他发送一个UDP消息。 通过初始化发送给给定消息的mac和ip地址,当networking路由器收到消息时,他应该把它传递给具有相同mac地址的计算机…对吧?

我问一个程序,我写了dosent似乎处理这个限制。 它在同一个networking上工作的很好,但除此之外… nada。

谢谢

如果您正在创build一个打开UDP套接字并将stream量发送到特定目标的应用程序,则需要关注的唯一事情就是IP地址。 如果您的侦听器在第2层上工作,即当两个系统位于同一个子网上时,如果您的networking设置正确,则在移动到第3层时,它应该以完全相同的方式工作。 如果失败了,那就试着用一些东西来testing一下你知道的东西。 有很多的诊断应用程序,但最简单的可能是netcat ,安装,并试试这个:

在你的目标系统上:

nc -l -u -p 1234 

在你的源系统上

 nc -u -p 1234 

将端口号更改为您用于应用程序的端口号,并且如果您应该能够看到您在目标控制台上显示的任何内容,只要您的第3层networking设置正确并且不阻止UDP那个港口。

如果将MAC地址embedded到有效载荷中,那么这是一回事,但embedded在以太网帧中的源(和目标)MAC地址将由路由器更改,这就是它的工作原理。 如果你的应用程序希望它们在对话的两端保持不变,那么它将会失败,但是一般来说,你不应该深入挖掘networking堆栈。 你用什么来build立这个?

你有两种情况:

1-如果您将数据包发送到同一子网内的主机,则将使用目标机器的MAC和IP地址将数据包直接发送到该主机。

2-如果您将其发送给另一个子网中的主机,则应将其发送到路由器。 所以,目标MAC将是路由器的一个,目标IP将是最终目的地之一。

通过检查IP和子网掩码,你知道哪一个是你的情况。

如果您的计算机在同一个子网中,则不需要路由器进行通信。 如果您跑到路由器,路由器将源MAC地址更改为路由器MAC。 当路由器接收到数据包时,它将切换回内部MAC。