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)
上一篇 2022年7月16日 下午12:16
下一篇 2022年7月16日 下午12:16


相关推荐

  • 协同过滤推荐算法在python上的实现

    1.引言信息大爆炸时代来临,用户在面对大量的信息时无法从中迅速获得对自己真正有用的信息。传统的搜索系统需要用户提供明确需求,从用户提供的需求信息出发,继而给用户展现信息,无法针对不同用户的兴趣爱好提供相应的信息反馈服务。推荐系统相比于搜索系统,不需要提供明确需求,便可以为每个用户实现个性化推荐结果,让每个用户更便捷地获取信息。它是根据用户的兴趣特点和购买行为,向用户推荐用户感兴趣…

    2022年4月6日
    69
  • ECharts案例大全(最新版),含各种案例,实例。

    ECharts案例大全(最新版),含各种案例,实例。前言 2022 年 2 月以前 ECharts 官网除了提供官方案例外 还额外提供了一个 ECharts 案例资源丰富的强大社区 MakeAPie 来展示各类的 ECharts 案例 这对于广大开发者 特别是前端页面仔们来说简直是个福音网站 然后 现在却因无人维护 该社区被停用了 这一停用无疑给广大 ECharts 使用者们带来一阵阴影 ps 要是遇上复杂的 ECharts 图标需求 那不得每次都是重头画起 呜呜 方法一 不过不要慌张 本着遇到问题就解决问题的干劲 社区动力大佬为大家重新整理了一份几乎和原 MakeA

    2026年3月26日
    3
  • pycharm 使用 anaconda 环境[通俗易懂]

    pycharm 使用 anaconda 环境[通俗易懂]两个方法一:从annaconda内部打开pycharm这里有个下拉框可以选选择你要的anaconda环境再launch你的pycharm但有时候好像不大灵光还是用不上这个环境二:方法二就是万能方法从pycharm内部来配置环境,非常简单。界面最右上角齿轮图标,点击。找到interpreter这里下拉框可以选,发现没有anaconda的环境,你就showall然后点左上角加号选anaconda环境,再去添加你已经存在的anaconda环境。…

    2022年8月28日
    7
  • bootstrap之glyphicon字体图标

    bootstrap之glyphicon字体图标glyphicon 字体图标用途广泛 可以把它们应用到按钮 工具条中的按钮组 导航 输入框或下拉菜单等地方 例如 在做 SM 管理系统项目的时候 就可以在编辑 删除按钮中使用 glyphicon 字体图标 出于性能的考虑 所有图标都需要一个基类 glyphicon 和一个对应每个图标的类 glyphicon xxx 我们可直接到 Glyphicons 字体图标库中 将图标下面的两个类 copy 下来 放到标

    2026年3月19日
    1
  • sdn网络的特点(水环式真空泵的工作原理)

    SDN的工作原理SDN网络架构的三层模型架构主要分为协同应用层,控制层,转发层三层,网络架构本身包括管理平面,控制平面和转发平面,与这三层对应。传统的IP网络具有转发平面,控制平面和管理平面。协同应用层主要是完成用户意图的各种上层应用程序,此类应用程序(APP)成为协同应用程序,典型的协同层包括OSS,Openstack等。控制层是系统的控制中心,负责网络内部交换路径和边界业务路由的生成,并负责处理网络状态变化事件。这里注意sdn架构下,sdn控制器直接提供网络业务服务接口,APP就不需关心内部

    2022年4月11日
    39
  • 提供一个免费的CSDN下载账号

    提供一个免费的CSDN下载账号

    2021年11月16日
    42

发表回复

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

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