Dat,一个实用的 P2P 文件传输协议

介绍

传一个大文件的时候,你需要 U 盘,某些网盘的分享链接和密码,还是某些聊天软件的所谓网络极速数据线?这些都不够简便,或者说你传输的文件的安全性无法保证,它们极有可能被那些给你提供文件中转服务的“善意”的第三方所审查,而且你不知道这份文件是不是遭到了篡改,或者被进行了中间人攻击,既无法控制也无法知晓。有时候,你多想把一个文件或数据稳妥地面对面地保密地交给一个人啊,可是条件并不会总是那么完善。

是的,谜底不用揭晓也知道,本文的主角,Dat,可以满足你关于安全性,速度,和易用性的大部分要求。

Dat 是一个自由的、开源的软件,由非盈利组织 Code for Science & Society 开发。目前,一些研究人员,分析人士,图书馆,大学,都已经使用 dat 来保存和分发科学数据。开发者们也使用 Dat 来做一些 P2P 的网站和其他应用。任何人都可以轻松地使用 Dat 备份或分享文件。

Dat 有几大优点,

(1) 分布式网络

和 Dropbox 等网络云盘不同的是,Dat 采用分布式网络,这意味着 Dat 以端到端的方式传送文件,不需要中心服务器的中转,Dat 使文件传输更快更安全。你甚至可以在本地无外网的局域网内传送文件,也可以在本地网络中进行文件多点备份。如果你打算同样在服务器上运行 Dat,他也会减少你的带宽消耗,因为一些受欢迎的文件无需从你这里取得,每个活跃的用户都是一个自然的 “CDN”。

(2) 数据历史

Dat 可以方便保留旧版文件。每次文件的更新和改动,Dat 会自动记录你的更改。

(3) 安全

Dat 传输文件的连接是经过加密的,只有你发送给某个用户,他才能够访问你的文件。你的链接也允许用户下载和转发给其他人。如果想要在发送的文件中进行更改,用户必须要有一个密钥才行。Dat 也会校验文件的哈希值,确保没有遭到篡改。

比较

个人在使用 Dat 的过程中,体会到了一些其与 ZeroNet、IPFS 的不同之处。见 Dat,IPFS,和 ZeroNet 的比较

使用

以 Linux 终端命令为例,简述 Dat 的使用方法。Windows 客户端即将上线。关注官方安装页面。Windows 用户也可以使用 Beaker Browser 达到相同效果。Beaker Browser 分享文件(或静态网页)的方法见这里

确保安装了 Nodejs 4.0 及以上。

安装 dat:

npm install -g dat

/usr/local/bin/dat -> /usr/local/lib/node_modules/dat/bin/cli.js

> [email protected] install /usr/local/lib/node_modules/dat/node_modules/utp-native
> node-gyp-build

> [email protected] install /usr/local/lib/node_modules/dat/node_modules/sodium-native
> node-gyp-build "node preinstall.js" "node postinstall.js"

added 321 packages in 9.662s

下载一个示例文件:

dat clone dat://778f8d955175c92e4ced5e4f5563f69bfec0c86cc6f670352c457943666fe639 ~/Downloads/dat-demo

你可以在 Downloads 文件夹看到下载的 dat-demo。

创建一个文件夹,添加文件并分享:

mkdir MyData
cd MyData
dat create
> Title My Amazing Data
> Title My Awesome Dat
> Description This is a dat

dat share

你会看到文件被分享的输出,如果你不按 Ctrl + C 停止的话,它会持续处于分享状态,等待传输。

下载和分享简单地介绍完了,感兴趣可以访问一个在线的演示页面,会开一个 Docker 给你实际地玩会儿,试验一下使用方法,见这里

还有其他技巧和用途,可见: