关于 BT及PT

2.BT下载原理 

BT全名为BitTorrent,是一个文件分发的协议。 
使用BT下载资源的过程如下: 
拥有完整文件的用户制作一个torrent文件(种子文件),并正常做种,在BT中,拥有完整档案的用户称为种子; 
(2)其他用户下载torrent,客户端解析 torrent 文件,获取要下载的文件的详细信息;    
(3)与 tracker服务器 建立连接,并交互消息;     
(4)根据从 tracker 得到的信息,跟其它 peers 建立连接,并下载需要的文件片断 
(5)监听某端口,等待其它peers 的连接,并提供文件片断的上传。 

更详细的解释: 
(1)torrent:A small file containing metadata from the files it is describing. In other contexts, it is sometimes used to refer to the swarm connected around that small file.  
    Torrent的announce记录了发布服务器的位置,让BT知道是那个WEB服务器发布的,然后是一些文件信息,文件名,目录名,长度等等,最后是片段长度,和片段的 Sha1 校验码,(BT将文件分成若干个片段记录文件信息),大家用记事本打看torrent文件看看就知道大概,后面的乱码是片段 Sha1 校验码。种子的HASH能让Tracker区分每个种子。 

(2)tracker:Something that a client connects to in order to share its IP and port, as well as obtain information, including peer lists.  
tracker 是指运行于服务器上的一个程序,这个程序能够追踪到底有多少人同时在下载同一个文件。客户端连上tracker服务器,就会获得一个下载人员的名单,根据这个,BT会自动连上别人的机器进行下载。它是提供bt的服务器。把文件用bt发布出来的人需要知道该使用哪个服务器来为要发布的文件提供tracker。由于不指定服务器,BitTorrent采用BT文件来确定下载源。tracker服务器是BT下载中必须的角色。一个BTclient在下载开始以及下载进行的过程中,要不停的与tracker服务器进行通信,以报告自己的信息,并获取其它下载client的信息。Tracker的通信过程是这样的:client向tracker发一个HTTP的GET请求,并把它自己的信息放在GET的参数中;这个请求的大致意思是:我是xxx(一个唯一的id),我想下载yyy文件,我的ip是aaa,我用的端口是bbb。 

    tracker对所有下载者的信息进行维护,当它收到一个请求后,首先把对方的信息记录下来 (如果已经记录在案,那么就检查是否需要更新),然后将一部分(并非全部,根据设置的参数已经下载者的请求)参与下载同一个文件(一个tracker服务 器可能同时维护多个文件的下载)的下载者的信息返回给对方(这个过程是随机的!)。Client在收到tracker的响应后,就能获取其它下载者的信息,那么它就可以根据这些信息,与其它下载者建立连接,从它们那里下载文件片断。 

(3)peer :A user/client connected to the swarm. People sometimes refer to peers as "leechers," though they also use the same word to refer to its more negative connotation. It's recommended that you use the word "leecher" to strictly refer to people who don't share so to keep the distinction clear and confusion to a minimum.  

(4)peer list :A list containing the IPs and ports of other peers.  
      upload :The act of transferring data from your computer onto another.  

(5)BT下载过程中片断的选择     
选择一个好的顺序来下载片断,对提高性能非常重要。一个差的片断选择算法可能导致所有的片断都处于下载中,或者另一种情况,没有任何片断被上传给其它 peers。 

Ⅰ.严格的优先级     
    选择的第一个策略是:一旦请求了某个片断的子片断,那么该片断剩下的子片断优先被请求。这样,可以尽可能快的获得一个完整的片断。 

Ⅱ.最少的优先     
    对一个下载者来说,在选择下一个被下载的片断时,通常选择的是它的peers们所拥有的最少的那个片断,也就是所谓的“最少优先”。这种技术,确保了每个下载者都拥有它的peers们最希望得到的那些片断,从而一旦有需要,上传就可以开始。这也确保了那些越普通的片断越放在最后下载,从而减少了这样一种可能性,即某个peer当前正提供上传,而随后却没有任何的被别人感兴趣的片断。

注: 也就是说,每个peer都优先选择整个系统中最少的那些片断去下载,而那些在系统中相对较多的片断,放在后面下载,这样,整个系统就趋向于一种更优的状态。如果不用这种算法,大家都去下载最多的那些片断,那么这些片断就会在系统中分布的越来越多,而那些在系统中相对较少的片断仍然很少,最后,某些peer就不再拥有其他peer感兴趣的片断了,那么系统的参与者越来越少,整个系统的性能就下降。在BT系统中,充分考虑了经济学的概念,处处从整个系统的性能出发,参与者越多,系统越优化。 

    信息理论显示除非种子上传了文件的所有片断,否则没有任何下载者可以完成所有文件的下载。如果在一个部署中,只有一个种子,而且种子的上传能力比它的大多数下载者都要差,那么,不同的下载者从种子那里下载不同的片断,性能就会变得比较好,因为,重复的下载浪费了从种子获取更多信息的机会。“最少优先”使得下载 者只从种子处下载新的片断(也就是整个系统中其它peer都没有的片断),因为,下载者能够看到其它peers那里已经有了种子已经上传的片断。 

在某些部署中,原始的种子由于某些原因最终关闭,只好由剩下的这些下载者们来负责上传。这样显然会带来一个风险:某些片断任何一个下载者都不拥有。“最少优先”也很好的处理了这种情况。通过尽快的复制最少的片断,减少了由于当前的peers停止上传后带来的风险。 

