bt协议与emule协议几点区别

最近把emule协议通读了一下,和以前研究的bt协议做了个对比,当然差别还是相当大的,此处仅简单列出几点:

bt协议不包括文件搜索,该过程要由用户自己进行,在找到感兴趣的文件后要首先获取一个torrent文件,根据该torrent文件找到服务器,进而找到其他peer;emule协议中的文件搜索也是由协议规定的,在结点启动的时候向服务器发起文件查询请求,服务器返回查询结果,进而得到相关的peer列表

emule协议在判断peer好坏时采用的是credit方式,即对方给自己传输数据的行为会被自己记录下来,上传越多credit记录越好;bt在判断的时候采用的是tit-for-tat方式,即由结点在数据传输过程中实时选择优先上传的结点,如果peer给我数据,则我也给peer。两种方式本质差不多,不过emule的实时性没有bt强,另外emule是针对结点的,而bt是针对当前下载文件的。

emule协议的结点ID是服务器分配的,有high和low之分,high类型的表示结点是公网IP;bt协议的ID是结点自己产生的,不反映结点的网络类型。

emule协议在结点和服务器以及结点之间进行连接后都需要一个认证过程,在和服务器连接后服务器会分配一个Client ID给结点,结点之间的认证通过公钥加密;bt协议没有此过程。

emule协议制定了结点之间以及结点和server之间的UDP通信协议,支持UDP通信的情况下可以作为辅助,而bt协议仅仅将UDP通信作为扩展协议,而且只在结点和tracker通信部分才有

emule协议设计了帮助内网结点穿越NAT和防火墙的机制,虽然比较原始但还是有效的,bt协议当中则没有设计这样的机制,需要结点自行解决。

通过上面的分析可以看到,emule协议考虑的问题比较全面,其协议的文档也比较长,bt协议相比是一个轻量级的协议,简单实用为设计目标,比较专一,涉及的方面不那么多。也正因如此,bt客户端软件有很多,一个人就能写出来,但是emule实现起来就麻烦多了。

你可能感兴趣的:(协议)