You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ut_holepunch中中继节点如何连接目标节点?端口错误场景分析

libtorrent ut_holepunch场景的端口匹配问题

在libtorrent的ut_holepunch场景下,我们做如下假设:

  • 发起节点的本地端点为1.2.3.4:6881,映射地址为5.6.7.8:5881。当该节点向tracker宣告时,tracker会保存5.6.7.8:6881——因为6881是节点宣告的端口,但并非其实际对外端口。
  • 目标节点的本地端点为9.10.11.12:6882,映射地址为13.14.15.16:5882。当该节点向tracker宣告时,tracker会保存13.14.15.16:6882——因为6882是节点宣告的端口,但并非其实际对外端口。

BEP-0055中明确:

发起节点向中继节点发送包含目标节点端点(IP地址和端口)的会合消息。如果中继节点已连接到目标节点,且目标节点支持该扩展,中继节点会向发起节点和目标节点各发送一条连接消息,其中包含对方的端点。收到连接消息后,两个节点都会向对方发起uTP连接。

基于此逻辑,发起节点向中继节点发送会合消息时,中继节点必须已连接到目标节点才能触发打洞流程。但如果tracker保存的目标节点端口错误,所有中继节点都无法连接到该目标节点,最终导致ut_holepunch打洞失败。

内容的提问来源于stack exchange,提问作者MOHAMMAD RASIM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 02:44:53