gpt4 book ai didi

ios - 如何以编程方式在 iOS 中通过 IPv6 获取远程 MAC 地址

转载 作者:IT王子 更新时间:2023-10-29 08:01:37 24 4
gpt4 key购买 nike

我需要找到一个解决方案,如何从 WiFi 网络中的其他设备获取 MAC 地址。有一个很好的方法可以为 IPv4 ( How does iOS app Fing get MAC Address? ) 执行此操作,但是如何为 IPv6 执行此操作?由于ARP被NDP(Neighbour Discovery Protocol)取代,后一种方法行不通。如果有人能帮助我,我将不胜感激。

最佳答案

层与封装

网络架构是分层的,上层封装下层的不同实现,提供相对于下层的更高抽象。使用IP的网络层封装了不同的链路层协议(protocol),如Ethernet、WiFi、PPP(可以运行在不使用MAC地址的串行电缆上)等。

  • 那么,第一个问题是远程是什么意思?

如果你指的是 WAN 中的其他主机,除非两个设备都实现特定协议(protocol),否则这是不可能的:你向这些设备发送请求,他们用他的 mac 地址回复。

如果您指的是同一局域网中的其他主机,则可以在 IPv4 中使用 ARP 协议(protocol),在 IPv6 中使用 NDP(which )。

Arp & NDP

ARP在知道主机的IP地址但不知道MAC地址的情况下在局域网内发送广播,发现有人调用他的主机回复其MAC地址。

NDP 提供了两个主要的功能部分,第一部分与 ARP 相同:网络层地址和链路层地址之间的映射。 (区别在于NDP使用多播地址:前缀f02::1:f/104,结合请求的IPv6地址的低24位)

所以您需要发送 ICMPv6 Neighbor Solicitation 消息。

IPv6 中的地址分配

Link-local IPv6 addresses (and some global IPv6 addresses) use interface identifiers (IIDs) as a basis for unicast IPv6 address assignment. ... IIDs are ordinarily 64 bits long and are formed either directly from the underlyinglink-layer MAC address of a network interface using a modified EUI-64 format. or by another process that randomizes the value in hopes of providing some degree of privacy against address tracking.

因此在大多数情况下,您可以直接从设备的 IPv6 链路本地地址获取设备的 MAC 地址。

结论:

  • 在两个设备中实现您的协议(protocol)
  • 如果请求节点在同一局域网内,则发送 NDP 消息给请求节点
  • 从链路本地 IPv6 地址中提取 MAC 地址

引用

  • 维基百科
  • TCP/IP 图解,第 1 卷

关于ios - 如何以编程方式在 iOS 中通过 IPv6 获取远程 MAC 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38288749/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com