注册 登录 找回密码 回收站 在线 帮助 首页 Blog 繁體中文欢迎 访问本论坛

穆穆族论坛 » 拓 眼 电 脑 » [ 电脑网络 ] » BT原理

本主题共有9张帖子, 被点击1997次 查看上一个主题  查看下一个主题  发表新主题  发布新投票  发表回复
BT原理

无所谓
 
 
级别:  
论坛勤杂+
标识:  
来自:  
 
  功能按钮:   查看用户档案   email:1@1.com     短消息      以树型方式查看   刷新   加入到私人收藏   修改帖子   删除   引用回复   发表回复   


BT原理

一、 BT概述

    BT全名为BitTorrent,是2004年度互联网最热门的应用之一。BT是一个P2P下载软件(点对点下载软件),克服了传统下载方式的局限性,具有下载的人越多,文件下载速度就越快的特点。因此,吸引着众多的网民使用。 

    在传统下载方式中,一般是把文件由服务器端传送到客户端,例如FTP,HTTP,PUB等等,工作原理如图1。由于是从一台服务器下载,服务器所提供的带宽是一定的,因而下载人越多速度越慢。但是这样就出现了一个问题,随着用户的增多,对带宽的要求也随之增多,用户过多就会造成瓶颈,而且搞不好还会把服务器挂掉,所以很多的服务器会都有用户人数的限制,下载速度的限制,这样就给用户造成了诸多的不便。


传统下载

    BT就不同,用BT下载反而是用户越多,下载越快,这是为什么呢?因为BT用的是一种传销的方式来达到共享的,工作原理如图2:BT首先在上传端把一个文件分成了Z个部分,甲在服务器随机下载了第N各部分,乙在服务器随机下载了第M个部分,这样甲的BT就会根据情况到乙的电脑上去下载乙已经下载好的M部分,乙的BT就会根据情况到甲的电脑上去下载甲已经下载好的N部分,这样就不但减轻了服务器端的负荷,也加快了用户方(甲乙)的下载速度,效率也提高了,更同样减少了地域之间的限制。比如说丙要连到服务器去下载的话可能才几K,但是要是到甲和乙的电脑上去下载就快得多了。所以说用的人越多,下载的人越多,大家也就越快,BT的优越性就在这里。而且,在你下载的同时,你也在上传(别人从你的电脑上下载那个文件的某个部分),所以说在享受别人提供的下载的同时,你也在贡献。


BT下载方式






注:我没有QQ

 时间:2006/6/17 12:53:10
    注册: 2003-7   发帖: 735  积分: 788   状态: offline   1楼 

无所谓
 
 
级别:  
论坛勤杂+
标识:  
来自:  
 
  功能按钮:   查看用户档案   email:1@1.com     短消息      以树型方式查看   刷新   加入到私人收藏   修改帖子   删除   引用回复   发表回复   


Re: BT原理

其实跟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 来得到下面一串网址 
http://btfans.3322.org:6969/announce?info_hash=%CDg%D4%19%AD%96%9D%93%03%DB%E4%FFXA%C6%5D%043%17O&peer_id=%00%00%00%00%00%00%00%00%00%00%00%00%A3E%E0%9BeB%90d&port=6882&uploadED=0&downloadED=0&left=19171922&event=startED

http://BTfans.3322.org:6969/announce 是发布服务器的地址 

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分钟从服务器找到公网用户一个个进行连接。 

由于中国很多用户的是内网用户(我从服务器上查回来的peer还没试过超过10个的),所以内网用户用BT的确要比公网用户要慢很多。 




注:我没有QQ

 时间:2006/6/17 12:59:06
    注册: 2003-7   发帖: 735  积分: 788   状态: offline   2楼 

shjianing
 
 
级别:  
侠客
标识:  
来自:  
 
  功能按钮:   查看用户档案   email:shjianing_43@163.com     短消息      以树型方式查看   刷新   加入到私人收藏   修改帖子   删除   引用回复   发表回复   


Re:BT原理

我不是很懂这个   但是我决的咱们这个网站做的不错
真的  我从这里学到不少的知识
希望这个网站一直做下去




 时间:2006/6/17 17:43:57
    注册: 2006-6   发帖: 4  积分: 4   状态: offline   3楼 

无所谓
 
 
级别:  
论坛勤杂+
标识:  
来自:  
 
  功能按钮:   查看用户档案   email:1@1.com     短消息      以树型方式查看   刷新   加入到私人收藏   修改帖子   删除   引用回复   发表回复   


Re:BT原理

呵呵,谢谢,会一直做下去的



注:我没有QQ

 时间:2006/6/18 12:30:37
    注册: 2003-7   发帖: 735  积分: 788   状态: offline   4楼 

xinshou
 
 
级别:  
风云使者
标识:  
来自:  
图象盗链的,哈
 
  功能按钮:   查看用户档案   email:188928182@qq.com     短消息      以树型方式查看   刷新   加入到私人收藏   修改帖子   删除   引用回复   发表回复   


Re:BT原理

这个论坛都开了5年了!!

顶!!!!




有事才call我        www.u6u8.net  看贴回贴是好人
 时间:2006/6/19 13:31:46
    注册: 2005-9   发帖: 702  积分: 752   状态: offline   5楼 

Chikoo
 
 
级别:  
天王元老
标识:  
来自:  
地球国 中华人民共和省 河北市 承德村
 
  功能按钮:   查看用户档案   email:***@***.***   http://www.u6u8.net   短消息      以树型方式查看   刷新   加入到私人收藏   修改帖子   删除   引用回复   发表回复   


Re: BT原理

呵呵,几年前在1he那里看过一篇关于BT的帖子,从原理到应用,以及应具备的BT精神,写的甚是详细,可惜已经找不到了 



欺骗一个人最好的办法就是利用自己的真感情!
 时间:2006/6/21 3:15:45
    注册: 2003-5   发帖: 2850  积分: 3066   状态: offline   6楼 

Chikoo
 
 
级别:  
天王元老
标识:  
来自:  
地球国 中华人民共和省 河北市 承德村
 
  功能按钮:   查看用户档案   email:***@***.***   http://www.u6u8.net   短消息      以树型方式查看   刷新   加入到私人收藏   修改帖子   删除   引用回复   发表回复   


Re: Re:BT原理



xinshou: Re:BT原理

这个论坛都开了5年了!!

顶!!!!



呵呵,应该是网站开了5年了,而论坛没那么长时间,不过会一直做下去... 




欺骗一个人最好的办法就是利用自己的真感情!
 时间:2006/6/21 3:16:55
    注册: 2003-5   发帖: 2850  积分: 3066   状态: offline   7楼 

煮字的小妖
 
 
级别:  
光明使者
标识:  
来自:  
魔域
 
  功能按钮:   查看用户档案   email:elfzs@sina.com     短消息      以树型方式查看   刷新   加入到私人收藏   修改帖子   删除   引用回复   发表回复   


Re:BT原理

大体明白了,踩个脚印吧。。。



读罢西游不成精。
 时间:2006/8/29 9:14:21
    注册: 2006-6   发帖: 967  积分: 1006   状态: offline   8楼 

lundgren
 
 
级别:  
侠客
标识:  
来自:  
 
  功能按钮:   查看用户档案   email:meiye999@163.com     短消息      以树型方式查看   刷新   加入到私人收藏   修改帖子   删除   引用回复   发表回复   


Re:BT原理

看看




 时间:2006/9/9 17:27:58
    注册: 2006-9   发帖: 10  积分: 10   状态: offline   9楼 
1:  1 

主题管理:  删除  关闭/取消  移动  复制  置顶/取消  精华/取消  刷新统计  编辑主题


快速回复
标题:

内容:
选项: 使用我的个性签名 自动识别URL地址 使用XB代码 使用表情符号
(Ctrl+Enter快速发帖)



用户的言论纯属发表者个人意见,与本论坛立场无关
Copyright © 2001- U6U8.Net Powered by SF v2.0