Java 我们可以使用MAC地址连接到同一个专用网络上的计算机吗?

Java 我们可以使用MAC地址连接到同一个专用网络上的计算机吗?,java,c,networking,private-network,Java,C,Networking,Private Network,我可以使用套接字编程,使用专用IP地址,通过专用网络连接两台计算机。使用MAC地址也可以这样做吗 如果可能的话,任何关于Java/C/C++的例子都将不胜感激。我在网上找不到任何关于这个问题的有用帖子 更新: 我好奇地想知道,仅仅知道MAC地址就可以连接到同一个专用网络上的另一台计算机吗?这个问题背后的一个逻辑可能是,每次路由器重新启动时,分配给网络设备的IP地址都可能不同。所以,在这种情况下,MAC地址听起来更适合身份识别 (虽然我知道MAC地址也可以更改。)MAC地址用于标识网络中的“物理”

我可以使用套接字编程,使用专用IP地址,通过专用网络连接两台计算机。使用MAC地址也可以这样做吗

如果可能的话,任何关于Java/C/C++的例子都将不胜感激。我在网上找不到任何关于这个问题的有用帖子

更新:

我好奇地想知道,仅仅知道MAC地址就可以连接到同一个专用网络上的另一台计算机吗?这个问题背后的一个逻辑可能是,每次路由器重新启动时,分配给网络设备的IP地址都可能不同。所以,在这种情况下,MAC地址听起来更适合身份识别


(虽然我知道MAC地址也可以更改。)

MAC地址用于标识网络中的“物理”实体

而套接字存在于IP层上

MAC地址表示硬件对象;如果您想让这些对象通信,您需要查看其上面的层。要么你使用现有的协议;如UDP/TCP;或者,您必须定义自己的完整协议

换句话说:MAC地址的唯一功能是识别可见网络“范围”内的唯一硬件组件。MAC地址没有定义任何可用于将一个MAC地址端点连接到另一个MAC地址端点的服务/协议


因此,简言之,答案是:不,这是不能通过的

是的。IP是一种可能的第2层协议,但您可以在以太网之上运行自己的协议。例如,FCoE绕过TCP-IP,运行自己的协议。由于光纤通道可以支持网络流量和存储流量,理论上,您可以使用FCoE连接网络。只要稍加编程,您就可以添加一个套接字层。

您需要IP地址才能使套接字编程正常工作,也许您可以提供更多关于您想做什么的详细信息吗?我只是想知道我们是否可以通过知道MAC地址连接到另一台计算机。例如,每次重新启动路由器时,网络上特定设备的IP地址都会发生变化。有些协议只使用MAC地址,但它们只能在LAN上工作(不能路由到另一个LAN)。由于只能在一个局域网上工作的限制,它们已被搁置一旁,特别是在1995年互联网商业化之后。你所说的连接是什么意思:字面上的
connect(2)
还是仅仅发送和接收数据?@GhostCat谢谢提醒:请看我的更新,尽管您可能不喜欢我的答案。您之前说过。“要么你使用现有的协议,比如UDP/TCP。”然后你的更新说“这是不可能的。”我很困惑。我错过了什么吗?没有你的进一步努力是不可能的!那么,你是说现有的协议是不可能的?“我必须实现我自己的?”迪利普拉巴拉尔惊讶地告诉你,他和我说的完全一样。MAC地址定义的是寻址方案,而不是通信协议。