LeeReamond
V2EX  ›  问与答

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

  •  
  •   LeeReamond · Apr 1, 2022 · 2310 views
    This topic created in 1546 days ago, the information mentioned may be changed or developed.

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

    10 replies    2022-04-01 14:55:15 +08:00
    des
        1
    des  
       Apr 1, 2022 via iPhone
    nat 打洞,所以 bt 协议基本都是用 UDP
    riggzh
        2
    riggzh  
       Apr 1, 2022
    upnp 啊。
    antipro
        3
    antipro  
       Apr 1, 2022 via Android
    不是服务器中转的,是直连的。路由器有自动 Nat 功能。
    riggzh
        4
    riggzh  
       Apr 1, 2022
    哦,刚才没仔细看问题,基本都是打洞。
    mons
        5
    mons  
       Apr 1, 2022
    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  
       Apr 1, 2022 via Android
    无法建立连接就无法传输数据。有传输速度的都是点对点连接成功的。
    对于 p 主提出的假设情况来说如果都处于网络严格的状态应该是无法建立连接的。
    ysc3839
        7
    ysc3839  
       Apr 1, 2022 via Android
    A 确保不了数据会到达 B 。不会经服务器中转。
    djv
        8
    djv  
       Apr 1, 2022
    我记得是需要至少一方有公网吧。
    swulling
        9
    swulling  
       Apr 1, 2022
    有一篇文章很好,介绍 Tailscale 怎么打洞的

    http://arthurchiao.art/blog/how-nat-traversal-works-zh/
    swulling
        10
    swulling  
       Apr 1, 2022
    Tailscale 的打洞支持的比较复杂,实测多数的 NAT 都能穿透。

    而一般的 P2P 工具的 NAT 穿透就比较简单,更多的依赖一些端口映射的协议,如 uPnP
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   904 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 21:12 · PVG 05:12 · LAX 14:12 · JFK 17:12
    ♥ Do have faith in what you're doing.