- 大鱼炖火锅
-
BT全名为BitTorrent,是一个p2p软件,你在下载download的同时,也在为其他用户提供上传upload,因为大家是“互相帮助”,所以不会随着用户数的增加而降低下载速度。
其实跟ED也十分相似,ED跟BT不同的地方有:
ED--要连上一个固定server BT--没有固定server,只要分享者制作出该分享档案的.torrent档公布出来便可
ED--分享的人越多速度越快? BT--种子seed越多速度越快
ED--世界性的分享 BT--团体性的分享(可做到速度保证)
ED--知道在分享者的user name &速度 BT--没显示使用者/分享者名字
比起其它的P2P软件,BT有个独特的地方,它存在一个中间的WEB服务器,就是我们在发布的时所填写的announce。该服务器提供了发布的统一管理,不像其它P2P软件那样到处去找哪些非常不稳定的个人服务器,相对起来让人安心的多。
该WEB服务器更大的作用是内网用户可以做 Send(下面会说明原理),这是其它软件无法做到的,但不好的地方是announce当机的时候就无法下载了。要知道P2P下载关键是要人气要高,announce停一下就搞到人气全没有了。
.torrent 的作用
大家都知道我们要用BT下载 ,就要先下载一个.torrent文件,这个文件到底有甚么呢:
首先是 announce 纪录了发布服务器的位置,让BT知道是哪个WEB服务器发布的,然后是一些文件信息,文件名,目录名,长度等等,最后是片段长度,和片段的 Sha1 校验码,(BT为了实现续传和文件校验,就把文件分成若干个片段),大家可以用写字板打看torrent文件看看,就是知道个大概,后面的乱码是片段 Sha1 校验码。
开始-续传的实现 sha校验
BT 打开一个 torrent文件后,先要你选择文件保存那里。然后判断文件不存在的话就建立新文件,存在的话就用 Sha1 校验码去校验文件---错误的就是还没下载的,这样就可以实现续传了,但128位校验,想不慢都不行
得到 peer
现在知道要下载甚么了,到那里下载呢?这就要寻找有谁提供上传了,这里BT是通过WEB服务器来实现的,首先BT会通过分析 torrent 来得到下面一串网址:
[url]http://btfans.3322.org:6969/anno[/url] ... 2&event=startED
[url]http://BTfans.3322.org:6969/announce[/url] 是发布服务器的地址
info_hash 是torrent文件中的 info 部分的Sha校验码,WEB通过它在发布列表找到对应的纪录
peer_id 是自身的标识,它是12个0和当前时间+全球的唯一标识码(GUID)的Sha校验的前八位,共20位
port 你提供上传的 port
IP 你的ip地址,没有的话服务器会自己找到
uploadED downloadED 你上传和下载了多少,服务器可以用它来做流量分析
left 你还要下载多少个字节
event 状态,告诉服务器你是准备开始下载,还是停止,还是下载完成了
以上这个操作默认 5 分钟做一次,或由服务器设定
服务器会做甚么
服务器中有个一个 track 程序来管理这些请求,得到这一串代码后就会用 info_hash 来查找列表,找到你就可以下载,找不到就对不起啦。接着它会反连(NatCheck)你的 IP 和 Port这样就可以知道你是内网用户还是共网用户(如果你是内网用户,它是连不通的,因为它会连到你的服务器上,你的服务器当然没有这个端口啦),然后服务器返回现在正在下载这个文件的所有公网用户的IP和port,就像是:d8:intervali1800e5eersld2:ip14: xxx.xxx.xx.xxx7eerid20:00180531904b7e3abdd74orti6881eeee
interval 1800 是告诉 BT 隔多少秒来查询一次这里是 30 分钟 (有点过分了),最后如果你是公网用户它会把你提交的 IP 和 Port 放到info_hash 对应的列表中,这样其它人就可以找到你
下载
得到这些 peer IP后,BT就可以找到对应的IP下载了,BT会到所有的peer去寻找自己要下载的东西,不是一定要到seed下载。BT每找到一个peer就和建立一个Socket来下载,所以下载的人越多,速度就越快。
内网用户可以做Send的原理
上面说到服务器只会返回公网的ip的,那内网用户怎么可以做Send呢,这是因为BT是一个主动连接的软件(即使你已经下载完了,也不也会主动连接他人)下面是一个仿真流程:
1 内网用户开始做 seed,
2 服务器收到请求,由于是第一个所以也没有peer返回
3 公网用户提交请求,由于seed是内网用户所以也没有peer返回,等待下载,但服务器会把它的IP放到列表中
4 内网经过 interval 时间间隔后,再向服务器放出请求,得到上面得公网IP
5 得到公网IP后,内网马上进行连接
6 公网用户建立连接,数据开始传输 (注意现在是公网用户做服务器,内网用户做客户端,是不是有点怪)
7 其它内网用户去上面公网用户下载数据
所以,内网用户做 seed 一定要有公网用户得参与,否则其它内网用户无法下载。如果全部是内网用户,那个所有连接都不会成立,当然这是比较极端的情况。
以上可见,内网用户不能和内网用户连接,其它用户无法从服务器查到你,所以无法主动连接你,你只能每隔30分钟从服务器找到公网用户一个个进行连接。
所以内网用户用BT的确要比公网用户要慢很多。
博客网版权所有
- clou
-
* 回复内容中包含的链接未经审核,可能存在风险,暂不予完整展示!BT下载原理
[分享]BT的基础知识!
对于新接触BT的人对于BT的下载方式可能还有点陌生,在这里先介绍一些BT简单的基础知识。
首先先介绍一些关于BT的知识:
1.BT下载的原理
BitTorrent实际上是一个多点下载的P2P软件,其特点简单地说就是:下载的人越多,速度越快(这就是被戏称为“变态”的原因, 以往的HTTP下载、FTP下载等是人越多越慢的)。这是为什么呢? 这里我们用图来形象的表示一下:这是我们原来的http或ftp类的下载方式,一般的http或ftp下载是所有的人都从一个服务器上拿东西,自然人越多越慢。
这是BT下载图:
BT首先在提供上传这一端把一个文件分成了多个部分,甲在服务器随机下载了某个部分(A),乙在服务器随机下载了另外一部分(B),之后,甲的BT软件会根据情况到乙的电脑上去拿乙已经下载的那一部分B ,乙则到甲的电脑上去拿甲已经下载好的那一部分(A),这样,不但减轻了服务器端的负担,也加快了甲乙双方的下载速度,效率也提高了。比如丙连到服务器去下载可能只有几KB,但到甲和乙的电脑上去下载就快得多(此时甲和乙都是服务器)。所以,用的人越多,相当于服务器越多;下载的人越多,同时提供上传的人也越多,速度就越快。
2.何谓“种子”?
在BT下载中,把上传资源给其他人下载的电脑称为“种子”,种子数越多,说明正在提供上传的电脑数量越多。在下载前请先看一下相关资源的种子数,在下载完成后也最好先做上一段时间的“种子”,然后才关闭程序。
如果你要想把自己的资源通过BT这种方式共享出来,可以使用FlashBT制作Torrent文件功能把你要分享的文件制作成Torrent文件,之后到相关网站上填写发布信息并发布出去,等有人来下载时,你便是第一个种子了。
问:我在使用BT下载的过程中,当完成xx%时下载停止了,这是怎么回事?我该怎么办呢?
答:出现上面这种情况大多数是因为种子没有了。例如,某个文件被分成10个部分,但有第5部分的人只有一个(1个种子),如果那个人断线或者退出BT下载了,你就无法下载从第5个部分开始的后续部分了,只好等有人再为这个部分提供种子时才能下载,要么你到论坛上发帖请求别人重新发布种子。
问2:明明是一个很大的电影文件躺在硬盘中,可是点击后不能用播放器播放?怎么搞的啊?
答:你需要弄清楚该文件是否真的全部下载了?因为有些BT客户端软件会在下载之前就完成空间的分配,然后通过下载数据来填充那部分空间。所以,有时候,尽管你看到文件有那么大,其实它并没有包含全部的有效数据,这当然就不能播放了。确定文件是否已经被完整下载的最简单的方法就是再次运行你的客户端软件,让它检查一下是否下载完毕。
如果你确认文件下载是完好的,不能播放就要检查系统中是否安装了正确的解码器。
http://www.a***.com/showthread.asp?threadid=60&goto=next
http://www.pcadvance.c*.cn/news/Article/2005/8/376.html
http://www.b*****.net/more.asp?name=wangy&id=5761