P2P协议初步

今天看到一个问题,如何把一个文件快速下发到100w个服务器

如果我们将文件集中式地放在一个服务器或缓存上的话,带宽、连接都会遇到问题。

树状:

1. 每个服务器既具有文件存储能力也应具有文件分发能力。

2. 每个服务器接收到文件之后向较近的服务器分发,具体类似多叉树,应该挺快的。

索引状:

1. 设置1000个缓存服务器,文件先下发到这些缓存上。(具体多少缓存、分几层缓存和具体业务有关。)

2. 每个缓存服务器接收1000个服务器取文件。

无论哪种方法,好像速度都不够快,主要受制于资源和带宽。

定义:1、Peer-to-peer 是一类允许一组用户互相连接并直接从用户硬盘上获取文件的网络。

2、Peer-to-peer网络是一个运行于个人电脑上的应用,通过网络在用户间分享文件。P2P网络通过连接个人电脑分享文件而不是通过中央服务器。

3、P2P是一种分布式网络,网络的参与者共享他们所拥有的一部分硬件资源(处理能力、存储能力、网络连接能力、打印机等),这些共享资源需要由网络提供服务和内容,能被其它对等节点(peer)直接访问而无需经过中间实体。在此网络中的参与者既是资源(服务和内容)提供者(server),又是资源(服务和内容)获取者(client)。

P2P还是英文Point to Point (点对点)的简称。它是下载术语,意思是在你自己下载的同时,自己的电脑还要继续做主机上传,这种下载方式,人越多速度越快但缺点是对硬盘损伤比较大(在写的同时还要读),还有对内存占用较多,影响整机速度。

P2P的特点:1)无中央服务器,打破了C/S模式;2)用户之间互联并分享文件。

常见的P2P的协议有BitTorrent,这和我们天津大学的PT是一样的协议。

1、BT的简介

比特流(BitTorrent)是一种内容分发协议。它采用高效的软件分发系统和点对点技术共享大体积文件(如一部电影或电视节目),并使每个用户像网络重新分配结点那样提供上传服务。一般的下载服务器为每一个发出下载请求的用户提供下载服务,而BitTorrent的工作方式与之不同。分配器或文件的持有者将文件发送给其中一名用户,再由这名用户转发给其它用户,用户之间相互转发自己所拥有的文件部分,直到每个用户的下载都全部完成。这种方法可以使下载服务器同时处理多个大体积文件的下载请求,而无须占用大量带宽。

BitTorrent(简称BT)是一个文件分发协议,每个下载者在下载的同时不断向其他下载者上传已下载的数据。而在FTP,HTTP协议中,每个下载者在下载自己所需文件的同时,各个下载者之间没有交互。当非常多的用户同时访问和下载服务器上的文件时,由于FTP服务器处理能力和带宽的限制,下载速度会急剧下降,有的用户可能访问不了服务器。BT协议与FTP协议不同,特点是下载的人越多,下载速度越快,原因在于每个下载者将已下载的数据提供给其他下载者下载,充分利用了用户的上载带宽。通过一定的策略保证上传速度越快,下载速度也越快。

2、BT的原理解析

BitTorrent协议是架构于TCP/IP协议之上的一个P2P文件传输协议,处于TCP/IP结构的应用层。

根据BitTorrent协议,文件发布者会根据要发布的文件生成提供一个torrent文件,即种子文件,也简称为"种子"。

.torrent文件本质上是文本文件,包含Tracker信息和文件信息两部分。Tracker信息主要是BT下载中需要用到的Tracker服务器的地址和针对Tracker服务器的设置,文件信息是根据对目标文件的计算生成的,计算结果根据BitTorrent协议内的B编码规则进行编码。它的主要原理是需要把提供下载的文件虚拟分成大小相等的块,块大小必须为2k的整数次方(由于是虚拟分块,硬盘上并不产生各个块文件),并把每个块的索引信息和Hash验证码写入种子文件(.torrent)中。所以,种子文件(.torrent)就是被下载文件的"索引"。

3、和PT的区别

  PT(Private Tracker)下载其实也是Bt下载的一种,但有两个明显的改进:一是私密的小范围下载,二是进行流量统计,根据上载量决定你的权限。 BT下载时,软件会分析.torrent种子文件得到Tracker地址,然后连接Tracker服务器,服务器返回其他下载者的IP,下载者再与这些IP联系进行下载,从而减轻了服务器的负担,BT下载的Tracker是公开的,而Private Tracker 下载(PT下载)的Tracker则是私有的,每个人的Tracker是不同的,即passkey不同,passkey对PT下载者很重要,所以不要轻易泄露出去。 其实和通常BT相比,PT就是多了一个passkey验证,这样就能保证未注册的用户不能下载。所以passkey很重要,一旦发现有问题,就要到站点上去重置passkey。Tracker Server根据passkey把BT客户端上传量和下载量进行计算,从而算出分享率(上传量/下载量)。如果分享率太小,将会被删除帐号,从而不能下载。 这样Private Tracker 下载(PT下载)是一种小范围的BT下载,通过禁用DHT有要求地选择并控制用户数量,这样,在有限的范围内,下载的用户基本上都可以达到自己的宽带上限,Private Tracker 下载(PT下载)下载还通过论坛等方式的约束机制将BT下载的理念现实化,真正让用户做到下载的过程中努力上传。因此,Private Tracker 下载(PT下载)的速度很快,能够让用户款待得到最大程度的使用。

