最近更新: 2026-07-09
「点对点」这个词经常被随意使用,但对文件传输来说,它的确切含义是:文件直接从一台设备到另一台设备,而不是先上传到某家公司的服务器再下载下来。中间没有一站可以停留、可能留下副本。
这听起来很简单,但互联网原本并不是为了让两台随机设备直接找到彼此并对话而设计的——大多数连接都藏在路由器和防火墙后面,这些设备从一开始就没打算被外部直接访问到。本文用通俗的语言讲清直连究竟是怎么建立的、什么时候建立不了,以及这对隐私和速度意味着什么。全文会以 Relayium 作为具体例子,因为它正是这套机制的一个真实实现。
大多数「发送文件」工具的工作方式是上传:文件从你的设备上传到公司的服务器,存放在那里,对方再从服务器下载下来。这是两跳,而且有一段时间,你文件的完整副本会存放在别人的存储上——即便之后会被删除。
点对点传输省掉了这一站。一旦你的设备和对方设备之间建立起连接,文件的字节就直接经这一跳流动,不再经过别处。没有服务器端的副本需要存储、需要保护,也不需要日后再删除,因为它压根没有被上传过。
这里有一个不太直观的地方:你的设备几乎肯定不知道自己在公网上看起来是什么地址——它藏在家用路由器或运营商的网络地址转换(NAT)后面,这层机制会把它隐藏在一个共享的公网 IP 之后,并动态地重新分配端口。对方设备也处于同样的处境。双方都无法在不先弄清楚「什么地址才能真正连到对方」之前,直接「拨号」找到对方。
这正是 STUN(NAT 会话穿越工具)的用途。每台设备会向一个轻量的 STUN 服务器简短地问一个问题:「你看到我是从哪个地址、哪个端口过来的?」答案告诉它自己对外可见的地址——不涉及文件,不涉及任何内容,只是足够描述一条能连回它的路径的网络信息。双方交换这些信息(通过一个只承载连接建立细节、从不承载文件字节的信令步骤),然后尝试直接打通到对方地址的路径。在很多真实场景中——尤其是同一个 Wi-Fi 下的两台设备,或者行为可预测的 NAT——这一步就能成功,从而建立起完全直连的连接。
有时 STUN 还不够。有些 NAT——尤其是较严格的企业网络或某些移动运营商——行为难以预测,仅凭外部信息根本无法找出一条直连路径。如果双方设备都处在这类 NAT 之后,真正意义上的直连就是不可能的;总得有什么东西居中转发流量。
这正是 TURN(借助中继穿越 NAT)的作用:当直连路径失败时,双方设备都会连接到一个兜底的中继服务器。这与其说是一种权宜之计或对隐私的妥协,不如说是某些网络结构本身决定的必然情况——但值得说清楚它到底能看到什么、看不到什么。在 Relayium 中,文件在到达中继之前就已经端到端加密完毕,因此中继始终只转发密文——一段它没有钥匙打开的封装数据。它只负责搬运字节,无法读懂内容。
隐私方面的道理很直接:当文件的字节只经过一跳、直接在两台设备之间流动时,就不存在一个服务器端的存储环节,让副本可能停留、被记录,或被别人访问——因为它压根没被放在那里过。这与「我们承诺以后会删除」是结构上完全不同的保证。
速度方面的道理也是一样。先上传再下载的传输需要两次穿越网络——上行一次,下行一次——而且经常需要等发送方完全上传完,接收方才能开始下载。而直连只穿越网络一次,数据可以在两台设备之间持续流动,速度取决于两端中较慢的那条连接,中间没有服务器限制吞吐量或增加额外延迟。
在同一网络下的两台设备上打开 relayium.com,它们通常会自动找到彼此——不需要账号,不需要配对码,也无需安装任何东西;这就是局域网场景,很多时候甚至用不上 STUN。要跨网络发给不同网络上的人,则用配对码:发送方登录、生成一个配对码(或分享链接,也可选择扫描二维码),对方加入之后,同样是先 STUN、必要时再 TURN 的流程来建立直连或中继连接——无论走哪条路径,接收方都不需要账号。
无论哪种方式,一旦连接建立,一批最多 1,000 个文件就会直接经这条连接流动,每个文件都独立用 SHA-256 哈希校验,确保到手的和发出的分毫不差。如果实时传输做不到——比如对方不在线——那就是一种确实不同的模式(零知识存储链接),不属于点对点,值得单独理解。
两者相关但并不相同。P2P 描述的是网络路径——字节直接在两台设备之间流动。加密描述的是这些字节对中间任何人是否可读。Relayium 的实时传输两者兼具:无论走的是直连还是「经过中继但已加密」的路径,文件都是端到端封装的。
一个小型信令服务器会帮两台设备找到彼此的地址——但它只会看到连接建立所需的信息,从不涉及文件字节。如果找不到直连路径,TURN 中继会转发加密后的文件数据,但即便如此,它处理的也只是它无法解密的密文。
有些网络——常见于较严格的企业防火墙或某些移动运营商的 NAT——其构造方式使得仅凭外部信息根本无法找出一条可达的地址。这种情况比听起来要少见,但一旦发生,中继就是让传输继续进行而不是直接失败的关键。
会增加一些延迟,因为中继是数据要经过的一跳额外路径,而且是共享服务器而非专用服务器。但总体上仍然比先上传再下载要快,因为不需要等文件完全落到服务器上,下载端才能开始。
同一网络下的两台设备完全不需要账号。跨网络用配对码发送时,需要发送方登录,但无论哪种方式,接收方都不需要账号。
想亲身感受一下?在两台设备上打开 Relayium,看着一条直连连接实时建立起来。
立即试用 Relayium