【问题标题】:c# - How to find all IPV6 IP addresses on LANc# - 如何在 LAN 上查找所有 IPV6 IP 地址
【发布时间】:2016-04-08 19:42:11
【问题描述】:

仍然习惯这一点,但有人知道检索网络上所有 IPV6 的 IP 地址的最佳方法吗?

【问题讨论】:

  • IP 从来没有真正设计来促进这一点。即使使用 IPv4,暴力破解方法在大型子网上也可能需要很长时间。使用 IPv6 和允许 18,446,744,073,709,551,616 个可能地址的子网,以每秒 100 万个地址的速度扫描所有地址需要 584,942 年。你应该看看 IPv6 ND (Neighbor Discovery)。

标签: c# networking ipv6 discovery


【解决方案1】:

在特定接口上 Ping ff02::1 是一种要求该接口上的所有节点回复 ping 的方法。当然,由每个节点来确定它们是否确实回复。

ff02prefix for the link-local multicast scope::1 是“所有节点”目的地。在实践中,您可能还必须添加接口编号,例如ff02::1%3 用于 3 号接口。这是因为您必须指定在哪个接口上发送 ping。

我不知道如何在 C# 中执行此操作,我也无法让它在 Windows 10 cmd.exe 上运行,ping 只会说没有回复。但在我的 OS X 笔记本电脑上,它可以工作:

:; ping6 ff02::1%en0
PING6(56=40+8+8 bytes) fe80::xxxx:xxxx:xxxx:xxxx%en0 --> ff02::1%en0
16 bytes from fe80::xxxx:xxxx:xxxx:xxxx%en0, icmp_seq=0 hlim=64 time=0.089 ms
16 bytes from fe80::yyyy:yyyy:yyyy:yyyy%en0, icmp_seq=0 hlim=64 time=2.160 ms
16 bytes from fe80::zzzz:zzzz:zzzz:zzzz%en0, icmp_seq=0 hlim=64 time=2.238 ms

如果您希望连接到在 LAN 中的其他节点上运行的您自己的程序,您可能应该为此设置一个特定的多播地址,或者使用带有特定 udp 端口​​的 ff02::1。这在 IPv4 和 IPv6 上基本相同。

编辑:刚刚注意到,至少在默认情况下,Windows 10 似乎也不会响应这些 ping。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多