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

标签 c sockets icmp raw-sockets

我试图在发送原始数据包后找出交换环境中机器的 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/

相关文章:

go - 尝试发出回显请求时收到无效的连接错误

windows-server-2008 - 在 Windows Server 2008 R2 中阻止 ping

c - 如何解析 "a(oa{sv})"dbus类型?

php - 与来自 ruby​​ 的 php fastcgi 套接字通信

python - 如何处理 python 套接字中的击键?

c - 将数据包从一台linux服务器发送到另一台服务器(LINUX)

linux - 收到 icmp 请求,但未回复

无法使用 SDL_gfxPrimitive

c - 将双常量分配给 float 变量而不在 C 中发出警告?

c - 静态变量存储在哪里?