手工手机充电架:请教 电骡 与 BT 的技术区别.

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/29 22:13:49
为什么身边的朋友用BT的多??

最好能帮忙从技术层面作一下电骡 与 BT 差别.

VeryCD 和 eMule 两者的关系最好也能说明一下.

BT多是RMVB电影, 而电骡都是什么格式的电影?

谢谢!! (越详细有追分)
希望能看到真正技术性的东西.
或者是你自己亲身的体验.
而不是Ctrl+C Ctrl+V... ...

什么是电骡?
电骡(eMule)是一种先进的共享软件.你不但可以使用电骡从网络上下载各种文件,也可以通过电骡将自己的文件同网友一起分享.
在电骡之前有一种共享软件叫电驴(eDonkey2000).虽然这是不一个很不错的软件,但它还是有些不足,于是一个叫Merkur的人开始制作一个功能比它更完美的软件,这个软件就是后来的电骡(eMule).之所以起这个名字是因为这个软件的功能和电驴很相似,而驴跟骡也很相似. 电骡保留了电驴中的优点,改正了很多电驴的缺陷,增加了一些电驴没有的实用功能,可以说电骡是电驴的一个升级版本.
电骡是一个P2P共享软件.P2P就是通常说的"点对点",是peer-to-peer的缩写.使用P2P软件的人可以直接连接到其他用户的计算机、交换文件,而不是像过去那样连接到服务器下载文件.通过P2P方式下载的文件不是来自网站的服务器,而是其他网友.而你也可以通过这种软件将文件上传给别人.
常见的P2P软件还有BT下载软件.从原理上说电骡下载和BT下载是相似的. 但电骡下载跟BT下载也有不同的地方.如电骡下载中有一个信用制度,通过这个制度电骡网络给上传数据多的用户更快的下载速度,作为回报;BT网络中的文件主要的数据来源源于用户下载文件时的上传,但电骡可以设置共享目录,让电骡随时上传共享目录中的所有文件;电骡下载文件的传播方式也多于BT下载,电骡不须种子文件,只要一个链接就能向电骡添加下载文件,电骡还可以通过内置的强大搜索功能在网络中搜索和添加下载文件. 基于以上的种种原因,电骡网络中有效的文件资源数量已大大超过了BT资源数量,所以很多在BT网站上找不到或已绝种了的文件可以通过电骡下载下来.
西东网版电骡是为中国网络定制的,占用系统资源少,下载速度快的电骡版本.
西东网版电骡的特点
西东版电骡在原官方稳定电骡版本的基础上进行修正和优化,使之更适应中国网络,加强稳定性,提高下载速度,同时占用更少的CPU和内存资源.西东版电骡具有以下特点:
• 更稳定.经过修正和调整,西东网版电骡大大降低了出错可能性;减少死机或蓝屏现象.
• 更快速.西东版的电骡更适应中国网络,对网络速度进行优化,提高电骡下载速度.
• 占用资源少. 西东版电骡没有增加任何美化功能,相反,它去除了原版大量华而不实的功能,从根本上降低了电骡的CPU的占用量.
• 使用智能磁盘缓存(Intelligent Disk Cache)技术,以牺牲部分内存为代价,有效减小高速下载上传对硬盘的损伤.
• 西东网版电骡是完全的免费软件,自由使用全部功能,同时不带有任何广告代码.
• 带有智能上传速度侦测(USS)技术,在保证上传的同时,避免影响其他网络程序.
• 支持多媒体文件在下载过程中进行预览播放.
• 强大的搜索功能.电骡允许你使用强大的布林(Boolean)表达式进行灵活的组合关键字在本地或全局,或通过Kad网络搜索你想要的文件.
• 同时使用多种网络(eD2K, S2S, Kad),加强网络可靠性和稳定性.
• 电骡带有信用制度,以实际行动回报上传数据多的用户,调动用户上传积极性,保证更多的用户下载到文件.
• 自动防火墙配置,能自动打开XP网络连接防火墙(ICF)端口.
• 带有以非特权用户身份运行电骡(Run eMule as unpriviledged User)功能和IP地址过滤功能,大大加强系统安全性.
• 带有好友和通信功能. 你可以添加好友并随时和他们保持勾通.同时电骡内建IRC聊天模块,你可以方便地同全世界的其他下载者聊天.
• 智能坏文件块处理(ICH)功能,即便发现坏文件块,也能以最快的速度智能修复.
• 你可以通过互联网或手机网络远程完全管理另一台电脑上的电骡.
• 下载分类功能让你自由组织下载文件.
• 电骡会检查每个下载完成的文件,保证的无误传输.
• 电骡具有自动文件优先级和来源管理功能,你可以同时下载大量文件而不用费心监视下载过程.
使用方便,安装完成之后便可使用.

传输界面
服务器界面
搜索界面
共享文件界面

下载地址:http://xidong.net/emule/download.html

关于BT
全名为BitTorrent,是一个p2p软件,你在下载download的同时,也在为其他用户提供上传upload,因为大家是“互相帮助”,所以不会随着用户数的增加而降低下载速度。

下面是一般用ftp,http等分享流程:

下面是用BitTorrent分享的流程:

其实跟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的确要比公网用户要慢很多。