ED2K 和 DHT 两个网络有什么区别
ED2K(电驴)网络
ED2K 是 eDonkey 协议的第二代,典型的"服务器-客户端"架构。
工作方式
- 客户端先连接一台 ED2K 服务器
- 向服务器发送关键词查询
- 服务器返回匹配的文件(服务器维护了一份索引)
- 服务器告诉客户端哪些节点正在共享这个文件
- 客户端直接从这些节点下载
优点
- 服务器维护的索引质量较高,搜索结果更相关
- 不依赖本地 DHT 引导,启动快
- 老牌服务器积累了大量历史资源索引
痛点
- 服务器是单点——服务器挂了就搜不到
- 运营商容易屏蔽 ED2K 服务器端口(4662/4672)
- 活跃服务器数量逐年减少
DHT(分布式哈希表 / KAD)网络
DHT 没有中心服务器,每个客户端同时是服务器和节点,通过一个分布式哈希表来定位资源。
工作方式
- 客户端先接入 KAD 引导节点
- 每个节点有一个唯一的节点 ID
- 搜索关键词被哈希成一个 ID,找"最接近这个 ID"的节点
- 那个节点再找"更接近"的节点,形成一个链
- 最终找到持有匹配文件的节点,结果直接回传
优点
- 完全分布式,没有中心服务器,不会被整体屏蔽
- 每个节点只需要维护少量邻近节点,网络很灵活
- 在 ED2K 服务器被屏蔽时,DHT 网络往往还能正常工作
痛点
- 搜索结果的相关性比 ED2K 服务器差一些
- 第一次启动需要花时间构建 KAD 路由表
- 网络波动大的时候 DHT 节点连接不稳定
P2PSearcher 为什么要同时用两个网络
简单说:ED2K 搜得准,DHT 搜得广。
两个网络的活跃节点集合有重叠但不相同,同时搜就能拿到合并后的结果集。在运营商屏蔽 ED2K 服务器的场景下,DHT 网络通常还能正常工作,这就是穿透模式能解决大部分"搜不到"问题的原因。反过来,在 DHT 网络抖动的时候,ED2K 服务器能兜底。

在软件里怎么看两个网络的状态
P2PSearcher 主界面底部或侧边会分别显示 ED2K 和 DHT 的连接状态。正常情况下,两个网络都应该能连上——ED2K 显示"已连接 N 台服务器",DHT 显示"已发现 M 个节点"。如果只有一个连得上,另一个挂了但还能用;两个都挂才是真的需要排查。