>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
TypeScript

不借助云端和限速,向同事发送 50 GB 文件的方法

DashBeam Header

一个常见的场景:需要给同事发送一个 20 GB 的最新数据库转储文件,或者一个包含大量日志的压缩包。Telegram 会抱怨文件大小限制。Google Drive 和 Yandex Disk 要求你先把所有内容上传到自己的存储空间,占用你的磁盘配额,然后强迫接收者等待下载。熟悉的 LocalSend 在办公室局域网内很方便,但当对方使用不同的 ISP 时就无能为力了。

最近偶然发现了一个有趣的项目叫做 DashBeam(之前开发时叫 AltSendme)。这个程序正是为了解决这类问题:它能通过互联网直接将文件和整个文件夹从一台电脑转发到另一台电脑,不会在中间服务器上存储任何内容。

DashBeam working demo

技术原理

DashBeam 基于 Iroh 网络协议栈构建。这是一个用 Rust 编写的开源 P2P 引擎。它使用基于 UDP 的 QUIC 协议和 TLS 1.3 加密,而不是传统的 HTTP 或不稳定的 WebRTC。

数据传输设计得很巧妙:

  • 文件和文件夹被分割成内容寻址的块(blob)。每个块都使用快速的 BLAKE3 加密哈希进行验证。如果连接中断,DashBeam 不会从头开始重新下载文件——它只发送缺失的块。
  • 配对时会生成一个文本票据。该字符串包含发送者的标识符(Ed25519 密钥)、直连地址以及请求文件的哈希值。
  • 设备首先尝试通过 QUIC 洞穿技术穿透 NAT,以直接路由流量。如果两个节点都位于严格的防火墙后面,流量会通过中继传输,但内容是加密的。中继只能看到乱码,无法读取实际内容。
  • 对于自己设备之间的常规交换,可以进行永久配对。用一个码将工作笔记本和手机配对一次,之后就可以一键发送文件,无需手动复制票据。

在基准测试中,开发者展示了最高 125 MB/s 的速度(受千兆网络链路限制),已记录的最大传输文件为 452 GB。

+----------------+                               +------------------+
| Sender (NodeA) | <====== QUIC / TLS 1.3 =====> | Receiver (NodeB) |
+----------------+        (Direct P2P Link)      +------------------+
        \                                                 /
         \-- [Fallback via encrypted Relay if NAT fails]-/

DashBeam 与同类产品的区别

P2P 传输市场不缺解决方案,但每个都有各自的特点:

LocalSend 在单个局域网内表现出色,但如果没有 VPN 配置就无法穿透互联网进行传输,而且中断的传输必须从头开始重新传输。

Magic Wormhole 在终端中很出色,但它缺少一个像样的官方 GUI,而且无法恢复中断的文件传输。

像 PairDrop 这样的基于浏览器的工具受到 WebRTC 限制和浏览器标签页内存的制约,这就是为什么 GB 级别的文件夹经常导致页面崩溃。

DashBeam 综合了所有场景。该应用提供 Windows、macOS 和 Linux 的桌面客户端、Android 独立 APK、轻量级终端 CLI,甚至还有一个精简的网页版,用于无法安装软件的场景。

使用方法

工作流程很简单:

  1. 将文件或目录拖放到程序窗口中。
  2. 获取生成的票据,通过任意通讯软件发送给接收者。
  3. 接收者将票据粘贴到客户端中,查看文件预览,然后确认下载。

如果你经常在自己机器之间共享测试版本或压缩包,更方便的做法是进入设置区域,用永久配对链接设备,然后只需点击一次「发送」按钮即可直接传输数据。

谁会觉得这个项目有用?需要快速传输虚拟机、备份和转储文件而不占用公司磁盘空间的开发者和 DevOps 工程师。需要向客户交付源文件而不受云存储大小限制的视频编辑师和设计师。

源代码采用 AGPL-3.0 许可证发布。如果需要,你可以部署自己的中继服务器和 DNS 发现服务到你的 VPS 上——文档和配置都在项目仓库中。

相关项目