在 liubtorrent 的
ut_holepunch
的背景下,我们假设:
发起对等本地端点是
1.2.3.4:6881
,映射地址是5.6.7.8:5881
现在,当对等点向跟踪器宣布时,跟踪器将保存 5.6.7.8:6881
,因为 6881
是对等点宣布的端口,但它不是面向现实世界的端口。
目标对等本地端点是
9.10.11.12:6882
,映射地址是13.14.15.16:5882
现在,当对等点向跟踪器宣布时,跟踪器将保存 13.14.15.16:6882
,因为 6882
是对等点宣布的端口,但它不是面向现实世界的端口。
bep0055 指出:
发起节点向中继节点发送会合消息, 包含目标对等点的端点(IP 地址和端口)。如果 中继对等点连接到目标对等点,并且目标对等点 支持此扩展,中继对等方发送连接消息到 发起对等点和目标对等点,每个都包含 另一个的端点。收到连接消息后,每个对等体 发起与另一个对等方的 uTP [2] 连接。
因此,当发起对等点向某个中继对等点发送集合消息时,中继对等点必须连接到目标对等点才能工作,但如果跟踪器的目标对等点端口错误,则不会连接任何中继对等点全部交给那个同伴
您应该将消息发送到已连接到目标对等点的中继对等点。哪一个适合可以通过搜索 PEX 的对等列表来找出 (BEP 11)