c++判断ftp服务器文件存在性判断_BitTorrent协议与传统文件分发协议对比

一、文件传输

前端时间做了和文件传输相关的工作,今天抽空做个总结。总结一下平常使用的几种协议以及BtTorrent协议。其实BitTorrent协议也不是什么新协议,它诞生也十几年了。咱也蹭个热点,最近几年大火的区块链技术也和BitTorrent协议有着异曲同工之处,都是p2p。话不多说,先介绍几种传统的文件传输协议:

1、FTP协议

FTP,File Transfer Protocol的简写,文件传输协议,属于TCP/IP协议之一。包含两个部分:FTP服务器和FTP客户端。

f24892a338fb81874fabfade4b35d1c3.png

FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源,包括上传和下载。

通常情况下,FTP传输效率非常高,一般网络上传输大的文件时,也采用该协议。

不过,FTP毕竟已经诞生40多年了,许多厂商已经考虑不再支持FTP了。

据悉,Chrome浏览器开发者正讨论逐步放弃对FTP协议的支持。即将生效的一个变化是,部分FTP文件将不再提供页面预览,而是直接跳转下载。这是弱化FTP协议并最终取消的开端,Chrome开发者们对维护文件服务器目录也已经厌倦了,况且还有安全问题。

另外,Mozilla也早有类似弱化FTP的讨论,预计Firefox也将追随Chrome的脚步。


FTP协议有一些难以改善的缺点,尤其是密码和文件内容都使用明文传输而容易被窃听、传输大量小文件时效果不好等,很早之前,有将SSL证书应用到FTP上的讨论,但最终,开发者们认为继续为FTP增加代码已经没有必要,倒不如扫入回收站。如今,P2P点对点协议已经在很大程度上成为如今互联网文件传输的主流。

2、SFTP协议

由于FTP协议的安全性相对不高,后来又发展出来SFTP协议。SFTP:SSH文件传输协议(英语:SSHFile Transfer Protocol,也称Secret File Transfer Protocol,中文:安全文件传送协议,英文:Secure FTP或字母缩写:SFTP)是一数据流连接,提供文件访问、传输和管理功能的网络传输协议。SFTP协议是在FTP的基础上对数据进行加密,使得传输的数据相对来说更安全。但是这种安全是以牺牲效率为代价的,也就是说SFTP的传输效率比FTP要低。

3、SCP协议

全称Secure Copy协议,是用来定义“本地机器和远端机器之间”或者“远端机器和远端机器之间”传输文件的过程的协议。SCP协议处于OSI(Open System Interconnection)七层体系中的应用层。通常是在linux之间分发文件使用的。

9dc3cd627c32c478b4fef06e8e6ac81a.png

scp是secure copy的缩写,scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。linux的scp命令可以在linux服务器之间复制文件和目录。上述三种方式区别:FTP是基于TCP协议传输文件,明文传输文件数据和用户信息;SFTP基于SSH协议,文件加密,可靠性高,可断点续传;SCP基于SSH协议,文件加密,但不可断点续传,由此诞生scp的增强版rsync。

4、rsync

rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。与scp不同:sync和scp在文件均不存在时,执行时间相差不大,但是文件存在的情况下差异很大。原因是scp是复制:若文件不存在则新建,若存在则覆盖,可以理解为scp为“复制”。而rsync则在文件在存在于两主机时,比较两文件是够相同,相同的话,就什么都不做,若存在差异就直接更新。简单的说rsync只对差异文件做更新。

二、BitTorrent协议

1、简介

BitTorrent是一种内容分发协议,由布拉姆·科恩2001年自主开发。

一般的下载服务器为每一个发出下载请求的用户提供下载服务,而BitTorrent的工作方式与之不同。文件的持有者将文件发送给其中一名用户,再由这名用户转发给其它用户,用户之间相互转发自己所拥有的文件部分,直到每个用户的下载都全部完成。这种方法可以使下载服务器同时处理多个大体积文件的下载请求,而无须占用大量带宽。

简而言之:资源不再由一个服务器提供,而是所有下载文件的服务器提供。服务器既是下载者,也是上传者。参与者越多,速度也快!

原理:制作目标文件的种子文件或者磁力链接(其中会把目标文件分成若干个碎片文件),下载者通过种子文件或磁力链接,去tracker服务器或DHT网络下载文件,同时获取其它下载该文件的下载者信息。此时,每一个下载者不光能从文件源服务器处下载文件,也能从其它下载者处获取文件。

