P2P 下载工具是如何解决 NAT 问题的?

2022-04-01 12:47:28 +08:00
 LeeReamond

如题,假设 IPV4 条件下 A 和 B 同时使用 utorrent 下载同一种子(两人均无公网 IP ),由 A 向 B 发送数据。那么 A 如何能确保发送出的数据会抵达 B ?他们之间(不包括协调过程,仅就传输过程而言)是否需要经由中转服务器中转?如果是的话现在一般单用户 P2P 下载很容易跑到 10MBPS ,这么多用户中转服务器岂不爆炸。。

1662 次点击
所在节点    问与答
10 条回复
des
2022-04-01 12:55:22 +08:00
nat 打洞,所以 bt 协议基本都是用 UDP
riggzh
2022-04-01 12:58:10 +08:00
upnp 啊。
antipro
2022-04-01 12:58:42 +08:00
不是服务器中转的,是直连的。路由器有自动 Nat 功能。
riggzh
2022-04-01 12:59:59 +08:00
哦,刚才没仔细看问题,基本都是打洞。
mons
2022-04-01 13:00:26 +08:00
UPnP / NAT-PMP 打洞。例

https://github.com/qbittorrent/qBittorrent/wiki/Explanation-of-Options-in-qBittorrent#listening-port
https://docs.netgate.com/pfsense/en/latest/services/upnp.html

现在的路由器一般都支持,但可能出于安全原因而默认禁用。
V1Eerie
2022-04-01 13:19:19 +08:00
无法建立连接就无法传输数据。有传输速度的都是点对点连接成功的。
对于 p 主提出的假设情况来说如果都处于网络严格的状态应该是无法建立连接的。
ysc3839
2022-04-01 13:20:21 +08:00
A 确保不了数据会到达 B 。不会经服务器中转。
djv
2022-04-01 14:49:57 +08:00
我记得是需要至少一方有公网吧。
swulling
2022-04-01 14:51:36 +08:00
有一篇文章很好,介绍 Tailscale 怎么打洞的

http://arthurchiao.art/blog/how-nat-traversal-works-zh/
swulling
2022-04-01 14:55:15 +08:00
Tailscale 的打洞支持的比较复杂,实测多数的 NAT 都能穿透。

而一般的 P2P 工具的 NAT 穿透就比较简单,更多的依赖一些端口映射的协议,如 uPnP

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/844301

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX