浏览器里的点对点文件传输
最近核对
大多数“发送文件”网站会先把文件上传到它们的服务器,对方稍后再下载。点对点(P2P)传输则省去了存储这一步:两台设备都在线时,文件直接从你的设备传到对方的设备。
上传再分享链接 vs 点对点
| 上传并分享链接 | 点对点 | |
|---|---|---|
| 文件去了哪里 | 先到服务器,再到接收方 | 直接到接收方 |
| 是否留下副本 | 是,直到过期 | 否 |
| 接收方必须此刻在线 | 否 | 是 |
| 同一 Wi-Fi 下的速度 | 受限于你的上传带宽 | 受限于你的本地网络 |
tosstome 是怎么做的
- 两个浏览器都连接到 toss2.me 来互相发现:同一网络中的附近设备,或者跨网络时用 6 位数字码。
- 它们交换连接信息,并在两者之间建立一个 WebRTC 数据通道,由浏览器加密(DTLS)。
- 文件以数据块的形式在这个通道里流式传输,接收方会确认已到达的内容。
- 有些网络会阻止直连。如果几秒钟内没能建立直连,传输就会经过 Cloudflare 上的中继,中继在数据到达时转发,不保留任何内容。
完整的细节请看工作原理。
试一试
- 在两台设备的浏览器中打开 toss2.me。
- 如果它们连接的是同一个 Wi-Fi,几秒钟内,每台设备都会出现在对方的同一网络中的设备列表里。
- 在发送端点按另一台设备,选择一个或多个文件。
- 在接收端按接收,文件到达后,再按每个文件旁边的保存。
常见问题
点对点文件分享安全吗?
WebRTC 直连通道由浏览器进行端到端加密,服务器上也不存储任何内容。和任何下载一样,只接收你预期的人发来的文件。当 tosstome 回退到中继时,与 Cloudflare 之间的连接由 TLS 保护,但目前还不是端到端加密。
需要安装 P2P 软件吗?
不需要。现代浏览器内置了 WebRTC,所以两端有一个网页就够了。如果你想在服务器上接收,可以使用命令行工具。
文件大小有限制吗?
tosstome 没有设置大小限制。接收端的浏览器会把文件放在内存中,直到你保存,所以对于几个 GB 的文件,命令行收件箱是更好的接收方式,因为它会直接写入磁盘。
两台设备必须连接同一个 Wi-Fi 吗?
不需要。在同一网络中,设备会自动互相发现。在不同网络中,例如手机用移动数据、笔记本在家里,由一台设备生成 6 位数字码,另一台输入即可。