传统文件传输方式与p2p模式对比:

1)传统文件传输方式:

传统文件传输方式,比如FTP、SCP、RSYNC等都是一对一传输,如下图所示。这种方式对于下载者少是很好的,但是如果下载者多了,对服务器来说就是一种负担了,占带宽并且速度慢,这种方式是串行的。

8fc2c7f41876cf66d2dcaa0080699171.png

2)p2p分发文件方式:

BitTorrent协议就归属于P2P分发方式,p2p文件分发上面已经说过,就是peer-to-peer。每一个peer既是下载者也是上传者,peer下载的同时也会向其它的peer提供上传服务。甚至在下载完毕的时候,也会向其它peer再提供一段时间的上传服务。如下图所示:

7eb681fcc906e666879fd26083fc48ad.png

2、架构

BitTorrent架构主要包括:Tracker服务器(或者DHT网络)、种子解析文件服务器、以及下载者BTclient。

Tracker服务器:一个BTclient在开始下载以及下载进行的过程中,要不断与tracker服务器进行通信,并报告自己的信息,同时获取其它BTclient的信息。这种通信是基于HTTP协议的,故又称之为tracker HTTP协议。不过这种方式弊端还是比较大的,如果Tracker服务器一旦挂掉,BTclient就不能继续下载文件了。由此,后来者又发明了DHT网络,这我们之后的文章会讲。

备注:

P2P文件分发是有几个阶段的,最早是使用Tracker服务器作为BTclient信息的交换网络。后来因为Tracker的局限性,又发展处DHT网络以及混合型P2P网络。

种子解析文件服务器:该服务器通常的作用就是把文件制作成种子文件,并且一直提供该文件的上传服务,BTclient通过Tracker服务器找到它,并从中下载文件。

下载者BTclient,其实就是下载的用户,用户通过相应的软件去对应地址下载文件。

它们之间的关系如下:

52ba47bb1e464cb01878d987f919f8ef.png

三、BitTorrent优缺点

有得就有失,这个世界没有什么是只有好处没有坏处的,技术发展也一样。BitTorrent具有非常明显的优势:分发速度快、分发机器多、节省带宽。

缺点也很明显:耗资源,尤其是cpu和内存,那是因为BitTorrent是把文件划分为一个个小文件用于peer之间进行比对。分发文件时,peer之间需要频繁的对自己和其它peer拥有的小文件碎片进行比对,以判断哪些小文件是自己能下载的,以及能上传的,这很耗CPU。并且不断的上传和下载对内存的使用也是一种负担。

四、BitTorrent的python实现

1、使用python-libtorrent

Python-libtorrent模块是一个使用python语言编写的BitTorrent模块,使用它可以制作BT种子,以及根据种子下载文件。和OpenTracker结合起来可以搭建一整套BT环境。篇幅所限,就不在此赘述了,有兴趣者可以百度自行搜索。

2、murder

除了使用python-libtorrent外,我们还可以使用相对便捷的murder。murder是twitter开源的一款产品,比较成熟,不需要python-libtorrent那样还需要自己写程序,非程序员可以考虑使用它。而且里面包含了上述所有的组件。方便快捷,具体安装和使用方式如下:

1)tracker服务器安装:

acaa7d384f1bb4b7331760e8e0702484.png

2)seeder生成种子以及开启种子解析文件服务器:

ce28c55f09dbf4170e7a63d7184e550f.png

3)peer节点下载文件(BTclient下载文件):

dee920529adb11e66647d6529ddd42b9.png

五、结语

这几个文件分发协议其实各有优劣,没有哪个是完完全全碾压其它协议的。总之,有所得就得有所失。今天大概只是讲了几个文件传输协议的基础原理,并没有很探讨更深入的原理。里面还有很多可讲的点,比如DHT网络,怎么制作一个类似迅雷的软件,这些东西我们下次再聊。

 4689190a85cb80608f4f4e80b53beac2.gif

了解新钛云服

招聘:高级运维工程师

新钛云服正式获批工信部ISP/IDC(含互联网资源协作)牌照

深耕专业,矗立鳌头,新钛云服获千万Pre-A轮融资

新钛云服,打造最专业的Cloud MSP+,做企业业务和云之间的桥梁

新钛云服一周年,完成两轮融资,服务五十多家客户

上海某仓储物流电子商务公司混合云解决方案

