V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
LeeReamond
V2EX  ›  问与答

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

  •  
  •   LeeReamond · 2022-04-01 12:47:28 +08:00 · 1783 次点击
    这是一个创建于 968 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    10 条回复    2022-04-01 14:55:15 +08:00
    des
        1
    des  
       2022-04-01 12:55:22 +08:00 via iPhone
    nat 打洞,所以 bt 协议基本都是用 UDP
    riggzh
        2
    riggzh  
       2022-04-01 12:58:10 +08:00
    upnp 啊。
    antipro
        3
    antipro  
       2022-04-01 12:58:42 +08:00 via Android
    不是服务器中转的,是直连的。路由器有自动 Nat 功能。
    riggzh
        4
    riggzh  
       2022-04-01 12:59:59 +08:00
    哦,刚才没仔细看问题,基本都是打洞。
    mons
        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

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

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

    而一般的 P2P 工具的 NAT 穿透就比较简单,更多的依赖一些端口映射的协议,如 uPnP
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1495 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:56 · PVG 00:56 · LAX 08:56 · JFK 11:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.