一、认识P2P
1998年,18岁的肖恩·范宁为了解决室友如何在网上找音乐的问题而开发了Napster软件,在短时间内就拥有了8000万的用户!它带给我们新的体验,改变了我们的生活,Napster也理所当然地成为了P2P技术诞生的标志,从此以后,P2P开始了极富生命力的发展。
[图1]P2P为英文Peer to Peer的简写,意为对等网络,简单地说就是互联网上的每台计算机都可以作为一个节点来与其他节点直接进行通讯,它又可以分为少量依赖Server、完全依赖Server和完全不依赖Server三种方式。P2P让人们通过互联网直接交互,每台计算机既充当着服务器又充当着客户端的角色。使用P2P模式进行下载可在下载同一文件的同时将已下载的部分数据传递给其它的计算机,将上传的开销分摊到各个下载者那里,这样“下载人数越多,下载速度越快”(P2P下载原理如图1所示)。
P2P下载最大的优点是下载速度不再受服务器带宽及下载人数的限制,它充分利用了传统下载方式空闲的上传带宽。但P2P下载也有一些缺点,如:长期霸占带宽资源可导致内网通信中断,如果“种子”过期则无法下载。
二、主流的P2P软件
目前,众多P2P下载工具已经给用户带来了各种便利,比较有特色的包括:Bitcomet、迅雷、Emule(电骡)、风播等。下面就这几种软件进行深入的比较,以便大家能够对P2P 技术有更深刻的认识。
Bitcomet:BT下载的全称是Bit Torrent,而Bitcomet是美国人Bram cohen 在2001年开发的一个开源和开放协议的下载工具,其技术特点是简单有效,设计十分精巧,而且比起老前辈 Napster、Kazaa 、Gnutella 等来,由于有了MFTP多源下载技术,速度提升十分快。
迅雷:它2004年出现,开始是与Flashget 网际快车类似的下载工具,由于迅雷兼容了传统的FTP和HTTP下载技术,同时支持P2SP 技术,所以下载速率得到不少提升。
Emule(电骡):它实际是源于电驴EDonkey,两者的协议基本相同,只不过后来由不同的开源组织进行维护。电骡最大的优点是可以支持软件内搜索,而且可以搜索到的资源很多。
风播:它是2006年出现的一个新兴的P2P视频点播软件,不仅仅支持常规下载,而且还支持在下载的同时观看影视节目。所以我们不必等待几小时到影片下载完毕再观看。最重要的是风播兼容BT协议和Torrent种子文件,所以节目源非常丰富。
三、下载技术大比武
1.如何找到下载文件
P2P技术的实现原理其实基本是一样的,打个比方,我要和某个不认识的朋友通信,但我不知道对方的联系方式,最简单的方式就是我和对方都在一个我们共同知道的地方留下联系方式。在P2P网络中,这个共同知道的地方就是目录服务器。每个客户端首先需要登录到目录服务器上,在登录的时候客户端需要将自己拥有的资源向服务器汇报一下,这样当其他客户端希望下载某个资源时,只需要向服务器查询一下拥有该资源的客户端IP地址和端口,然后直接联系客户端即可。在BT和风播中,目录服务器被称为Tracker;在电骡中,目录服务器被称为电骡服务器,迅雷也有类似的中央控制服务器。
当前,已经出现了纯P2P技术,就是无需目录服务器的DHT动态哈希表技术,BT、风播、电骡均支持。DHT技术实际上也是一种特殊的目录服务器,只不过把中央目录服务器变为很多小目录服务器。由于细节比较复杂,就不在这里继续讨论了。
2.如何让下载的人越多速度越快
P2P下载速度快的秘密就是MFTP(多源下载)技术,可以将下载速率提高至少10倍。MFTP技术的核心有三点:一是要将资源文件分割成等长的分片,这样便于标记和处理;二是客户端之间必须互相了解对方都有哪些文件分片,这样便于互通有无,达到边下载边上传的目的;三是客户端收到一个分片后,必须有机制可以校验该分片是正确的,否则如果一个分片错误会导致整个资源文件损坏。
BT和风播采用的分片是可以调整的,是从64KB到8MB不等,一般在512KB至1MB之间,电骡是9.28MB。迅雷也有类似的分片技术,但是不支持在下载的同时上传。分片大小对下载效率还是有影响的,一般来说,分片大了,客户端之间互相交互所消耗的流量也会比较小,因为客户端互相交互分片信息也是需要数据包的,但是分片大了,会导致传输效率下降。
有些用户使用BT和风播的时候,不明白Torrent 种子文件是什么,其实种子文件记录的信息很大一部分就是每个文件分片的校验和。而电骡的文件校验和又在哪里呢?大家可以打开电骡的Temp目录,里面有一个后缀名为part.met的文件,里面就包含了校验和。
3.如何搜索到下载资源
这里所说的资源搜索其实主要是资源的展示方面,也就是平时我们如何找到我们想下载的资源文件。
电骡是依靠服务器和客户端两种搜索方式,电骡依靠强制共享,将每个骡友的部分硬盘目录及文件共享出去,在电骡启动时候,它会将我们电脑的共享目录上报到电骡服务器上,这样其他骡友就可以直接到服务器上进行搜索了。
BT、迅雷、风播基本上是依靠到Web服务器上搜索资源文件或检索资源文件,在BT和风播中,打开种子文件即可下载。而迅雷是保存了FTP或HTTP的原始链接,打开链接以后启动下载功能。
4.坏人算法与好人算法
有朋友问,为什么我用电骡下载某个文件即使源很多,下载速度也特别慢呢?这就要从P2P分享率谈起,分享率是P2P世界的一个非常重要的指标,分享率指上传和下载的比值。
不同的P2P技术对于解决分享率有不同的处理方式。大致可以分为两种:坏人算法和好人算法。所谓坏人算法和好人算法其实是一种假设,坏人算法假定所有的客户端都是自私的,但是为了大家都来贡献自己的力量,制定了一个规则:如果不共享,就要遭受一定的惩罚;好人算法默认每个客户端都会按照自己能力尽量上传。
在电骡的网络中,采用了一种信用机制,当你上传流量很多的时候,你就获得比较高的信用值,从其他人那里获取流量的可能性就加大。每个电骡会维护一个服务队列,当我向别人请求数据时候,别人会根据我的信用等级进行排队,信用等级越低,排队越靠后。因此,老电骡们由于上传多,积分也高,下载速度就比较快;而新手由于上传少,积分低,下载速度也相对比较慢。
BT采用的是坏人算法,客户端定时会计算对方是否给自己流量,如果对方不给我流量,我会将对方阻塞掉。这样迫使对方必须提供一定的上传带宽。
迅雷采用的主要还是好人算法,每个客户端不可以控制自己不向别人贡献流量。风播采用好人算法和坏人算法相结合的方式。
5.调度算法
调度算法是所有P2P技术的核心,不同的厂商有不同的实现方式,一般都是技术机密。对于BT、电骡、迅雷来说,一般采用乱序下载算法,这是迅速利用客户端上传带宽比较有效的方式。风播为了实行在线播放,调度算法完全不同于其他P2P软件,是一种顺序和乱序的结合算法。
假设做种的Seed 有1、2、3、4、5 五个分片,如果按照传统的HTTP或FTP下载方式,Peer1和Peer2 向Seed 都从文件头部的分片1开始请求,那么极端的后果就是P2P无法实行,因为Peer1和Peer2还是把压力加在Seed上(原理如图2所示)。
但是如果采用乱序下载就不一样了,Peer1 从Seed获取分片1,Peer2从Seed获取分片2,它们相互就可以从对方获取自己没有的数据,P2P 方式就很容易发挥作用(原理如图3所示)。
对于P2P下载,乱序方式解决得很好。但是对于流媒体,必须要求文件分片是顺序获取,风播采用了一种乱序和顺序相结合的方式来解决该问题,也就是整个文件的获取方式,基本上是顺序方式获取,但是具体每个分片,又采用乱序方式获取,这样就取得了下载速度和顺序观看影片的平衡。
由于Peer.exe默认占用的是80端口,所以安装WEB服务器软件(IIS/Apache等)的时候会启动报错,使用任务管理器结束peer.exe即可,另外同时可以去掉启动项中的命令行:C:\Program Files\GridService\peer.exe -n Grid
注册表路径:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
apache突然间莫名其妙的无法启动,查看端口占用情况
在开始菜单->运行 中输入cmd,调出命令行,输入
netstat -anb
看到一个叫peer.exe的进程占用了80端口,在运行中输入msconfig 查看 启动项
看到有C:\Program Files\GridService\peer.exe启动,再到网上查看信息,发现是某个网盘的http进程,竟然流氓的占用了web程序员的80端口。
杀掉该进程(1696为pid那个数字)
ntsd -c q -p 1696
同时在msconfig 查看 启动停止该程序启动。
这样apache就可以启动了。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)