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

随着各种行业和硬件设备的发展,大文件越来越多,比如在媒体行业为了保证图片和视频的清晰,和以前的相比,都比较大,尤其是出版社等行业。确保大文件能快速的传输,现在很多企业还是使用的硬盘邮寄的方式。如果使用网上传输的方式,可以实现吗? 想弄清楚这个问题,我们首先用知道现在网上信息传输常用的方式HTTP FTP和P2P优劣势。我们一起来看下吧:
1、 Http传输:
比较传统的文件分发方式,优点是部署方便,一般会采用IIS、Apache、Nginx、Tomcat等web服务器,基本上能运行网站的web服务器都可以用来做文件的传输。
http这种部署需要注意,很多http服务器对一个连接的超时、文件大小默认都有些限制的,因为http最初主要是针对网页、图片这类小文件设计的协议,所以一般需要改一些设置。
2、 FTP传输
类似于Http,也是比较传统的文件分发方式,特点跟http类似。基本上优缺点也跟http想似,所以可以二者放一起讲他们的优缺点。Ftp最初是希望改进http对大文件支持不好的领域,但实际上,这几年随着http的发展,这些弊端也都有办法规避,ftp和http相似性较大,所以这几年,ftp已经慢慢基本退出市场了,应用越来越少。

HTTP和FTP这两类分发统一的特点都是:
A) 所有数据都要走服务器,对服务器带宽、性能压力要求比较高。
B) 如果用户量多,一台服务器性能不够时,如果增加多个服务器,需要通过智能DNS等调度,但如果有冷门时间段,比如多服务器很多在空闲时,很难同时利用多个服务器的性能,只能随机给客户一台服务器提供数据。
C) 如果要自己做客户端去下载,一般需要自己去实现断点续传、多线路(多线程)下载增加速度,以及考虑不同环境的最优下载速度、限速处理等
D) 一般适合文件分发量不大;或者文件同时下载的几率比较小,或者希望轻量级解决分发的用户,不希望使用p2p等更高级方案的轻量级用户。
这类客户,小编比较建议如果自己做下载的客户端,可以考虑用一些具有断点续传、限速、对单地址多线程下载、如果有多服务器地址,可以同时从多个镜像服务器下载等功能的HttpFtp内核,可以发挥这两类协议的最大潜力。并且几行代码实现一个完整的下载客户端。
3、 CDN:
严格来说不属于一个协议,它只是对http这种的一个扩充,简言之就是:你有一台http服务器,但全国人民都去下载可能速度不够快,cdn给你复制到了全国很多份,让每个省的人民访问时,它自动给分配一个距离他最近的一台http服务器。上面缓存了你服务器上的数据内容。
相比普通http服务器,它解决了不同运营商、不同地区访问速度慢的问题。但带来的是成本增加。用这类的客户,也可以考虑点量HttpFtp内核,因为断点续传(比如一个文件1G,上次下载了500M,下次开机,继续从500M下载,而不是从头下载)、限速、多线程等还是对这类用户有需求的。
4、 P2P分发:自己搭建p2p的服务器,搭建自己的服务器(也可以不用搭建服务器,直接服务端用cdn,或者http服务器)。这种方式有点有很多:

A)节省服务器带宽:这个是p2p众所周知的优点,这里就不多加赘述了。
B)可以多源下载:这个是人们往往忽略的,经常有人问我说:如果只有一个人下载,此时p2p是不是就没什么好处了。其实这个也是不对的。就算只有一个人下载,这个用户如果用普通http,一般是从单个服务器下载,如果遇到这个服务器比较慢,他只能忍受。但如果是p2p的系统,p2p后端可以有多台服务器,比如你购买10几台美国服务器,带宽又便宜,又不限流量,这种模式下,下载是从10几台服务器一起下载,速度还是要快,而且就算一台服务器宕机,也一点不影响下载,这个其实也是p2p的一个很大的好处。服务器运维时,上下线对用户没有任何影响。
C)天然的防盗链:p2p协议如果不用标准的BT协议,是完全可以自定义一些私有传输协议的。这种协议,用户几乎无法去盗链你的资源,除非他自己写一个一样协议的p2p软件,所以这方面优势比http好太多。
D)用户下载速度比HTTP快:因为多源下载,所以自然速度就比单服务器模式速度可以快。
E)成本低:不同于http模式,p2p的服务器不一定放优质机房,可以只少量放机房。很多服务器可以用美国的低价服务器,1G带宽一个月就1000多人民币,这价格秒杀很多国内机房。2008年以前,我还见过有人是租一些民房,放一些普通电脑,用来做p2p加速。特别是找一些带宽上传便宜的地区,因为很多民用带宽在很多地区1年只有几百块就能拿到的。
F)安全和校验:P2P传输可以用私有协议、文件内置了hash指纹校验防篡改数据,这这安全性非常高。几乎文件没有篡改的可能。

原文地址:http://blog.51cto.com/13794487/2145153

时间: 2024-10-09 05:59:15

浅谈HTTP FTP和P2P网络大文件传输的优劣势的相关文章

浅谈区块链和p2p网络

