> 网络中的应用,存在两种主流的体系结构。一种是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

p2p文件服务器,P2P文件传输相关推荐

  1. vivo手机互传的文件怎么找到_基于 P2P 的在线文件传输工具,电脑与手机互传文件...

    小鹿快传是一款点对点(P2P)的在线文件传输工具,无需登录,即可在电脑.手机间互传文件,简单方便快捷. 小鹿快传是一款在线工具,只需要使用浏览器打开即可传输.无论电脑与电脑之间,手机与手机之间,还是电 ...

  2. 【计算机网络】应用层 : 总结 ( 网络应用模型 C/S P2P | 域名解析 DNS | 文件传输协议 FTP | 电子邮件 | 万维网 与 HTTP ) ★★★

    文章目录 一.网络应用模型 ★ 二.域名解析过程 ★ 三.FTP 文件传输协议 四.电子邮件★ 五.万维网 和 HTTP 协议★ 一.网络应用模型 ★ 网络应用模型 : ① 客户 / 服务器 模型 ( ...

  3. 手机传输文件服务器,手机文件传输到服务器

    手机文件传输到服务器 内容精选 换一换 本节操作介绍如何在Windows操作系统的本地主机上使用FTP上传文件到云服务器.已在待上传文件的云服务器中搭建 FTP 服务.如果您的云服务器为 Window ...

  4. 浅谈HTTP FTP和P2P网络大文件传输的优劣势

    随着各种行业和硬件设备的发展,大文件越来越多,比如在媒体行业为了保证图片和视频的清晰,和以前的相比,都比较大,尤其是出版社等行业.确保文件能快速的传输,现在很多企业还是使用的硬盘邮寄的方式.如果使用网 ...

  5. java编程文件传输_JAVA文件传输程序

    源代码已经上传了. 第3章      设计文档 3.1       任务概述 本项任务要开发一款P2P文件传输软件,该软件可以在局域网和互连上使用,具有文件传输,断点续传,多线程连接等功能. 3.1. ...

  6. 8个免费高速文件传输工具,让你彻底告别网盘和数据线

    文章来源:平凡而诗意 作者:Jackpop 文件传输是日常使用较为频繁的一项功能,电脑与电脑.电脑与手机.手机与手机.... 以往的文件传输主要可以分为2种方式: 基于硬件:数据线.移动硬盘.U盘 基 ...

  7. 基于C++的P2P穿透文件传输

    VC++ P2P穿透文件传输,目前只开放客户端开发,参考Test目录下的源码.如果无法运行,请先安装vcredist_x86_vs2010.exe. 项目源代码: 部分代码: 程序运行截图:

  8. 基于 WebRTC 的 P2P 文件传输

    前言 WebRTC 是一个实时通信的技术,它提供了一套 API,可以让浏览器实现 P2P 通信,而且不需要额外的插件,这使得 WebRTC 成为了一种非常有前景的技术.在前面几篇文章中,我们已经介绍了 ...

  9. p2p服务器的协议,P2P文件传输协议之BitTorrent协议

    BitTorrent协议是支持网络当中数据的上下传输的一个P2P文件传输协议.那么基于这个协议的BT软件大家肯定更不会陌生.但是它却有着更为广泛的使用,尤其是在一些大型网络数据交换平台中,也常常会使用 ...

  10. Day4:应用层——FTP :文件传输协议、电子邮件(EMail)、DNS(Domain Name System)、P2P应用(一类应用)

    加油!偷博人! 一.FTP文件传输协议  向远程主机上传输文件或从远程主机接收文件  客户/服务器模式  客户端:发起传输的一方  服务器:远程主机  ftp: RFC 959  ftp服 ...

最新文章

  1. 用python做一个数据查询软件_Python实现功能简单的数据查询及可视化系统
  2. 如何完全安装mysql数据库_数据库经验:如何简单安装MySQL数据库
  3. 老咸鱼今天告诉你用Python matplotlib 各种图绘制流线图,难怪老板放纵他
  4. Express中间件--connect-mongodb-session
  5. 微信小程序云开发用户身份登录_云开发版的微信商城小程序第一章
  6. 通过libVirt抓取kvm虚拟机监控指标数据
  7. Tensorflow2.0安装(win10系统cpu版本)
  8. 【CV】YOLO算法最全综述:从YOLOv1到YOLOv5
  9. 动态规划-KMP字符匹配算法
  10. 汽车租赁php参考文献,求租赁或者汽车租赁的英文参考文献
  11. 如何测试大端存储和小端存储
  12. MFC中访问界面控件的两种方法
  13. 使用AxiosJavaScript中的简单HTTP请求
  14. JUnit单元测试笔记
  15. 单细胞测序分析之小技巧之for循环批量处理数据和出图
  16. C++语言类和对象介绍和示例
  17. 一步步优化JVM四:决定Java堆的大小以及内存占用
  18. 不必仰望他人,用自己的方式活着就好
  19. MVC公司架构介绍-工具类(一)
  20. 去除小圆点_word中的小圆圈怎么删掉

热门文章

  1. AOP(面向切面编程)
  2. Java牛客项目课_仿牛客网讨论区_已经看完的部分
  3. 西门子G120C变频器中的参考速度+转速给定原理分析
  4. Win10双网卡上网冲突(内网、外网)
  5. 09-Git-补丁patch操作
  6. 电子设备常见的音视频接口
  7. 我经常和面试者聊的一个题目
  8. 自动伽马校正(Auto Gamma Correction)算法
  9. app浮层html,App设计之五:弹窗与浮层
  10. 一个计算机系统配置有3台打印机,我们是局域网3站点 3台电脑共享一个打印机 3台电脑相同的系统 打印参数也设置完全一样 但是打印出来的效果却不同 请问什么原因?需要怎么设置?...