p2p文件服务器,P2P文件传输

p2p文件服务器,P2P文件传输>网络中的应用,存在两种主流的体系结构。一种是C-S体系,另一种是P2P(对等网)体系。#C-S体系C-S体系是应用很广泛的应用程序体系,如Web应用。在C-S体系中,服务器承担着巨大的责任,需要处理大量的客户端请求,如文件下载请求,这种体系之间**客户端不能直接通信**,而是通过服务器传达。#P2P体系P2P,即peer-to-peer,意思是对等网络。P2P区分于C-S的就是这种体…

大家好,又见面了,我是你们的朋友全栈君。

> 网络中的应用,存在两种主流的体系结构。一种是C-S体系,另一种是P2P(对等网)体系。

# C-S体系

C-S体系是应用很广泛的应用程序体系,如Web应用。在C-S体系中,服务器承担着巨大的责任,需要处理大量的客户端请求,如文件下载请求,这种体系之间**客户端不能直接通信**,而是通过服务器传达。

# P2P体系

P2P,即peer-to-peer,意思是对等网络。P2P区分于C-S的就是这种体系下**客户端可以直接通信**,而通信的双方称为对等方。而对等方之间可以共享资源,如文件。这样客户端不仅是Bit的消费者,也是Bit的生产者,大大减轻了服务器的负担。应用如:迅雷、BT。

# P2P和C-S文件分发的比较

为什么文件分发适用于P2P体系呢?看一个例子。