最近对区块链产生了兴趣就去了解了一下,分享一下.... 首先要先了解一下什么叫做区块链: 区块链:简单来说就是一种基于分布式数据存储.点对点传输.共识机制.加密算法等计算机技术的新型应用模式. 相信说到比特币大家都了解,比特币就是基于区块链的基础上而生的.区块链就像是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,其中包含了一次比特币网络交易的信息,用于验证其信息的有效性和生成下一个区块.. p2p网络: 对等网络,即对等计算机网络,是一种在对等者(Peer)之间分配任务和工作负载

C++大文件传输

C/C++大文件/数据网络传输方法总结 在C/C++网络编程中不免会遇到需要传输大数据.大文件的情况,而由于socket本身缓冲区的限制,大概一次只能发送4K左右的数据,所以在传输大数据时客户端就需要进行分包,在目的地重新组包.而实际上已有一些消息/通讯中间件对此进行了封装,提供了直接发送大数据/文件的接口:除此之外,利用共享目录,ftp,ssh等系统命令来实现大文件/数据也不失为一种好的方法. 1.基础的基于socket进行传输 基础的基于socket进行传输关键在于控制,需要自己行分包和组包

支持断点续传的大文件传输协议

文件传输协议(FTP)是一个被广泛应用的网络协议,FTP技术作为文件传输的重要手段,在数据通信领域一直发挥着举足轻重的作用,不支持断点续传,是Internet上最早也是最广泛使用的应用之一. 从1971年A.K.Bhushan提出第一个FTP协议版本(RFC114)到现在,人们对FTP的应用已经历了40余年的时间,同时,许多基于FTP协议的数据传输软件也应运而生.如Windows操作系统下经常使用的支持FTP协议的软件有:CuteFTP.FlashFXP.迅雷(Thunder).快车(Flash

一个好用的大文件传输工具:支持选点续传、错误重传

数据正在爆炸式增长,几乎每两年翻一番.这些数据和文件可能是组织机构重要的业务数据,也可能是其重要的信息资源. 通常情况下,组织机构使用邮件.QQ.FTP等常规方式传输文件,但是当文件容量在2-3G以上时,上述方法就变得非常缓慢.如果文件更大时,快递硬盘等方式经常被使用,但是快递硬盘通常要花二三天的时间,不能满足及时获取文件的要求. 选择一个便捷的方法,高效传输和管理大文件,对于组织机构业务开展的来说非常重要.一个好的大文件传输解决方案至少应该包括以下特点: 优异的传输性能对于大文件传输来说,优异

Windows下基于TCP协议的大文件传输(流形式)

简单实现TCP下的大文件高效传输 在TCP下进行大文件传输,不像小文件那样直接打包个BUFFER发送出去,因为文件比较大可能是1G,2G或更大,第一效率问题,第二TCP粘包问题.针对服务端的设计来说就更需要严紧些.下面介绍简单地实现大文件在TCP的传输应用. 粘包出现原因:在流传输中出现,UDP不会出现粘包,因为它有消息边界(参考Windows 网络编程) 1 发送端需要等缓冲区满才发送出去,造成粘包 2 接收方不及时接收缓冲区的包,造成多个包接收 解决办法: 为了避免粘包现象,可采取以下几种措

如何分发大文件、大文件传输解决方案

随着云计算.大数据技术不断发展,4K 视频.虚拟现实(VR).视频直播等互联网应用领域不断升级更新,企业网.数据中心规模持续扩大,企业拥有的数据急剧增长,海量文件随之产生. 同时,互联网时代,众多行业都面临大型文件传输的问题,速度慢,是否安全,是优先考虑的前提! 一直以来,企业通常使用QQ软件.FTP.网盘或拆分数据.快递硬盘等方式进行海量文件上传和下载. 但是这些方式存在很多弊端,导致企业不能有效利用海量文件: 通常的一些方法: 1.使用QQ等软件直接对传:这种方法在线随时都可以传,比较方便,

WCF大文件传输服务

由于项目需要,自己写一个基于WCF的大文件传输服务雏形.觉得有一定的参考价值,因此放在网上分享. 目前版本为v1.1特点如下: 1.文件传输端口为18650 2.上传和下载文件 3.支持获取文件传输状态(未开始.传输中.传输完成.出现错误) 4.支持获取文件传输进度(范围0~1) 5.支持获取文件传输速度速度(按文件传输速度大小 自动切换 KB/s 和 MB/s显示) 项目解决方案如下: 服务断包括WCF寄宿的控制台服务和Windows 服务以及文件传输服务核心 公共包括一些帮助类(文件HASH

WinSock实现的大文件传输

class file_send { public: SOCKET send_s; //The socket that used for sending which is established previously char * filename; //The full path of the file that the client requested void send_file() { percentage=0; FILE * pFile=fopen(filename,"rb")

networkcomms通信框架实现大文件传输

networkcomms2.3.1通信框架实现大文件传输(为节省空间,不包含通信框架源码,通信框架源码请另行下载) 文件传送在TCP通信中是经常用到的,本文针对文件传送进行探讨 经过测试,可以发送比较大的文件,比如1个G或者2个G 本文只对文件传送做了简单的探讨,示例程序可能也不是很成熟,希望本文起到抛砖引玉的作用,有兴趣的朋友帮忙补充完善 首先看一下实现的效果 服务器端: 客户端(一次只能发送一个文件): 服务器端收到的文件,存放到了D盘根目录下(存放的路径可以根据情况修改) 本程序基于开源的