对于我们来说p2p与我们生活最相近的,应该就是文件下载了,大家经常在网上看见的bt种子文件就是这种p2p的下载方式,也是我们统称的“电驴”,p2p以它独特的下载方式风靡于网络。
传统的htpp下载是从服务器上直接复制数据给客户端,这种传输方式对于速度的限制很大,主要是带宽的限制,如果一个服务器的带宽是100,而同时有十个人在这个服务器中下载文件,那么每个人的带宽就会受到限制只有10,在早期下载器开会员可以下载的更快,就是给会员分配到了更快的带宽中了,但是不管怎么划分,资源还是有限的,像是那些超大型网站,特定时段有上亿的点击量,所以为了应付庞大的下载量p2p就应运而生了。
而运用p2p下载时,服务器与http中所担任的责任不同,这回服务器只负责将文件的基本信息放在客户端之间,而自己并没有文件,而p2p软件将一个文件拆分成多份,而客户端可以下载这若干份中的一个,就像一杯水被分成若干份,最后倒在一起还是那一杯水,另外相对于HTTP的下载方式如果服务器停机了你就下不了了,但是p2p不同如果服务器停机了你可以下载别人的这个文件,而你在下载别人的文件的同时也在将自己所下载的文件共享出去。可以说下载的用户越多下载的越快。
另外P2P传输中有“种子”这种说法。所谓的“种子”,就是指那些已经将文件下载完成的人,他们拥有全部的区块。发布资源的人自己就有一个完整的文件,所以下载时人们会先下载他的完整文件,直到更多的完整完整种子出现。当种子消失时会发生两种情况,一是缺少区块,剩下的客户端最多下载到完全相同的进度;另一种就是区块正好完整,只不过分布在不同的客户端上而已,这样下去就会有人下载完,成为种子。所以p2p可以将一个文件不断的变成种子在不同中的用户间传播。

p2p的基本下载原理相关推荐

  1. BT、电骡、迅雷等P2P下载原理

    迅雷的下载原理: 一.迅雷下载原理分析      迅雷的工作原理据称为"多资源超线程技术基于网格原理,能够将网络上存在的服务器和计算机资源进行有效的整合".实际上还是传统的下载技术 ...

  2. BT下载原理学习简介

    1.   BT下载原理简介 BT是一种用来进行文件下载的共享软件(不是"变态"),全名叫"BitTorrent".BitTorrent是一个多点下载的源码公开的 ...

  3. P2P之NAT穿透原理

    P2P之NAT穿透原理介绍 背景 一次项目中,对于主动协议接入的设备,客户希望能够设备端直接推送码流到客户端以此减少中心媒体的负载.所以对P2P这块方案做了了解,这里做下整理. 基本概念 P2P对等网 ...

  4. 迅雷下载原理及其协议分析

    迅雷下载原理及其协议分析 2012-08-26 迅雷是一个多协议的的P2SP下载管理器,除了支持基本的HTTP.FTP下载,还支持同一个资源的多种P2P协议下载,例如BT和电驴协议.当然,最大的特点是 ...

  5. 2-51单片机ESP8266学习-AT指令(开发板51单片机自动冷启动下载原理)

    前言:了解就行,不必深究 上一篇链接 http://www.cnblogs.com/yangfengwu/p/8720148.html 源码链接:https://pan.baidu.com/s/1wT ...

  6. [缓存]迅雷下载原理

    来自:http://hi.baidu.com/gcjia/blog/item/2b77bc3df8544803bba1675f.html 1.迅雷是什么? 迅雷是基于P2SP的一款下载软件,能够大大增 ...

  7. Android学习笔记---java实现多线程下载器,30_多线程下载原理介绍和使用

    2013-04-01 30_多线程下载原理 -------------------- a.文件下载原里:   使用http协议实现多线程下载 b.采用多线程下载,可以抢占服务器cpu的处理时间,实现快 ...

  8. 大数据分块_谷歌卫星影像金字塔分块下载原理说明

    1. 概述 通常我们在工作中下载谷歌卫星影像数据时,轻则几百M,重则几百个G甚至上TB级.影像数据太大,是大家经常会遇到的一个问题,尤其是想下载一个省以上数据的时候该问题尤为突出.那么该问题是否有一个 ...

  9. 第四天 hadoop HDFS上传下载原理

    HDFS上传下载原理 一.HDFS数据流向模型(上传和下载) 1>网络拓扑结构和机架感知 <2>上传操作数据流向模型 <3>下载操作数据流向模型 二.NameNode和S ...

最新文章

  1. cudnn v4安装
  2. Content management workbench DMWB
  3. 构建高性能ASP.NET站点 网站优化需要考虑的方面
  4. MVC是一种用于表示层设计的复合设计模式
  5. 火了!女教授把自己P成女娲,登上学术期刊封面
  6. 【LeetCode笔记】27. 移除元素(Java、原地)
  7. mysql q4m_Mysql Q4M 队列操作封装(二)
  8. iOS夯实:内存管理
  9. 5条简洁的JavaScript技巧
  10. js 正则匹配邮箱_比较正宗的验证邮箱的正则表达式js代码详解
  11. Nginx的Rewrite规则编写
  12. 前端es6文档大全,你想要的这都有
  13. 车辆跟踪技术概述zt
  14. vscode设置中文及注释快捷键
  15. 饥荒联机版Mod开发——制作简单的物品(三)
  16. IBPS java工作流引擎介绍
  17. 计算机 交换机连接设置方法,怎么用串口线连接电脑和交换机 连接步骤教程
  18. JAVA之父----詹姆斯.高斯林
  19. 单词记忆 词根词缀记忆 总结
  20. Linux安装rsync命令失败,rsync 常见错误与解决方法整理

热门文章

  1. 艾永亮超级产品:企业家该如何培养自己的用户思维
  2. Python开发打飞机游戏
  3. Unity 陀螺仪姿态识别、 控制物体旋转移动
  4. 小米手机突然微信双开不好用了!重置就好了!
  5. html自动播放片头预览,AE脚本-创建html网页GIF动图预览批量输出GIF动图工具脚本aw_PreviewGenerator v1.6...
  6. 【简历优化】项目经验问什么怎么写怎么答
  7. gdal依赖dll_gdal_csharp.dll
  8. python获取网页json返回空_Python用requests库爬取返回为空的解决办法
  9. java读取文件生僻字处理
  10. 考虑柔性负荷的综合能源系统低碳经济优化调度论文复现——附代码