P2P

版权声明:本文为博主原创文章,转载请注明博客地址: https://blog.csdn.net/zy010101/article/details/88637902

现在的网络体系中,除了C/S架构以外,P2P是近几年比较流行的一种web应用架构。P2P没有绝对的服务器和客户端之分。连接的双方分别作为临时的服务器和客户端。P2P通信的双方还可能更换IP地址。 P2P的一个最为流行的应用是BT种子,相信各位老司机对BT种子和迅雷都不陌生吧!这是一个文件分发协议。P2P的出现使得服务器在处理文件传输的时候,能够减少服务器的负载。在P2P中,每个对等方能够向任何其他的对等方重新分发它收的的该文件的任何部分。

现在,假设有一个文件,它的大小是F,有N个用户在请求它。假设第i个用户的下载速率是di。那么有下面的结果存在。

在客户端服务器结构中,没有对等方的存在。服务器对N个请求就必须传输N个文件的副本;因此总共需要传输NF这么大。假设服务器的上传速率是Us,那么分发文件的时间是NF/Us。假设N个用户中最慢的下载速率是s。那么,有如下结论:

传输最短时间是D = max{NF/Us,F/s};

在P2P中,服务器最少只需要上传一次文件即可,其余的用户可在对等方处获取该文件的副本。因此,最短上传时间是F/Us.同时假设N个用户中最慢的下载速率是s,第i个用户的上传速率是Ui.那么我们可以得到P2P架构中最快的文件分发时间。

传输最短时间是D = max{F/Us,F/s,NF/(Us+

)};

理论上来看,P2P比C/S的发送总时间要小,并且其理论极限是小于1小时。

BitTorrent

BT中,参与一个特定的文件分发的所有对等方的集合被称为一个“洪流”。在一个洪流中,对等方彼此下载等长度的文件块。当一个对等方在下载的同时也在上传。任何对等方可以在任何时候离开该洪流,也可以在之后重新加入该洪流。(断点续传)

BT协议是一个非常复杂的协议。每个洪流都有一个基础的设施节点,称为“追踪器”。当一个对等方加入该洪流的时候,它向追踪器进行注册,并且周期性的通知洪流,它仍在。这样一个追踪器就能跟踪该洪流的对等方。在BT中,它的基本思想是:“我为人人,人人为我”,这样一种激励性的文件传输机制。当你的上传速度快的时候,你就能从其他的较快上传的对等方出获取下载的资源。事实证明这种激励性的策略是成功的,不然大家都会坐享其成,称为搭便车的存在。而对P2P传输没有贡献。

P2P的应用现在已经非常多了,大家经常使用的迅雷去下载种子。还有一个前年比较流行的沙盒生存游戏“饥荒”,它的联机版在你和你的小伙伴们不购买服务器进行联机游戏的时候,采用的就是P2P。这就导致大多数时候游戏体验可能比较差。因为这取决于你们房主的电脑性能和当前网络情况。

另外一个每天都在使用的应用QQ,它也广泛的使用了P2P技术。即时消息就是基于P2P的。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券