ToolAct工具行动

局域网文件传输

通过 WebRTC 在同一局域网内的设备之间直接传输文件和文字,无需服务器

什么是局域网文件传输?

局域网文件传输使用 WebRTC 点对点通信,在同一局域网内的两台设备之间发送文件和文本。连接建立后,数据可以在浏览器之间直接传递,而不是先上传到外部网盘或服务器再下载。它适合办公室电脑、测试设备、家庭网络、教室、实验室,以及不想使用 U 盘、云盘或聊天附件的快速交接场景。传输速度取决于本地网络、浏览器支持和设备性能。处理敏感文件时,应确认接收设备确实是目标对象,并在传输完成后关闭临时会话。

使用方法

如何使用

  1. 在一台设备上点击“创建连接”,系统会生成包含连接信息的二维码
  2. 用另一台设备扫描二维码,页面会自动打开并生成响应码
  3. 用第一台设备扫描响应码,即可建立 WebRTC 连接
  4. 连接成功后,双方可互发文本消息和任意类型的文件。

传输提示

  • 传输文件期间请保持两台设备唤醒且网络可达;关闭标签页或设备休眠会中断 WebRTC 会话。
  • 对于非常大或重要的文件,传输完成后请校验下载内容,因为浏览器内存、网络质量和设备限制都可能影响传输可靠性。

使用场景

无需服务器上传即可在附近设备间发送文件创建 WebRTC 连接,将生成的二维码或链接分享给同一网络中的另一台设备,然后将文件拖入聊天区域。文件分块通过 DataChannel 传输,接收端从浏览器中下载重建后的 Blob。由于数据点对点传输,中继服务器、云盘或文件存储中间方在传输过程中都看不到内容。
在机器之间快速传递文字便签对等连接建立后,工具就像一个轻量级的本地聊天。当消息应用或云剪贴板不可用时,方便从桌面向手机传递命令、URL、一次性验证码或简短便签。消息留在 DataChannel 上,不会经过外部服务器,因此不会出现在聊天记录同步或设备备份中。
测试浏览器之间的直连能力Offer/Answer 流程会暴露等待中、已连接、失败和已断开等连接状态,协商中断时可重置。由于对等连接不使用配置的 ICE 服务器,最适合本地或可达的对等方而非任意互联网穿越,这正是验证纯局域网拓扑所需要的。
传输超过聊天附件限制的大文件WebRTC DataChannel 对流进行分块,因此数百兆的视频或日志压缩包可以直接在浏览器之间传输,不受邮件、Slack 或大多数即时通讯应用的大小限制。接收端重建 Blob 下载时,聊天区域会显示进度事件,局域网路径的吞吐量远高于云端中转。
传输完成后关闭会话并撤销 Offer 链接交换完成后使用重置按钮断开对等连接,并停止分享二维码或链接,防止迟到的对等方连接到已打开的房间。对于敏感文件,还应清除接收设备的浏览器下载记录并撤销 Offer SDP,避免从剪贴板重放。

技术原理

