如题,假设 IPV4 条件下 A 和 B 同时使用 utorrent 下载同一种子(两人均无公网 IP ),由 A 向 B 发送数据。那么 A 如何能确保发送出的数据会抵达 B ?他们之间(不包括协调过程,仅就传输过程而言)是否需要经由中转服务器中转?如果是的话现在一般单用户 P2P 下载很容易跑到 10MBPS ,这么多用户中转服务器岂不爆炸。。
1
des 2022-04-01 12:55:22 +08:00 via iPhone
nat 打洞,所以 bt 协议基本都是用 UDP
|
2
riggzh 2022-04-01 12:58:10 +08:00
upnp 啊。
|
3
antipro 2022-04-01 12:58:42 +08:00 via Android
不是服务器中转的,是直连的。路由器有自动 Nat 功能。
|
4
riggzh 2022-04-01 12:59:59 +08:00
哦,刚才没仔细看问题,基本都是打洞。
|
5
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 现在的路由器一般都支持,但可能出于安全原因而默认禁用。 |
6
V1Eerie 2022-04-01 13:19:19 +08:00 via Android
无法建立连接就无法传输数据。有传输速度的都是点对点连接成功的。
对于 p 主提出的假设情况来说如果都处于网络严格的状态应该是无法建立连接的。 |
7
ysc3839 2022-04-01 13:20:21 +08:00 via Android
A 确保不了数据会到达 B 。不会经服务器中转。
|
8
djv 2022-04-01 14:49:57 +08:00
我记得是需要至少一方有公网吧。
|
9
swulling 2022-04-01 14:51:36 +08:00
有一篇文章很好,介绍 Tailscale 怎么打洞的
http://arthurchiao.art/blog/how-nat-traversal-works-zh/ |
10
swulling 2022-04-01 14:55:15 +08:00
Tailscale 的打洞支持的比较复杂,实测多数的 NAT 都能穿透。
而一般的 P2P 工具的 NAT 穿透就比较简单,更多的依赖一些端口映射的协议,如 uPnP |