繁体   English   中英

如何从linux上的c中的icmp回复中提取mac地址

[英]How can I extract mac address from a icmp reply in c on linux

我试图在发送原始数据包后在交换环境中找出机器的mac地址。 我正在尝试实现traceroute命令。 我想知道何时收到ICMP超时消息,如何提取该机器的mac地址。 我是一个新的网络编程,所以很困惑什么socket调用将帮助我提取mac地址。

谢谢 。

不,您无法从ICMP回复中提取MAC地址。

只能确定您旁边的链接机器的MAC地址。 在ICMP(tracert)中,您可以找到目标或中间机器的IP地址。

如果要检测MAC地址,则应使用适用于本地网络而非Internet的ARP protcol。

IPv4标头[ 1 ]和MAC地址与物理/链路层相关后,ICMP协议启动。 在低级层中,MAC地址将从顶级层透明,例如网络(IP)或传输,......

要确定MAC地址,您应该使用Raw套接字或PCAP SDK来访问较低层的网络编程。 (我再说一遍,这些在互联网上没用)

通常,在Internet上,您甚至不知道主机用于传输数据包的媒体。 假设使用PPP协议通过串行rs-232-C链路连接远程主机。 它没有mac地址。 例如,如果主机使用令牌环接口或帧中继链路,也会发生这种情况。 这使得完全确定主机的远程mac地址是本地问题。 通常,当您通过以太网从远程站点获取数据包时,您在数据包中获取的源mac地址是最后一个将您链接到Internet的路由器之一,而不是发送IP数据包的原始主机之一。 在通过avian运营商的IP上的RFC(rfc1149,rfc2549和rfc6214)中,用于传输的媒体不允许使用mac地址(链接地址,如果在pidgeon上可行,可能就是它的名字)

如果你想阅读有关交换机的以太网网络上的traceroute,也许你必须看一下IEEE802.1ag,它有一个规范来对交换机进行tracerouting(tracelink服务),但我认为远远超出了这个答案的范围。

与Masoud M说的一样,您只能获取本地网络上的计算机的MAC地址。 也就是说,您可以解析输出arp命令,找到给定本地网络机器IP地址的MAC地址。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM