其实,迅雷这款软件很早就听过了,但一直没怎么去琢磨它的P2P实现技术,
今天,偶尔看到其下载模式,看了它的官方网站,其官方网站对其技术的介绍如下:
技术特点
迅雷使用的多资源超线程技术基于网格原理,能够将网络上存在的服务器和计算机资源进行有效的整
合,构成独特的迅雷网络,通过迅雷网络各种数据文件能够以最快的速度进行传递。
多资源超线程技术还具有互联网下载负载均衡功能,在不降低用户体验的前提下,迅雷网络可以对服
务器资源进行均衡,有效降低了服务器负载。
就我所想,所谓“迅雷网络+网格原理”,实际上就是将所有的迅雷用户的网络资源统一管理起来,只要用户打开了迅雷客户端,那么该用户就加入了迅雷下载网络(迅雷网络),可以为其它的迅雷客户端提供数据中转服务,这跟我当前构建的Uoverlay网络的基本原理是一样的:通过适当数量的中转节点来将当前下载节点的最大下行带宽发挥出来。
我们以一个上行512K下行1M的标准ADSL用户网络接入为例,该用户实际能达到的带宽最大通常也只有3/4左右,即上行350K下行700K,但如果只是两个点的话,实际能够达到的带宽会更少通常是上行150K下行300K,如何将用户现有的网络资源充分的利用起来呢?首先,我们得分析为什么两点的带宽比该用户实际能达到的最大带宽小这么多,这主要是被这两点间的中间网段限制所造成的,假设用户A到用户D的连接经过了网段B和网段C,而用户A和用户D都是标准ADSL接入,即上行350K下行700K的带宽,网段B和网段C得带宽为200K和1M,那么 Bandwidth(A,D)=Min(A,B,C,D)=min(350,200,1024,700)=200K
To prevent the bottleneck of such case, I think the only way out is that we take advantage of "relay peers". Instead of employing unique way from A->B->C->D, we grasp more relay peers,from which data segment from A are tranferred. We believe that the total network capacity from A to D could reach the max download bandwidth,which is 700kbps. Through this way ,the maximum download speed could be reached. I believe this is how "Thunder Network" worked.
The unique overlay (uOverlay) Project is aimed to build such a network to maximize the user upload and download bandwidth,it would be a substrate infrastructure,so that we could build many many applications on it ,such as Live Streaming Media,File Sharing ,Instant Messenger and so on. This is what I am expecting ^_^
以下是网友的“迅雷的工作原理探讨”,taken from http://linma.net/blog/archives/000128.html
迅雷的工作原理探讨
迅雷现在很流行,风头早已超过了flashget和netants等等多线程下载工具。大多数情况下,它的下载速度确实比较快,具体为什么会有比较快的下载速度呢。下面将做一些探讨。
迅雷声称自己的是P2SP的下载技术。P当然是用户peer,SP是资源的提供商service provider.下面是迅雷官方给出的介绍:
技术特点
迅雷使用的多资源超线程技术基于网格原理,能够将网络上存在的服务器和计算机资源进行有效的整合,构成独特的迅雷网络,通过迅雷网络各种数据文件能够以最快的速度进行传递。
多资源超线程技术还具有互联网下载负载均衡功能,在不降低用户体验的前提下,迅雷网络可以对服务器资源进行均衡,有效降低了服务器负载。
功能列表
全新的多资源超线程技术,显著提升下载速度;
功能强大的任务管理功能,可以选择不同的任务管理模式;
智能磁盘缓存技术,有效防止了高速下载时对硬盘的损伤;
智能的信息提示系统,根据用户的操作提供相关的提示和操作建议;
独有的错误诊断功能,帮助用户解决下载失败的问题;
病毒防护功能,可以和杀毒软件配合保证下载文件的安全性;
自动检测新版本,提示用户及时升级;
提供多种皮肤,用户可以根据自己的喜好进行选择;
为了说明迅雷的工作原理,再给一个迅雷的官方工具给大家,以更清晰的讨论迅雷的下载原理。在迅雷的官方论坛里面有个顶置帖子:
http://bbs.xunlei.com/phwind/read.php?tid=69234&fpage=1,里面有一个测试工具,是测试客户端与迅雷的官方服务器的连接速度。
图中可以看出,使用到了三台服务器:一台是资源服务器,两台注册服务器(tcp和udp)
帖子中还给出了一个调查:
投票主题:关于端口被封的调查!
3076端口被封(将找不到多资源)56 票
5200端口被封(将无法进行雷区注册)67 票
6200端口被封(会隔一段时间就会掉下雷区,需要重新登陆)70 票
由此可以看出,资源服务器负责提供下载的资源情况,使用3076端口。这台资源服务器到底提供的是什么资源呢?在迅雷5中,可以查看当前下载的文件连接的资源是哪些。有服务器地址也有单独的peer。当然很明显,peer的连接没有服务器连接稳定。
原理分析
当用户需要下载资源时,例如要下载“http://www.abc.com/file.exe”这个文件,那么一方面直接向“www.abc.com”这个服务器发送一个HTTP请求,要GET到“/”目录下“file.exe”这个文件;另外也向资源服务器(迅雷5中为hub5t.sandi.net)发送一个请求,查找资源服务器列表中与当前下载的文件的属性信息(如名字一样、大小等)完全相同的资源,因为可能有别的网站也提供这个文件资源;另外,也有另外一种可能,别的“雷友”也在下载或者有你正在下载的这个文件,就可以分享出他下载到的部分。这就有点p2p的share files的意味了。
下载速度
因为不仅仅从一个资源提供者那里获取资源,速度当然会比较快。可是如果你下载的资源是在网上没有多少服务器提供,那么你的速度就不会很快。这个时候,迅雷也就只相当于一个普通的多线程下载工具。
资源服务器
资源服务器上那些文件信息从哪里获得的?我认为一个方面是从每个下载者那里提供的,每次都会查询资源,当然也就得提供你当前是哪个网站获得这个资源的,说明你下载的这个网站肯定是有这个资源的。另外一个方面,迅雷也可以通过搜索引擎的spider去定点搜索国内的那些大型的软件下载网站中的文件信息,不过这一点不容易做,因为大部分的软件下载站都有反盗链技术,有反向链接的控制。
补充
迅雷声称自己是一个超线程的下载工具,本人就不太清楚,它的超线程是体现在哪里?是在它的服务器上吗?这跟用户有什么关系?或者有可能迅雷的下载客户端可以支持超线程,但是在大多数电脑的CPU都还不是HT的时候,说这个好像没有太大的实际意义。