Ⅲ.随机的第一个片断     
    最少优先的一个例外是在下载刚开始的时候。此时,下载者没有任何片断可供上传,所以,需要尽快的获取一个完整的片断。而最少的片断,通常只有某一个peer拥有,所以,它可能比多个peers都拥有的那些片断下载的要慢。因此,第一个片断是随机选择的,直到第一个片断下载完成,才切换到“最少优先” 的策略。 

Ⅳ.最后阶段模式    
    有时候,从一个速率很慢的peer那里请求一个片断。在下载的中间阶段,这不是什么问题,但是却可能潜在的延迟下载的完成。为了防止这种情况,在最后阶段,peer向它的所有的peers们都发送某片断的子片断的请求,一旦某些子片断到了,那么就 会向其它peer发送cancel 消息,取消对这些子片断的请求,以避免带宽的浪费。实际上,用这种方法并没有浪费多少带宽,而文件的结束部分也一直下载的非常快。 

(7)BT下载中与peers建立连接的原则——阻塞(choking)算法 

    BT 并不集中分配资源。每个peer自己有责任来尽可能的提高它的下载速率。Peers从它可以连接的peers处下载文件,并根据对方提供的下载速率给予同等的上传回报(你敬我一尺,我敬你一丈)。对于合作者,提供上传服务,对于不合作的,就阻塞对方。所以说,阻塞是一种临时的拒绝上传策略,虽然上传停止了,但是下载仍然继续。在阻塞停止的时候,连接并不需要重新建立。阻塞算法并不属于BT对等协议(指peers 之间交互的协议)的技术部分,但是对提高性能是必要的。一个好的阻塞算法应该利用所有可用的资源,为所有下载者提供一致可靠的下载速率,并适当惩罚那些只下载而不上传的peers。 

    BitTorrent的阻塞算法从技术层面上说,BT的每个peer一直与固定数量的其它 peers 保持疏通(通常是4个),所以问题就变成了哪些peers应该保持疏通?这种方法使得TCP的拥塞控制性能能够可靠的饱和上传容量。(也就是说,尽量让整个系统的上传能力达到最大)。严格的根据当前的下载速率来决定哪些peers应该保持疏通。令人惊讶的是,计算当前下载速率是个大难题。当前的实现实质上是一个每隔20秒的轮询。而原来的算法是对一个长时间的网络传输进行总计,但这种方法很差劲,因为由于资源可用或者不可用,带宽会变化的很快。为了避免因为频繁的阻塞和疏通 peers造成的资源浪费,BT每隔10秒计算一次哪个peer需要被阻塞,然后将这种状态保持到下一个10秒。10秒已经足够使得TCP来调整它的传输性能到最大。 

特殊措施: 
optimistic unchoking:如果只是简单的为提供最好的下载速率的peers们提供上传,那么就没有办法来发现那些空闲的连接是否比当前正使用的连接更好。为了解决这个问题,在任何时候,每个peer都拥有一个称为“optimistic unchoking”的连接,这个连接总是保持疏通状态,而不管它的下载速率是怎样。每隔30秒,重新计算一次哪个连接应该是“optimistic unchoking”。30秒足以让上传能力达到最大,下载能力也相应的达到最大。这种和针锋相对类似的思想非常的伟大。“optimistic unchoking”非常和谐地与“囚徒困境”合作。 

反对歧视: 
某些情况下,一个peer可能被它所有的peers都阻塞了, 这种情况下,它将会保持较低的下载速率直到通过“optimistic unchoking”找到更好peers。为了减轻这种问题,如果一段时间过后,从某个peer那里一个片断也没有得到,那么这个peer认为自己被对方 “怠慢”了,于是不再为对方提供上传,除非对方是“optimistic unchoking”。这种情况频繁发生,会导致多于一个的并发的“optimistic unchoking”。 

仅仅上传: 
一旦某个peer完成了下载,它不能再通过下载速率(因为下载速率已经为0了)来决定为哪些 peers 提供上传了。目前采用的解决办法是,优先选择那些从他这里得到更好的上传速率的peers。这样的理由是可以尽可能的利用上载带宽。 




3.PT简介 

private tracker:A tracker that requires users to log in to use it. Private trackers typically enforce ratio requirements (by banning users whose ratios are too low) in order to prevent or minimize the leeching that is prevalent on many public trackers.  

    从前面的介绍可以得知通过BT进行下载必须要其他用户提供上传(做种),但下载完成的用户提供上传更多的是一种义务而不是责任。现实是好多人一下完便关闭了客户端,使用完文件便删除了它。为了强制用户上传,PT应运而生。 

    PT是Private Tracker(私用种子服务器)的简称,可以统计用户的上传和下载量,计算用户的分享率。你可以简单将它理解为BT的升级版,在拥有BT所有功能的同时,需要达到一定的分享率才能不被删除帐号。 PT(Private Tracker)下载也是Bt下载的一种,但有两个明显的改进:一是私密的小范围下载,二是进行流量统计,根据上传量决定你的权限。    

    Private Tracker下载(PT下载)是一种小范围的BT下载,通过禁用DHT有要求地选择并控制用户数量,这样,在有限的范围内,下载的用户基本上都可以达到自己的带宽上限,Private Tracker 下载(PT下载)下载还通过论坛等方式的约束机制将BT下载的理念现实化,真正让用户做到下载的过程中努力上传。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值