首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用C语言从IP中获取MAC地址

用C语言从IP中获取MAC地址
EN

Stack Overflow用户
提问于 2014-10-29 22:39:46
回答 2查看 4.6K关注 0票数 2

当我的用户提供本地和远程IP:Port对时,我需要提供一个组装UDP数据包的函数。我有一个以太网卡API,它为我发送一个以太网帧,我需要填充一个完整的以太网帧,其中包含MAC地址、IP和UDP。

问题:给出了互联网上的IPV4地址,如何找到IP对应于的MAC地址,这样我就可以在以太网帧头中填充它。如何使用C从路由器的ARP表中查找此数据。我应该发送一个ARP包到我的路由器(我也不知道如何做到这一点)。

当我调用UDP ()时,谁在以太网帧中填充地址?这是如何实现的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-29 22:41:55

简单的回答是:你不能。

MAC地址仅在本地网络上有意义。没有办法询问远程IPv4端点(不在您的网络上),它的MAC地址是什么。如果要将UDP数据包发送到远程端点,请使用OS套接字接口发送到该IPv4地址。它会处理细节的。

根据下面的注释,如果您有一个发送以太网帧的接口,那么您将需要查找本地IPv4网关地址的MAC地址(通过发送一个ARP请求)。网关的MAC地址是您放置在以太网帧中的地址。目标端点的MAC地址不在以太网帧中。

票数 5
EN

Stack Overflow用户

发布于 2018-08-27 11:01:46

你的操作系统就是这么做的。如何?:您的操作系统填充您发送到的主机或主机之间的路由器的宏地址。

当您在本地网络中发送某些内容时,什么是macadress?

那是主人的电脑金刚鹦鹉。如何从仅从一个to地址中获取宏地址?

您将ipadress广播到网络以获取macadress。与您的ipadress一起发送一个ARP数据包到macadress FF:FF,并等待响应。你网络上的每个人都会看到你的包裹。除了带有目标ip的计算机外,每个人都忽略数据包。他会用电脑地址回复。看看wiresharp是如何构造ARP数据包的。为了加快速度,重要的是要将宏地址与ipaddress一起缓存,以供以后使用。

当您在网络之外发送/接收某些东西时,的MAC地址是什么?

您无法从网络外的计算机中获取宏地址。没有理由这么做。如果您在本地网络之外发送数据包,则MAC入口是NAT路由器的地址,而ipadress是您网络之外的地址。如何获取NAT路由器的MAC地址,您只需发送一个带有路由器IP地址的ARP数据包。在响应中包含NAT mac地址。如果您有路由器的宏地址,则可以在网络外发送数据包。NAT路由器将通过路由器的WAN端发送您的数据包。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26641885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档