c++判断ftp服务器文件存在性判断_BitTorrent协议与传统文件分发协议对比
一、文件傳輸
前端時間做了和文件傳輸相關的工作,今天抽空做個總結。總結一下平常使用的幾種協議以及BtTorrent協議。其實BitTorrent協議也不是什么新協議,它誕生也十幾年了。咱也蹭個熱點,最近幾年大火的區塊鏈技術也和BitTorrent協議有著異曲同工之處,都是p2p。話不多說,先介紹幾種傳統的文件傳輸協議:
1、FTP協議
FTP,File Transfer Protocol的簡寫,文件傳輸協議,屬于TCP/IP協議之一。包含兩個部分:FTP服務器和FTP客戶端。
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之間分發文件使用的。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等都是一對一傳輸,如下圖所示。這種方式對于下載者少是很好的,但是如果下載者多了,對服務器來說就是一種負擔了,占帶寬并且速度慢,這種方式是串行的。
2)p2p分發文件方式:
BitTorrent協議就歸屬于P2P分發方式,p2p文件分發上面已經說過,就是peer-to-peer。每一個peer既是下載者也是上傳者,peer下載的同時也會向其它的peer提供上傳服務。甚至在下載完畢的時候,也會向其它peer再提供一段時間的上傳服務。如下圖所示:
2、架構
BitTorrent架構主要包括:Tracker服務器(或者DHT網絡)、種子解析文件服務器、以及下載者BTclient。
Tracker服務器:一個BTclient在開始下載以及下載進行的過程中,要不斷與tracker服務器進行通信,并報告自己的信息,同時獲取其它BTclient的信息。這種通信是基于HTTP協議的,故又稱之為tracker HTTP協議。不過這種方式弊端還是比較大的,如果Tracker服務器一旦掛掉,BTclient就不能繼續下載文件了。由此,后來者又發明了DHT網絡,這我們之后的文章會講。
備注:
P2P文件分發是有幾個階段的,最早是使用Tracker服務器作為BTclient信息的交換網絡。后來因為Tracker的局限性,又發展處DHT網絡以及混合型P2P網絡。
種子解析文件服務器:該服務器通常的作用就是把文件制作成種子文件,并且一直提供該文件的上傳服務,BTclient通過Tracker服務器找到它,并從中下載文件。
下載者BTclient,其實就是下載的用戶,用戶通過相應的軟件去對應地址下載文件。
它們之間的關系如下:
三、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服務器安裝:
2)seeder生成種子以及開啟種子解析文件服務器:
3)peer節點下載文件(BTclient下載文件):
五、結語
這幾個文件分發協議其實各有優劣,沒有哪個是完完全全碾壓其它協議的。總之,有所得就得有所失。今天大概只是講了幾個文件傳輸協議的基礎原理,并沒有很探討更深入的原理。里面還有很多可講的點,比如DHT網絡,怎么制作一個類似迅雷的軟件,這些東西我們下次再聊。?
了解新鈦云服
招聘:高級運維工程師
新鈦云服正式獲批工信部ISP/IDC(含互聯網資源協作)牌照
深耕專業,矗立鰲頭,新鈦云服獲千萬Pre-A輪融資
新鈦云服,打造最專業的Cloud?MSP+,做企業業務和云之間的橋梁
新鈦云服一周年,完成兩輪融資,服務五十多家客戶
上海某倉儲物流電子商務公司混合云解決方案
新鈦云服出品的部分精品技術干貨
國內主流公有云VPC使用對比及總結
萬字長文:云架構設計原則|附PDF下載
剛剛,OpenStack 第 19 個版本來了,附28項特性詳細解讀!
Ceph OSD故障排除|萬字經驗總結
七個用于Docker和Kubernetes防護的安全工具
運維人的終身成長,從清單管理開始|萬字長文!
OpenStack與ZStack深度對比:架構、部署、計算存儲與網絡、運維監控等
什么是云原生?
IT混合云戰略:是什么、為什么,如何構建?
總結
以上是生活随笔為你收集整理的c++判断ftp服务器文件存在性判断_BitTorrent协议与传统文件分发协议对比的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我买了几本民国时期的课本:100年前的插
- 下一篇: 基金和股票相比的优势,从这些角度看