局域网文件传输基于 WebRTC(Web Real-Time Communication)构建,这是 W3C/IETF 标准,定义于 RFC 8825-8835,最初为浏览器端实时音视频设计。同一套点对点机制支持 RTCDataChannel API,可在两个浏览器之间传输任意二进制负载,数据路径中无需中继服务器。打开通道的信令由二维码握手完成:发起方创建一个 SDP(Session Description Protocol,RFC 8866)数据块描述其媒体和数据能力,编码在 URL 或二维码中,应答方返回对应的 SDP。双方应用远端描述后,ICE(Interactive Connectivity Establishment,RFC 8445)收集候选传输地址。 每个候选是一个 (IP, port, protocol) 元组加上优先级:host 候选(设备自身的局域网 IP)在同一网络中通常优先,但 srflx(server-reflexive,从 STUN 绑定请求获取)和 relay(TURN 中继,RFC 8656)候选按优先级顺序尝试。连通性检查在候选之间发送 STUN 绑定请求;第一对成功的成为选定候选对。ICE 达到 connected 状态后,DTLS(Datagram Transport Layer Security,RFC 6347,TLS 1.2/1.3 在 RFC 5246/8446 中的 UDP 友好版本)使用 SDP 中固定的证书哈希进行指纹验证,执行一次 RTT 握手。DTLS 会话密钥随后保护上面的每个 SCTP(Stream Control Transmission Protocol,RFC 4960/RFC 9260)数据包,每个 DataChannel 是运行在该单一 DTLS 关联上的一对 SCTP 流。 大文件通过 DataChannel 分块发送。浏览器的 SCTP 层将每条消息分片为约 16 KB 的记录(默认 SCTP MTU 减去 DTLS + SCTP + Chunk Header 开销,根据实现可调,通常为 16 KB 或 64 KB 取决于引擎),接收方按序重组。流控和拥塞控制(RFC 4960 §6)防止发送方淹没接收方:cwnd 在 ACK 时加性增长,丢包时乘性收缩,与 TCP 的 AIMD 形状相同但应用于每个 SCTP 关联。在千兆局域网上,端到端吞吐量通常被浏览器主线程的编码成本限制在 200-400 MB/s(将每个块转换为 ArrayBuffer 视图并推入 SCTP 栈),而非线路速度。页面将传入的块重组为单个 Blob 并提供下载,让用户决定字节存放位置,避免接收方在峰值时占用数 GB 内存。 由于数据通过 DTLS-SRTP 式加密进行点对点传输,中间路由器和任何中继服务器只能看到密文;页面运营者永远看不到明文,也没有上传步骤。权衡在于需要信令服务器来交换 SDP——本页面使用二维码和复制粘贴链接作为手动、无服务器的信令通道,这就是需要扫描两次的原因。

  • WebRTC 是 W3C/IETF 标准 (RFC 8825-8835),捆绑三个引擎:SDP 用于协商、ICE 用于候选收集、DTLS-SRTP / DTLS-SCTP 用于传输安全。
  • 二维码握手是无服务器信令:发起方发布 SDP offer,应答方返回 SDP answer,中央服务器永远不会看到数据路径。
  • ICE (RFC 8445) 收集 host、srflx (STUN 反射)、prflx (对等反射) 和 relay (TURN, RFC 8656) 候选;通过连通性检查的最高优先级候选对成为选定传输。
  • DTLS (RFC 6347) 使用 SDP 中固定的证书哈希进行一次 RTT 指纹验证握手,然后加密线路上的每个字节——没有纯 HTTP 或 WebSocket 回退。
  • DataChannel 运行在 SCTP-over-DTLS 上,而非原始 UDP:SCTP 在 UDP 套接字之上提供有序、可靠、面向消息的流,并具有拥塞控制 (RFC 4960 §6)。
  • 分块大小默认约 16 KB(因浏览器而异,有时 64 KB):接收方将块重组为单个 Blob 并触发下载,避免将整个文件保留在内存中。
  • 浏览器内存是真正的上限:1 GB 文件意味着约 1 GB 的 ArrayBuffer 开销,因此在手机上实际限制通常为每次传输 200-500 MB,而非网络速度。
  • WebRTC NAT 穿透需要 STUN/TURN 服务器来处理跨网络对等方;本页面假设同局域网拓扑,因此 host 候选(局域网 IP)通常优先,不会查询 STUN 服务器。

示例

手机照片传到电脑

1. 在电脑端点击「创建连接」生成二维码
2. 用手机扫描二维码,页面打开后会生成一个回应码
3. 在电脑上扫描回应码完成握手
4. 选择要发送的照片,点击发送

电脑文件传到手机

连接建立后,在电脑上点击「发送文件」,选择文档、压缩包或视频。
手机端收到提示,一键即可保存文件。

互发文字消息

连接成功后,双方都可以在输入框里输入并发送。
无需安装任何额外应用——浏览器里就能简单聊天。

常见问题

文件传输是怎么工作的?

同一局域网内的两台设备通过 WebRTC 建立点对点连接。完成信令握手后,文件直接在两个浏览器之间传输——不会经过任何中转服务器。速度取决于你的局域网(Wi-Fi 或以太网),典型 Wi-Fi 速率为 30-150 Mbps。

我的文件会离开局域网吗?

WebRTC 连接建立后,不会——文件字节只在两台设备之间流动。在连接建立前,会有一小段信令(交换会话描述)通过协调服务器进行;这只是元数据,不包含文件内容。

为什么两台设备连不上?

两台设备必须连到同一个 Wi-Fi 网络或同一局域网网段。企业网络常常屏蔽点对点连接;公共 Wi-Fi 经常对客户端做隔离(client isolation)。可以换个人 Wi-Fi 或开热点试试。任一端开启的 VPN 也会阻断直连。

有文件大小限制吗?

WebRTC 协议本身没有限制,实际瓶颈是浏览器内存和标签页存活时间。多 GB 的传输在桌面端通常没问题;移动端浏览器可能会挂起标签页导致传输中断。大文件传输时请保持两端的标签页都在前台。

传输的文件加密吗?

加密。WebRTC 数据通道使用 DTLS-SRTP 端到端加密,即便有人在同一 Wi-Fi 下也无法看到文件内容。信令阶段通过 HTTPS 与协调服务器通信。只要两端都可信,整个传输就是私密的。

非技术用户也能用吗?

可以——把房间码或链接发给对方,对方在浏览器中打开即可自动建立连接。无需安装应用。界面体验类似 AirDrop,但没有平台限制。iOS Safari、Android Chrome、Windows Edge、macOS Firefox 之间都能互通。

可以同时发送给多台设备吗?

大多数版本支持一对一房间。要发送给多个接收方,可重复传输,或使用支持多播的工具。WebRTC 上虽然能实现群发,但会消耗 N 倍的上行带宽。