新钛云服出品的部分精品技术干货

国内主流公有云VPC使用对比及总结

万字长文:云架构设计原则|附PDF下载

刚刚,OpenStack 第 19 个版本来了,附28项特性详细解读!

Ceph OSD故障排除|万字经验总结

七个用于Docker和Kubernetes防护的安全工具

运维人的终身成长,从清单管理开始|万字长文!

OpenStack与ZStack深度对比:架构、部署、计算存储与网络、运维监控等

什么是云原生?

IT混合云战略:是什么、为什么,如何构建?

73e28fe9c620f93a07a2f88b3bf567d7.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431201.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java基础全套

这是我自己早前听课时整理的java基础全套知识 使用于初学者 也可以适用于中级的程序员 我做成了chm文档的类型 你们可以下载 笔记是比较系统全面,可以抵得上市场上90%的学习资料。讨厌那些随便乱写的资料还有拿出来卖钱的人!在这里我免费的分享出来供…

顺丰快递单号的规律_顺丰速运顺丰快递单号查询大全

如何一键查询快递单号顺丰快递单号查询跟踪,鸡蛋是我们日常生活当中最为常见的一种食材啦,相信在每一个家庭当中每天都会吃到鸡蛋,因为鸡蛋的营养价值非常高,它含有丰富的蛋白质,可以为我们身体提供能量,别…

用计算机求正有理数算术平方根的步骤,用计算器求算数平方根、用有理数估计算数平方根的大小.ppt...

用计算器求算数平方根、用有理数估计算数平方根的大小.ppt 上传人:jw****88文档编号:85573818上传时间:2020-06-11格式:PPT页数:20大小:2.14MB下载提示(请认真阅读)1.请仔细阅读文档,确保文档完…

【整理】强化学习与MDP

【入门,来自wiki】 强化学习是机器学习中的一个领域,强调如何基于环境而行动,以取得最大化的预期利益。其灵感来源于心理学中的行为主义理论,即有机体如何在环境给予的奖励或惩罚的刺激下,逐步形成对刺激的预期&#x…

nginx 根证书 服务器证书,Nginx双向证书校验(服务器验证客户端证书)

1、创建Root CA私钥openssl genrsa -out root-ca.key 10242、创建Root CA证书请求openssl req -new -out root-ca.csr -key root-ca.key3、签发Root CA根证书openssl x509 -req -in root-ca.csr -out root-ca.crt -signkey root-ca.key -CAcreateserial -days 36505、生成服务器…

移动app测试的多样性_做移动APP功能测试,这些因素你得都考虑到~

对于刚入行的测试新手来说,无论是做手动测试还是自动化测试,前期都避免不了学习前人经验,从而尽可能减少自己的漏测问题。作为一个过来人,今天,我就将自己的移动APP功能测试分享给大家,希望对新手有一定帮助…

pytorch dropout_PyTorch初探MNIST数据集

前言:本文主要描述了如何使用现在热度和关注度比较高的Pytorch(深度学习框架)构建一个简单的卷积神经网络,并对MNIST数据集进行了训练和测试。MNIST数据集是一个28*28的手写数字图片集合,使用测试集来验证训练出的模型对手写数字的识别准确率…

saphana服务器硬件评估,华为SAP HANA一体机:你身边的数据计算专家

​ 华为服务器高级营销经理 谭鑫/文​在当今数字经济时代,如何将数据快速变现为价值资产是很多企业追求的目标。借助SAPHANA平台方案与技术,可以将数据处理化繁为简,及时汲取价值信息,为企业的业务决策提供数据参考,从…

verilog设置24进制计数器_阅读笔记:《Verilog HDL入门》第3章 Verilog语言要素

3.1标识符1.Verilog中的Identifier是由任意字母、数字、下划线和$符号组成的,第一个字符必须是字母或者下划线。区分大小写。2.Escaped Identifier是为了解决简单标识符不能以数字和$符号开头的缺点。如下所示:3.关键字。我的理解是保留字包括关键字&…

锋利的jQuery--jQuery与DOM对象的互相转换,DOM的三种操作(读书笔记一)

1.jQuery对象就是通过jQuery包装DOM对象后产生的对象。2.jQuery对象和DOM对象的相互转换。良好的书写风格&#xff1a;var $input$("input")jQuery获取的对象在变量前面加上$。<1>jQUery对象转成DOM对象,两种方法&#xff1a;[index]和get(index)a:var $cr$(&q…

