P2P:我为人人,人人为我
- 由美国的MetaMachine公司原创,并用于eDonkey2000软件。2005年,遭到RIAA的侵权控告而关闭公司,并停止eDonkey2000和协议的开发。
- eDonkey服务器存放着共享文件的目录和地址,以便Client在ed2k网络内查找文件。
- 一些Web站点对比较热门的文件创建eD2k链接,也提供热门服务器列表便于用户更新。
- 由于eDonkey服务器经常发生变化,Client需要经常更新服务器列表。
- 用eD2k Hash(一种混合MD4摘要算法)来识别文件。 将不同文件名的同一文件成功识别为一个文件,并使同一文件名的不同文件得以区分。
- 大于9.28MB文件,将虚拟分区便于从不同Client同时下载同一个文件,这将加速大型文件的下载。
- 基本链接:ed2k://|file|<文件名称>|<文件大小>|<文件哈希值>|/
- 分布式哈希表Distributed Hash Table,分布式存储方法。
- 每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。
- 比特精灵等BT软件会自动通过DHT搜索种子资源,构成种子市场。
- 2004年发布的eMule v0.42b,支持Kademlia network(简称Kad)。eMule支持eD2k协议和KAD(Kademlia)协议。KAD去中心化,不需任何中央服务器。版权方只能针对某个用户提出相应控诉,而无法摧毁掉整个下载网络。
- 2002年,Bram Cohen在CodeCon初次露面,发表首个BT软件BitTorrent。它以Python写成,以MIT许可证发布。
- 架构于TCP/IP协议之上的一个P2P文件传输协议,处于TCP/IP结构的应用层。 包含了很多具体的内容协议和扩展协议,并在不断扩充中。
- Tracker追踪器:帮助下载者获取其它下载者的信息。
- 运行于服务器上的一个程序,能追踪多少人同时在下载同一个文件。
- 客户端连上tracker,就会获得一个下载人员的名单,根据名单,客户端自动连上别人的机器进行下载。
- 不指定服务器,BitTorrent采用BT文件来确定下载源。
- tracker HTTP协议:下载开始及过程中,用HTTP协地与tracker进行通信,报告自己的信息,并获取其它下载客户端的信息。
- 支持HTTP和UDP。
- tracker服务器地址格式:外网IP:端口/announce
- 对tracker和web服务器的带宽需求很低。
- Seed种子:一个下载任务中所有文件都被完整下载,此时该下载者成为一个种子。发布者本身发布的文件就是原始种子,。而原始种子必须至少发送原始文件的一份完整拷贝。
- 上传速度越快,下载速度也越快
- 下载者每得到一个块,需要算出下载块的Hash验证码与.torrent文件中的对比,如果一样则说明块正确,不一样则需要重新下载这个块。这种规定是为了解决下载内容准确性的问题。
- Seeding做种:发布者提供下载任务的全部内容的行为;下载者下载完成后继续提供给他人下载的行为。
- 种子文件:文件发布者会根据要发布的文件生成提供一个.torrent文件,即种子文件,也简称为“种子”。包含Tracker信息和文件信息两部分。
- Tracker信息:Tracker服务器的地址和针对Tracker服务器的设置。
- 文件信息:根据对目标文件的计算生成的,计算结果根据BitTorrent协议内的B编码规则进行编码。主要原理是需要把提供下载的文件虚拟分成大小相等的块,块大小必须为2k的整数次方(由于是虚拟分块,硬盘上并不产生各个块文件),并把每个块的索引信息和Hash验证码写入种子文件(.torrent)中。所以,种子文件(.torrent)就是被下载文件的“索引”。
- Peer:
- PT是Private Tracker(私用种子服务器)的简称,BT的特别版。
改进1:一是私密的小范围下载。
禁用DHT,有要求地选择并控制用户数量,下载的用户基本上都可以达到自己的宽带上限。
通过论坛等方式的约束机制将BT下载的理念现实化,真正让用户做到下载的过程中努力上传。
改进2: 进行流量统计,根据上载量决定你的权限。
统计用户的上传和下载量,计算用户的分享率。
需达到一定的分享率才能不被删除帐号。
PT的美好时代已经过去:海盗湾和彩虹岛
面对更加严格的版权保护环境和在线视频的流行,PT更多的变成一个小圈子的爱好。
磁力链接Magnet URI scheme
磁力链接的问世与大行其道,标志着BT1.0时代已经过去,BT2.0时代已经到来。
解决:BT下载速度不够稳定,当中断时则无法完整下载。
2002年,为了对eDonkey2000的“ed2k:”和Freenet的“freenet:”两个URI格式进行“厂商与项目中立化”(vendor- and project-neutral generalization)而制定了标准草稿,同时跟进IETF官方的URI标准。
分布式数据库中,通过散列函数值来识别、搜索来下载文档。
磁力链接形式为“magnet:?xt=urn:btih:”。
magnet:协议名。
xt:exact topic的缩写,包含文件哈希值的统一资源名称。
urn:(Uniform Resource Name, URN 表示资源名
btih:BitTorrent info hash,种子散列函数