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

2017-06-03 17:31:18 +08:00
 xhowhy

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

2342 次点击
所在节点    问与答
15 条回复
gstqc
2017-06-03 17:36:21 +08:00
其他人的节点帮你中转
xhowhy
2017-06-03 17:39:04 +08:00
@gstqc 有详细点的资料吗
gstqc
2017-06-03 17:41:40 +08:00
@xhowhy 就是个 BT 下载协议,有个中央服务器,交换节点信息。
这个不开源,看官方文档吧。

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

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

---

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

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

估计也没多少性能损耗。它找到服务给客户端,并打洞后,基本上就是 P2P 了,没有服务器的事了。数据和其他流量也不会走服务器。
xhowhy
2017-06-03 18:05:32 +08:00
@gstqc https://github.com/syncthing/syncthing/issues/804 看这个帖子似乎他们还没实现用 udp 啊
des
2017-06-03 18:36:45 +08:00
@xhowhy 你可以抓包看一下,应该是 udp 打洞。
不过 tcp 倒也可以打洞
popu111
2017-06-03 19:08:38 +08:00
@xhowhy 现在有了,基于 kcp 的,详见 lib/connections
xhowhy
2017-06-03 20:39:23 +08:00
@des @popu111 @gstqc 你们都用 st 代替 btsync 吗?
gdtv
2017-06-03 21:08:43 +08:00
请问如果两台机器都是移动宽带,没有公网 IP,可以直连吗?还是要通过第三方服务器中转才行?
popu111
2017-06-04 05:20:47 +08:00
@xhowhy 事实上,,,我两个都没用(逃

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

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

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

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

© 2021 V2EX