首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取ipv6地址的Mac地址?

如何获取ipv6地址的Mac地址?
EN

Stack Overflow用户
提问于 2014-09-09 14:50:46
回答 2查看 10.6K关注 0票数 2

嗨,我写了一个TCP服务器,运行在IPv6地址上。服务器所做的是接受来自同一子网中不同机器的客户端连接,并根据客户端的mac地址对客户端进行分类。

例如:客户端A和B来自同一台机器,而客户端C来自另一台机器。当客户端A、B和C连接到服务器时,服务器显示客户端A和B来自同一台机器,而客户端C来自另一台机器。

为了实现这一点,我必须从客户端ipv6地址获取mac地址。

在ipv4地址中,我可以使用ioctl(mac_arp_sock,SIOCGARP,&areq)来实现这一点;

由于ARP在IPv6中不起作用,那么仅通过知道对等IPv6地址来检索对等机器的mac地址的最好方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-09 15:27:18

顾名思义,SIOCG ARP使用的Address Resolution Protocol只有IPv4。就像维基页面提到的那样:邻居发现协议是它的继任者。

所以,以前你可以使用ioctl和SIOCGARP或者使用相同后端的"arp -a“。现在,您必须启动子进程/任务"ndp -na“,并解析其标准输出,如下所示:

代码语言:javascript
复制
Neighbor                        Linklayer Address  Netif Expire    St Flgs Prbs
fd00::xxxx:b1ff:xxxx:fc25       b8:xx:b1:xx:fc:xx    en0 permanent R  R   
xxxx::ca2a:xxxx:fe56:xxxx%en0   xx:2a:xx:56:xx:cc    en0 23h17m41s S      
fe80::xxxx:14ff:xxxx:ca52%en0   c8:xx:14:xx:ca:xx    en0 23h17m40s S    

请参阅参考:http://www.freebsd.org/cgi/man.cgi?format=html&query=ndp(8)

Advanced: Google用于ndp的实现,例如BSD/OpenBSD/src/usr.sbin/ndp/ndp.c,如果您想不使用ndp-command自己实现它的话。

票数 2
EN

Stack Overflow用户

发布于 2021-09-24 18:50:32

使用以下命令:

代码语言:javascript
复制
ip neigh

它将显示IPv4和IPv6的IP/MAC地址映射

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

https://stackoverflow.com/questions/25738279

复制
相关文章

相似问题

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