我试图在发送原始数据包后找出交换环境中机器的 mac 地址。我正在尝试执行 traceroute 命令。我想知道当我收到 ICMP 超时消息时如何提取该机器的 mac 地址。我是网络编程的新手,所以很困惑什么套接字调用可以帮助我提取 mac 地址。
谢谢。
最佳答案
不,您不能从 ICMP 回复中提取 MAC 地址。
您只能确定您旁边的链接机器的 MAC 地址。在 ICMP(tracert) 中,您可以找到目标或中间机器的 IP 地址。
如果你想检测 MAC 地址,你应该使用适用于本地网络而不是 Internet 的 ARP 协议(protocol)。
ICMP 协议(protocol)在 IPv4 header 之后开始[ 1 ]和MAC地址与物理/链路层有关。在低层中,MAC 地址将从顶层透明,例如网络(IP)或传输,...
要确定 MAC 地址,您应该使用原始套接字或 PCAP SDKs访问较低层的网络编程。 (我再说一遍,这些在互联网上没有用)
关于c - 如何在 linux 上从 c 中的 icmp 回复中提取 mac 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7820407/