![](https://leanote.com/api/file/getImage?fileId=60f67cb7ab64410d9600105b)

对于C-S体系其模型图如上,在这种模型之下。若服务器要向客户端发送一个大文件,长度为L,比如视频文件。服务器需要将文件发送给每个客户端端,服务器的负担是**N*L**。服务器承受了极大的负担,并且消耗了巨大的带宽。

![](https://leanote.com/api/file/getImage?fileId=60f67cb7ab64410d9600105c)

对于P2P体系,其模型图如上。在P2P体系下,若服务器要向客户端发送一个大文件,服务器先将文件分片,再向网络中的客户端分发文件片段,而该客户端接收文件的同时,同样也可以将文件的任何部分发送到另一个客户。之后就是这些存在文件片段的客户端相互通信,这样就减轻了服务器的发送负担。甚至服务器理想情况下负担为**L**。

而在科学计算下得到,C-S体系文件的分发时间和客户端数量N成正比。而P2P体系文件的分发时间是客户端数量N的N^1/2函数。

![](https://leanote.com/api/file/getImage?fileId=60f67cb7ab64410d9600105a)

**总之,在P2P体系中,对等方能够协助服务器分发文件,使客户端不仅是Bit的消费者,也是Bit的生产者。**

# P2P应用-BitTorrent

P2P应用最广泛的应用就是文件分发,而文件分发最著名的就是BitTorrent协议,俗称BT。BT的基本原理就如上面所形容,对等方间共享资源,在接收文件的同时也发送文件,充分利用客户端的上载带宽。

## 1. 相关概念

* 洪流:参与一个文件分发的所有对等方的集合,即洪流中的客户端都在下载文件块,并且上传文件块。

* tracker:一旦一个客户端加入洪流,就需要向tracker注册自己,并周期性的通知tracker它是否仍在洪流中。(就是服务器)

* 种子(.torrent文件):包含文件分块信息,例如一个500M的文件分为500份,文件就存储了500份片段文件的信息。还有tracker地址,就是真正服务器的地址。以及原始文件名或文件夹名。

##2. 工作过程

* A:客户端从网站或者其他地方获取到.torrent文件。

* B:读取文件内容,载入内存。

* C:读取到文件中的tracker地址,与tracker建立连接并发送需要下载的文件的标识。tracker接收到后将该客户端加入洪流,就是将IP加入列表中。并返回洪流中其他客户端的IP,假如返回有100个。(tracker要保存洪流中的对等体信息,因此下载的客户端每过一段实现需要向tracker通知一次,告诉tracker自己是否仍然在洪流中)

* D: 客户端接收到100个IP后,开始一个个尝试去建立TCP连接。若连接上了,就询问对方拥有那些分块,需要哪个分块,然后相互传输。

总之,BT的工作方式就是一句话:人人为我,我为人人。


>参考:

《计算机网络-自顶向下方法》 Jams F.Kurose Keith W.Ross

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160293.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 外键(FOREIGN KEY)

    外键(FOREIGN KEY)引子:把所有数据都存放于一张表的弊端  1、表的组织结构复杂不清晰  2、浪费空间  3、扩展性极差为了解决上述的问题,就需要用多张表来存放数据。表与表的记录之间存在着三种关系:一对多、多对多、一对一的关系。处理表之间关系问题就会利用到FOREIGNKEY多对一关系:寻找表与表之间的关系的套路  举例:雇员表:emp表  部门:dep表    part1:    …

    2022年6月29日
    28
  • java cloneable_java.lang.Cloneable的理解「建议收藏」

    java cloneable_java.lang.Cloneable的理解「建议收藏」以前也用过这个接口,那时是直接所有的东西都自己写了,也没发现问题。最近无意间发现这个接口的实现并不是想象中的那样,所以稍微研究了下,给大家分享一下。步骤:1、建立两个简单的POJO:Teacher和Student2、Teacher类实现了Cloneable接口,重写clone方法3、在main方法中建立teacher,然后clone,比较teacher和clone出来的teacherTeacher…

    2022年10月14日
    2
  • 网站被挂马了如何清理_网站在线挂马检测工具

    网站被挂马了如何清理_网站在线挂马检测工具
     
    您好,今天我们讲下挂马的危害和处理办法。挂马是常见的对网站和客户都影响巨大的危害之一。
          上海快网的经验是:如果是在访问出来的源文件的头上,或是最后有被加代码,这个一般是网站文件被要改了,或是ARP,如果是源文件的很多数据位置(中间),那一般是数据库被人挂了。
         不完全统计,90%的网站都被挂过马,挂马是指在获取网站或者网站服务器的部分或者全部权限后,在网页文件中插入一段恶意代码,这些恶意代码主要是一些包括IE等漏洞利用代码,用户访问被挂马

    2022年9月30日
    2
  • 电商项目数据库表的学习及数据库表结构设计

    电商项目数据库表的学习及数据库表结构设计数据库表知识的学习查阅了许多资料,也看了许多此类的文章与得到了老师的教导;总结出以下结论:表中的id字段不用加上表名,直接写id就好了。 表中一般不使用驼峰式命名,用“_”连接就好了,单词多的黏一起就好。 一般表中除了id字段还要存在以下基本字段 字段注释尽量要大写 表里一般写完id后是标题,再是关联的某个表id之类 当出现多对多关系时,就要做个处理不能直接两表关联;有两种方式:一是创建一个中间表;二是一个表id和需关联的表id常见的电商数据库表结构 横幅表(用于自动展示图片).

    2025年8月30日
    4
  • 证明威尔逊定理的逆定理_威尔德定理

    证明威尔逊定理的逆定理_威尔德定理威尔逊定理:当( p-1)!≡-1(modp) 时,p为素数。证明如下充分性:当p不是素数,那么令p=a*b,其中1  (1)若a≠b,    因为(p-1)!=1*2*…*a*…*b*…*p-1,    所以(p-1)!≡0(moda)            (

    2025年6月6日
    1
  • selenium-PO模式

    selenium-PO模式PO模式:全称pageObject模式,使测试代码具有理想的可维护性参考:​​​​​​PO设计模式|Selenium优点:测试代码与页面的定位代码(如定位器或者其他的映射)相分离. 该页面提供的方法或元素在一个独立的类中,而不是将这些方法或元素分散在整个测试中….

    2022年5月10日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号