什么是p2p

點對點即Peer-To-Peer,通常簡寫為P2P。所謂網(wǎng)絡(luò)中的點對點,其實可以看成是一種對等的網(wǎng)絡(luò)模型。P2P其實是實現(xiàn)網(wǎng)絡(luò)上不同計算機之間,不經(jīng)過中繼設(shè)備直接交換數(shù)據(jù)或服務(wù)的一種技術(shù)。P2P由于允許網(wǎng)絡(luò)中任一臺計算機可以直接連接到網(wǎng)絡(luò)中其他計算機,并與之進行數(shù)據(jù)交換,這樣既消除了中間環(huán)節(jié),也使得網(wǎng)絡(luò)上的溝通變得更容易、更直接。
P2P作為一種網(wǎng)絡(luò)的模型,它有別于傳統(tǒng)的客戶/服務(wù)器模型??蛻?服務(wù)器模型一般都有預(yù)定義的客戶機和服務(wù)器。而在P2P模型中并沒有明確的客戶端和服務(wù)器,但其實在P2P模型中,每一臺計算機既可以看成是服務(wù)器,也可以看成是客戶機。在網(wǎng)絡(luò)中,傳統(tǒng)上的客戶機/服務(wù)器通訊模型中,發(fā)送服務(wù)請求或者發(fā)送數(shù)據(jù)的計算機,一般稱為客戶機;而接收、處理服務(wù)或接收數(shù)據(jù)的計算機稱為服務(wù)器。而在P2P網(wǎng)絡(luò)模型中,計算機不僅接收數(shù)據(jù),還有發(fā)送數(shù)據(jù),不僅提出服務(wù)請求,還有接收對方的服務(wù)請求。
程序中所謂“服務(wù)器”并不是硬件中的服務(wù)器,而是接收、處理服務(wù)或接收數(shù)據(jù)的計算機,即完成接收任務(wù)的就需要有Server端。
在網(wǎng)絡(luò)利用通訊程序進行通訊的任一計算機,在通訊之前,都需要偵聽端口號,接受其他機器的連接申請,并在連接建立后,就可以接收對方發(fā)送來的數(shù)據(jù);同時也可以向其他機器提出連接申請,并在對方計算機允許建立連接請求后,發(fā)送數(shù)據(jù)到對方。可見在網(wǎng)絡(luò)中進行P2P網(wǎng)絡(luò)通訊的任一計算機既是客戶機,同樣也是服務(wù)器。
程序的關(guān)鍵步驟就是實現(xiàn)信息在網(wǎng)絡(luò)中的發(fā)送和接收。程序在處理數(shù)據(jù)發(fā)送和接收時采用不同的端口號,網(wǎng)絡(luò)點對點通訊程序并不像客戶端/服務(wù)器端模型程序那樣,分成客戶端程序和服務(wù)器端程序。它是集客戶端程序和服務(wù)器端程序于一身。
p2p的特點
在傳統(tǒng)的C/S模式網(wǎng)絡(luò)系統(tǒng)中,客戶端之間的交互需要依賴中心化的服務(wù)器進行。當(dāng)網(wǎng)絡(luò)規(guī)模變得龐大時,這些中心服務(wù)器的負擔(dān)就會越來越重,很容易成為網(wǎng)絡(luò)瓶頸。而且一旦服務(wù)器崩潰,就會造成整個網(wǎng)絡(luò)癱瘓(單點故障的風(fēng)險)。而P2P網(wǎng)絡(luò)由于沒有中心服務(wù)器,不存在單點性能上的瓶頸,每個節(jié)點在充當(dāng)客戶端的同時,也可以作為服務(wù)端給其他相鄰節(jié)點提供服務(wù),極大地提高了資源的利用率。
總結(jié)來說,P2P網(wǎng)絡(luò)的特點如下:
(1)可擴展性。在P2P網(wǎng)絡(luò)中,用戶可以隨時加入、離開網(wǎng)絡(luò)。而且隨著用戶節(jié)點的加入,系統(tǒng)整體的服務(wù)能力也在相應(yīng)的提高。例如p2p下載中,加入的用戶越多,則P2P網(wǎng)絡(luò)中提供的資源就越多,下載速度就越來越快。
(2)健壯性。由于P2P不存在中心化服務(wù)器,天生就具備耐攻擊和高容錯的特點。即使網(wǎng)絡(luò)中某個節(jié)點被攻擊或下線,也不影響整個系統(tǒng)的正常運行。因為P2P網(wǎng)絡(luò)中每個節(jié)點都可以充當(dāng)服務(wù)端的角色。
(3)高性價比。采用P2P結(jié)構(gòu)的網(wǎng)絡(luò),可以有效地利用互聯(lián)網(wǎng)中大量分散的普通用戶節(jié)點。充分利用這些普通節(jié)點中閑散的CPU、帶寬、存儲資源,從而達到高性能計算和海量存儲的目的。例如:迅雷旗下的星域CDN產(chǎn)品,就是充分利用每一個普通用戶機器的閑散網(wǎng)絡(luò)資源,從而提供一個高性價比的服務(wù)。類似的還有360共享云、國外的sia網(wǎng)盤等。
(4)隱私保護。在P2P網(wǎng)絡(luò)中,由于信息的傳輸分散在各個節(jié)點之間,而無需經(jīng)過中心服務(wù)器。這樣就減少用戶隱私信息被竊聽和泄露的風(fēng)險。
(5)負載均衡。由于P2P網(wǎng)絡(luò)中,資源分散存儲在多個節(jié)點上,而每個節(jié)點又都可以充當(dāng)服務(wù)器的角色。當(dāng)某個節(jié)點需要獲取資源時,只需要向相鄰節(jié)點發(fā)送請求即可,很好地實現(xiàn)了整個網(wǎng)絡(luò)的負載均衡。
p2p的主要功能
P2P網(wǎng)絡(luò)的主要功能可以分為如下3種:
數(shù)據(jù)發(fā)布和傳輸 數(shù)據(jù)存儲和檢索 分布式數(shù)據(jù)處理 (1)數(shù)據(jù)發(fā)布和傳輸有3種方式,分別是一對一(如即時通訊)、一對多(如群組通信和消息廣播)和多對多(如內(nèi)容分發(fā)應(yīng)用:BT、PPS等)
(2)數(shù)據(jù)存儲和檢索分為基于結(jié)構(gòu)化的P2P網(wǎng)絡(luò)方法和基于非結(jié)構(gòu)化的P2P網(wǎng)絡(luò)方法。結(jié)構(gòu)化的P2P網(wǎng)絡(luò)也就是基于分布式哈希表(DHT)的P2P網(wǎng)絡(luò),這個也是目前應(yīng)用最廣泛的,它的網(wǎng)絡(luò)拓撲結(jié)構(gòu)是確定的。而非結(jié)構(gòu)化的P2P網(wǎng)絡(luò)的資源存儲通常與網(wǎng)絡(luò)拓撲結(jié)構(gòu)無關(guān),例如Gnutella。
(3)目前,大多數(shù)分布式數(shù)據(jù)處理技術(shù)采用的是master/slave的架構(gòu)。而基于P2P網(wǎng)絡(luò),也能夠進行分布式的數(shù)據(jù)處理。
