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

在不同内网的两台机器通过 btsync 共享文件原理是啥?

  •  
  •   xhowhy · 2017-06-03 17:31:18 +08:00 · 2421 次点击
    这是一个创建于 2741 天前的主题,其中的信息可能已经有所发展或是发生改变。

    假如我有两台设备,都在 NAT 后,没有公网 ip,也都不支持 upnp 和端口转发。 这样的场景是如何进行连接和传输数据的,用的什么黑科技? 求达人

    15 条回复    2017-06-04 05:20:47 +08:00
    0ZXYDDu796nVCFxq
        1
    0ZXYDDu796nVCFxq  
       2017-06-03 17:36:21 +08:00 via iPhone
    其他人的节点帮你中转
    xhowhy
        2
    xhowhy  
    OP
       2017-06-03 17:39:04 +08:00 via iPhone
    @gstqc 有详细点的资料吗
    0ZXYDDu796nVCFxq
        3
    0ZXYDDu796nVCFxq  
       2017-06-03 17:41:40 +08:00 via iPhone
    @xhowhy 就是个 BT 下载协议,有个中央服务器,交换节点信息。
    这个不开源,看官方文档吧。

    建议使用 Syncthing,这个是开源的,原理一样。
    xhowhy
        4
    xhowhy  
    OP
       2017-06-03 17:47:22 +08:00 via iPhone
    @gstqc 用的人少,下载资源不方便啊
    des
        5
    des  
       2017-06-03 17:47:38 +08:00 via Android
    楼上的不知道 udp 打洞吗?
    xhowhy
        6
    xhowhy  
    OP
       2017-06-03 17:52:10 +08:00 via iPhone
    @des 求证一下,是不是 https://github.com/syncthing/syncthing/issues/151 里提到的打洞技术

    那么这个打洞依赖一个第三方有公网 ip 的设备了?
    WispZhan
        7
    WispZhan  
       2017-06-03 17:54:24 +08:00
    有个中央服务器 ,用来发现服务和打洞。

    ---

    另外 Bysync 每隔几十秒或 1min 就会想当前局域网发送广播,用来发现局域网的设备。我抓包的时候看到的。

    你用二维码或者链接是直接访问 的中央服务器。这个和 BT 的下载方式差不多。
    xhowhy
        8
    xhowhy  
    OP
       2017-06-03 17:57:03 +08:00 via iPhone
    @WispZhan 中间服务器性能岂不是要超屌……为啥不随便找个有公网的第三方客户端
    WispZhan
        9
    WispZhan  
       2017-06-03 18:01:19 +08:00
    @xhowhy 你看 BT 的种子服务器,是一个列表。具体是什么就只能看文档或者对比 BT 了。

    估计也没多少性能损耗。它找到服务给客户端,并打洞后,基本上就是 P2P 了,没有服务器的事了。数据和其他流量也不会走服务器。
    xhowhy
        10
    xhowhy  
    OP
       2017-06-03 18:05:32 +08:00 via iPhone
    @gstqc https://github.com/syncthing/syncthing/issues/804 看这个帖子似乎他们还没实现用 udp 啊
    des
        11
    des  
       2017-06-03 18:36:45 +08:00 via Android
    @xhowhy 你可以抓包看一下,应该是 udp 打洞。
    不过 tcp 倒也可以打洞
    popu111
        12
    popu111  
       2017-06-03 19:08:38 +08:00 via Android
    @xhowhy 现在有了,基于 kcp 的,详见 lib/connections
    xhowhy
        13
    xhowhy  
    OP
       2017-06-03 20:39:23 +08:00 via iPhone
    @des @popu111 @gstqc 你们都用 st 代替 btsync 吗?
    gdtv
        14
    gdtv  
       2017-06-03 21:08:43 +08:00
    请问如果两台机器都是移动宽带,没有公网 IP,可以直连吗?还是要通过第三方服务器中转才行?
    popu111
        15
    popu111  
       2017-06-04 05:20:47 +08:00
    @xhowhy 事实上,,,我两个都没用(逃
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6019 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 02:08 · PVG 10:08 · LAX 18:08 · JFK 21:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.