-
ARP/NDP探测:
- ARP请求:Clash发送ARP请求广播或多播,询问是否有其他节点在同一局域网中。
- NDP请求:对于全球地址,Clash发送NDP请求,探测是否有相应的主机或路由器。
-
发送数据包:
在某些情况下,Clash直接发送数据包,观察是否有响应,以太网中发送广播的ARP请求。
-
网络类型处理:
- 以太网:使用ARP协议进行邻居检测。
- Wi-Fi:考虑多个接口和中继,可能需要多次检测。
- 互联网:同时使用ARP和ICMP,发送ping请求或检查路由器状态。
-
平台支持:
- 提取网络接口信息,使用platform层获取配置。
- 在不同平台(如Linux、iOS)中,利用相应的系统调用或socket发送检测请求。
-
错误处理:
处理超时、丢包等异常情况,确保检测结果的准确性。
-
多线程与并发:
- 使用多线程或非阻塞IO,提升同时检测任务的处理能力。
- 对大型网络采用分批次或负载均衡的检测方法。
-
信息存储与更新:
- 记录检测到的节点信息,减少重复检测。
- 定期进行节点检测,保持邻居列表的最新状态。
通过以上步骤,Clash能够在不同网络环境中准确检测到是否存在邻居节点,确保网络协议的快速配置和管理。