原文地址:https://www.cnblogs.com/mini-coconut/p/9255033.html

时间: 2024-07-29 16:14:35

P2P协议初步的相关文章

p2p 协议

p2p 协议 来源: http://baike.haosou.com/doc/6840191-7057466.html 别名: 对等网络, 工作组, 对等计算 P2P 在 IT 界最初的含义是 Peer-to-peer, 之后的含义是 Point to point(点对点) (PPP). P2P 已经被更广泛的理解为 Pointer-to-Pointer, PC-to-PC 等等 简单来说, P2P 就是指数据的传输不再通过服务器, 而是网络用户之间直接传递数据 在 QQ 出现之前, 人们上网聊

PPP(P2P)协议

P2P协议(PPP).常见的P2P应用,还记得我们的快播吗? P2P是一类允许一组用户互相连接并直接從用户硬盘上获取文件的网络. P2P应用可以通过网络在用户间分享文件.P2P网络通过连接个人电脑分享文件而不是通过中央服务器. P2P是一种分布式网络,网络的参与者共享他们所拥有的一部分硬件资源(处理能力.存储能力.网络连接能力.打印机等),这些共享资源需要由网络提供服务和内容,能被其它对等节点(peer)直接访问而无需经过中间实体. 在此网络中的参与者既是资源(服务和内容)提供者(server)

如何将TS源流重新封装并通过P2P协议传输在安卓终端和苹果终端播放

什么是TS流 TS流(TransportStream)即在MPEG-2系统中,由视频,音频的ES流和辅助数据复接生成的用于实际传输的标准信息流称为MPEG-2传送流.根据传输媒体的质量不同,MPEG-2中定义了两种复合信息流:传送流(TS)和节目流(PS:ProgramStream). 也可以从另外一个层面来理解TS流. TS是MPEG2中提出的一种流媒体的封装格式,适合流媒体播放.在MPEG2中支持了2种媒体播放格式:本地播放的PS流(program Stream),网络播放的流媒体格式TS流

HTTP协议初步了解

http协议可以说是当代最重要的应用层协议,平时我们浏览的页面.微信公众号的文章.aap内每天更新的内容等等,都是使用的http协议.既然是使用最广泛的协议,那么我们运维必须了解它的一些原理,同时也要了解http协议传输的数据都有哪些. 一 http协议 1请求流程 上图是网上流传最多的一张关于HTTP协议协议请求流程的图 2通用首部 通用首部的重要的几个,通用首部既可以出现请求报文中也可以出现在响应报文中 Date :报文的创建时间 Connection :连接方式,如keep-alive,C

FFmpeg 协议初步学习

typedef struct URLContext { const AVClass *av_class; /**< information for av_log(). Set by url_open(). */ struct URLProtocol *prot; void *priv_data; char *filename; /**< specified URL */ int flags; int max_packet_size; /**< if non zero, the strea

HTTP协议初步解析

一.什么是HTTP协议 HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,定义了Web客户端向Web服务器请求Web页面的方式,以及服务器向客户端传送Web页面的方式. 定义中的名词解释: 什么是超文本? 超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本. 什么是应用层协议? 网络的设计者使用分层的方式组织网络协议以及实现这些协议的硬件和软件,历史上比较重要的一个协议组织模型是五层因特网协议栈,从顶

web框架简介, 以及 HTTP协议初步了解

一, web框架的本质: 所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web框架了 ################## # # # # # socket服务端 # # # # # ################## import socket sk = socket.socket() sk.bind(("127.0.0.1", 80)) sk.listen() while True: conn, addr =

直播P2P技术一窥

1. 直播协议 直播协议主要有RTMP,HLS,MPEG-DASH,RTSP,HTTP-FLV等.每种协议都各有长短,比如RTMP延迟低,但诞生于Adobe,依赖于Flash Player,在如今FLash Player面临被淘汰的时代,RTMP前途未卜:HLS是苹果基于HTTP开发并主导的流媒体协议,它充分利用了HTTP的通用性,并能根据带宽自适应码率,但单个TS文件duration过大(一般为10s),延迟较高:MPEG-DASH类似于HLS,也是基于HTTP的,不同点是DASH单个片段du

Atitit JAVA&#160;p2p设计与总结 &#160;JXTA 2

Atitit JAVA p2p设计与总结  JXTA 2 JXTA 2 是开放源代码 P2P 网络的第二个主要版本,它利用流行的.基于 Java 的参考实现作为构建基础.在设计方面进行了重要的修改,以获得更高的性能.海量伸缩性和可维护的 P2P 网络.本文建立在 Sing Li 于两年前发表的 JXTA 系列文章 Makng P2P interoperable的基础上,为您介绍了这个平台上最新的重要改变 JXTA具体来说是一种标准组件平台,它提供了用于开发分布式服务和应用程序的基本组件.整套技术