我试图在发送原始数据包后找出交换环境中机器的mac地址。我正在尝试实现 traceroute 命令。我想知道当我收到 ICMP 超时消息时如何提取该机器的 mac 地址。我是网络编程的新手,所以很困惑什么套接字调用将帮助我提取 mac 地址。
谢谢 。
我试图在发送原始数据包后找出交换环境中机器的mac地址。我正在尝试实现 traceroute 命令。我想知道当我收到 ICMP 超时消息时如何提取该机器的 mac 地址。我是网络编程的新手,所以很困惑什么套接字调用将帮助我提取 mac 地址。
谢谢 。
就像 Masoud M 所说,您只能获取本地网络上机器的 MAC 地址。也就是说,您可以解析arp
命令的输出以查找给定本地网络机器 IP 地址的 MAC 地址。
通常,在 Internet 上,您甚至不知道主机用于传输数据包的媒体。假设远程主机通过 PPP 协议的串行 rs-232-C 链路连接。它没有mac地址。例如,如果主机使用令牌环接口或帧中继链路,也会发生这种情况。这使得确定主机的远程 MAC 地址完全成为本地问题。通常,当您通过以太网从远程站点获取数据包时,您在数据包中获得的源 MAC 地址是最后一个将您链接到 Internet 的路由器,而不是发送 IP 数据包的原始主机。在关于 IP over avian carrier(rfc1149、rfc2549 和 rfc6214)的 RFC 中,用于传输的媒体不允许使用 mac 地址(如果在 pidgeon 上可行的话,链接地址将是它的名称)
If you want to read about traceroute on ethernet network of switches, perhaps you had to have a look at the IEEE802.1ag, that has an specification to do tracerouting over switches (tracelink service) but I think is far over the scope of this answer.