tosstome 如何工作

最近核对

tosstome 是运行在 Cloudflare Workers 上的一个小型服务,加上一个网页。服务器负责让设备互相认识,只有在不得不这样做时才转发数据。它从不存储文件。

1. 互相发现

你打开页面时,浏览器会通过 WebSocket 连接到服务器。连接来自同一个公网 IP 地址的设备(通常意味着同一个家庭或办公室网络)会被分到同一组,并显示在彼此的“附近”列表里。该地址在使用前会先做哈希处理。对于处于不同网络的设备,一个 6 位数字码会把它们放进一个临时的专属小组。

2. 直接连接

当你点按某台设备时,双方通过服务器交换 WebRTC 连接信息,并尝试建立一个直连的数据通道,同时借助 Cloudflare 的 STUN 服务,找出如何穿过家用路由器互相访问。WebRTC 直连通道由浏览器进行端到端加密(DTLS)。

3. 回退到中继

有些网络会阻止直连:企业防火墙、访客 Wi-Fi、使用运营商级 NAT 的移动运营商。如果几秒钟内没能建立直连通道,双方就会改为连接到 Cloudflare 上的一个中继。中继在每个数据块到达时转发,不保留任何内容。往返中继的流量由 TLS 加密,但中继目前还不是端到端加密,这在计划之中。

4. 传输数据

浏览器和命令行工具运行的是同一套传输协议:小的 JSON 控制消息加上二进制数据块,接收方会回复确认,所以发送方不会让慢速连接不堪重负。无论是通过直连通道还是中继,它的行为都一样。

5. 收件箱

命令行工具会保持一个常驻的收件箱。它会创建两个秘密密钥:一个留在电脑上的代理密钥,以及一个放在收件箱链接 # 之后的发送密钥。浏览器不会把链接的这一部分发给服务器,密钥是在 WebSocket 中传递的。服务器只保存这两个密钥的 SHA-256 哈希值。当手机打开链接并发送时,服务器会在手机和电脑之间传递 WebRTC 连接信息,就像在两个浏览器之间那样,所以在同一网络中,文件会直接进入收件箱文件夹,而不会离开这个网络。如果没能建立直连通道,双方就改用中继会话。命令行工具用 6 位数字码向浏览器发送时,或者浏览器从附近设备列表向它发送时,也用同样的方式直连。

尚未实现的部分

想知道服务能看到什么,请阅读隐私页面。

常见问题

tosstome 是端到端加密的吗?

WebRTC 直连传输是,由浏览器的 DTLS 提供。经中继的传输在每台设备与 Cloudflare 之间由 TLS 加密,但目前还不是端到端加密。

WebRTC 是什么?

一种用于实时点对点连接的浏览器标准,视频通话类应用都在使用。tosstome 用它的数据通道在浏览器之间直接发送文件。

我的文件会被上传或存储在某处吗?

不会。网络条件允许时,文件通过 WebRTC 直接从一台设备传到另一台。条件不允许时,文件会经过 Cloudflare 上的中继,中继在数据到达时就转发,不会保留任何内容。如果接收方不在线,则不会发送任何内容。

既然是点对点,为什么还需要联网?

浏览器需要一台服务器来互相发现并交换连接信息。一旦直接连上,文件数据就在设备之间传输。

相关内容

马上试试

在两台设备上打开 toss2.me。无需应用,无需账号,不保存任何内容。

立即发送文件