网站显示不正常服务器怎么弄,你真的知道网站出现收录不正常的原因是什么吗...

当一个新网站构建起来时&#xff0c;每天所担心的就是一个收录量。当你偶然看到收录减少时&#xff0c;不免心有所寒。不知道怎么“得罪”蜘蛛大哥了&#xff0c;发生了什么事把收录量给“没收”了。作为SEOer&#xff0c;我们知道在搜索引擎蜘蛛的心里内容的质量占有很大比重&…

ajax status php,解决laravel 出现ajax请求419(unknown status)的问题

如下所示&#xff1a;这个是因为laravel自带csrf验证的问题解决方法方法一&#xff1a;去关掉laravel的csrf验证&#xff0c;但这个人不建议&#xff0c;方法也不写出来了。方法二&#xff1a;把该接口写到api.php上就好了方法三&#xff1a;首先在页面加上然后请求的在header里…

string 转比较运算符_运算符

1、概述算术运算符 - * /基本运算算术运算符%取模&#xff0c;取余数&#xff0c;计算整除算术运算符 --自增 自减比较运算符 !相等比较 不等比较逻辑运算符&& &逻辑与 短路与&#xff08;同真为真&#xff09;逻辑运算符|| |逻辑或 短路或&#xff08;一真则真&am…

神舟战神换cpu教程_神舟将十代i5称为“神U出世”?聊聊到底有哪些优势

在各个品牌大力的宣传之下&#xff0c;消费者对于笔记本电脑乃至各种数码硬件的要求都越来越高。既要好的处理器、显卡等性能配置&#xff0c;又要好的屏幕&#xff0c;甚至还得低定价&#xff0c;这就产生一种鱼与熊掌不可兼得的感觉了。就在今年的表白日&#xff0c;神舟电脑…

服务器系统杀毒系统崩溃怎么恢复,系统崩溃是什么原因导致的

大家在使用电脑的时候&#xff0c;经常都是需要安装一些软件和其他东西的。但是在安装软件的时候&#xff0c;很容易让一些病毒侵入电脑。一旦病毒侵入了电脑&#xff0c;就很容易让电脑系统崩溃。那么系统崩溃是什么原因导致的呢&#xff1f;下面就来告诉大家系统崩溃的原因及…

atom配置python环境_python与excel有段情之二:python的安装和环境配置

索引python与excel有段情之一&#xff1a;前述python与excel有段情之二&#xff1a;python的安装和环境配置python与excel有段情之三&#xff1a;python编程前的准备工作和基本概念python与excel有段情之四&#xff1a;案例1.把多excel表抽数生成新excel表python与excel有段情之…

x86服务器当虚拟化的存储,龙存科技-软件定义数据中心产品提供商

一、应用背景服务器虚拟化技术是云计算的核心技术&#xff0c;是将系统进行虚拟化应用于服务器之上的技术。面向应用集中化处理&#xff0c;能最大的程度上利用硬件资源&#xff0c;并且实现灵活分配。虚拟化技术是将计算机底层的硬件功能的模拟&#xff0c;需要复杂的语句和机…

使用python开发网页游戏_不敢想!不敢想!我用Python自动玩转2048游戏

近来在折腾selenium自动化, 感觉配合爬虫很有意思, 大多数以前难以模拟登录的网站都可以爬了&#xff0c;折腾了这么久,于是想自动玩个2048游戏&#xff01;嘿嘿, 我是一个不擅长玩游戏的人, 以前玩2048就经常得了很低的分&#xff0c;每每想起都”痛心疾首”, 所以我打算拿204…

【飞谷六期】爬虫项目4

经过了几天的摸索&#xff0c;照猫画虎的把爬虫的部分做完了。 但是很多原理性的东西都不是很理解&#xff0c;就是照着抄的&#xff0c;还需要继续学习。 看这个目录结构&#xff0c;只看.py的文件&#xff0c;.pyc的文件是运行的时候生成的不管它。 items.py:定义想要导出的数…

activex控件 新对象 ocx 初始化_Office已经支持64位的树控件Treeview了

之前在使用Office365时发现微软其实已经悄悄地开始提供了64位的Treeview树控件&#xff0c;只是并没有公开宣布。当时是在一个网友的电脑上说他可以在64位Excel中可直接使用64位树控件&#xff0c;当时以为他看到的只是一个假的树控件&#xff0c;后来经过远程他的电脑&#xf…