P2P/BT种子下载原理
2021-04-01 18:16:25 1 举报
AI智能生成
P2P/BT种子下载原理
作者其他创作
大纲/内容
P2P下载原理
概念
现在的BT下载可以说是继局域网、ftp、http之后最广泛使用的文件分享和传播途径BT,全称BitTorrent,是一种P2P下载方式。常见的P2P除了bt就是emule
对等网络(Peer to Peer)
3. font color=\"#c41230\
对比传统下载(http/ftp)
3. 随着用户的增多,对带宽的要求也随之增多,所以很多的服务器会都有用户人数的限制,下载速度的限制,这样就给用户造成了诸多的不便
4. 一次下载动作只有1个下载动作(Server->C0)
实现
大概原理
1. 传统的http下载是从服务器(sever)上直接复制数据给客户端(PC)
2. P2P下载时,服务器(sever)不再担任以前的http下载中服务器的角色,他只负责将文件的基本信息在客户端之间中转,本身并未存放任何文件
3. P2P软件将文件被分成若干块,这里假设为A~Z块,客户端可以先下载K段再下载别的,没有固定的顺序,只要等最后文件被“填满”就完成了
专业用词
种子
1. 所谓的“种子”,就是指那些已经将文件下载完成的人,他们拥有全部的区块。
2. 发布资源的人自己就是一个最原始的种子,最先连接的客户端得到的块都是从他这边来的,直到新的种子出现。
求种
“求种”一词常见于影视类论坛或者成人网站, 这里的“种”是指种子文件,也就是Torrent文件。
Hash(哈希算法)
Tracker
1. 是指运行于服务器上的一个程序,这个程序能够追踪到底有多少人同时在下载同一个文件
2. 客户端连上tracker服务器,就会获得一个下载人员的名单,根据这个,BT客户端会自动连上别人的机器进行下载。
3. BT客户端在下载开始以及下载进行的过程中,要不停的与tracker服务器进行通信,以报告自己的信息,并获取其它下载client的信息
Torrent文件
Tracker信息和文件信息组成
Tracker信息: Tracker服务器的地址和针对Tracker服务器的设置
文件信息: 根据目标文件的计算生成的,计算结果根据BitTorrent协议内的B编码规则进行编码(把提供下载的文件虚拟分成大小相等的块,块大小必须为2k的整数次方(由于是虚拟分块,硬盘上并不产生各个块文件),并把每个块的索引信息和Hash验证码写入)
算法策略
文件分片
分片机制
1. BT会对文件进行分片(Piece)
片选择机制
节点选择机制
BT系统采用了基于Tit-for-Tat(以牙还牙)的激励机制来抵御Free-riding(白嫖)行为,其中Choking/Unchoking算法最为关键。
2. Choking/Unchoking算法优先选择曾经为自己提供过上传数据并拥有高下载速率的节点
分片选择算法
严格的优先级
一旦请求了某个分片的子片段,然后该分片余下的子片段会优先被请求,这样,可以尽可能获得一个完整的分片
随机的第一个片段
最少优先的一个例外是下载开始时,此时,下载者没有任何分片可供上传,所以需尽快获得一个完整的分片,所以,第一个分片是随机选择的,直到第一个分片下载完成,才切换回最少优先的策略
最少优先
对一个下载者来说,选择下一个被下载分片时,通常选择它的节点们所拥有的最少的那个分片,即最少优先,这种技术,确保了每个peer都拥有其他peer们最希望得到的那些片段,从而一旦有需要,上传就可以开始
最后阶段模式
问题
Tracker与Client交互过程?
1. client向tracker发一个HTTP的GET请求,并把它自己的信息放在GET的参数中;这个请求的大致意思是:我是xxx(一个唯一的id),我想下载yyy文件,我的ip是aaa,我用的端口是bbb
2. tracker对所有下载者的信息进行维护,当它收到一个请求后,首先把对方的信息记录下来,然后将一部分参与下载同一个文件(一个tracker服务器可能同时维护多个文件的下载)的下载者的信息返回给对方。
3. Client在收到tracker的响应后,就能获取其它下载者的信息,那么它就可以根据这些信息,与其它下载者建立连接,从它们那里下载文件片断。
BT下载速度不够稳定,当断种时则无法完整下载
0 条评论
回复 删除
下一页