『壹』 誰知道p2p信貸系統源碼有哪幾種語言呢能詳細介紹下嗎
介紹下目前幾款主流的網貸系統源碼開發語言:
1. java語言。java技術具有卓越的通用性、高效性、平台移植性和安全性,廣泛應用於個人PC、數據中心、游戲控制台、科學超級計算機、行動電話和互聯網等,優勢非常明顯。也是目前網貸系統製作最佳開發語言。
2. .NET語言。.NET可生成伸縮性和穩定性更好的應用程序,並提供更好的安全保護。鑒於安全性也是網貸源碼開發中會考慮使用的一種語言。
3. PHP語言。PHP語言也是目前用的非常多的一款開發語言,語法吸收了C語言、Java和Perl的特點,易於學習,使用廣泛,主要適用於Web開發領域。優勢非常明顯,支持幾乎所有流行的資料庫以及操作系統;最重要的是PHP可以用C、C++進行程序的擴展等等。如果考慮程序移植的話就比較麻煩了。以上內容摘自迪蒙網貸系統網路,希望對你有幫助。
『貳』 p2p網貸系統源代碼開發
網貸系統,主要看輪侍重的是其系統的安全性,功能性,增值服務性,擴展性,穩定性等方臘絕吵面。上海巨應網宏判絡的網貸系統,具有上面的特性之外,更有獨特的創新,金融大格局的軟體創新,及資金對接民生銀行體系託管系統,符合政策需要。有需要你可以去了解下。
『叄』 p2p下載器源碼
p2p借貸平台出現後,有效滿足了大量民間融資擔保借貸企業的需求。同時,隨著p2p借貸程序開發技術的發展,獲取一套安全可靠的p2p借貸程序源代碼將不再困難。尤其是當前系統開發者的開發服務和技術不斷細化和完善,能夠為客戶提供更加便捷、靈活、成熟、更加符合客戶需求的產品。同時,隨著p2p借貸程序源代碼的泄露,p2p借貸程序源代碼可以通過網路下載。但是這種情況最容易導致程序源代碼的穩定性和安全性不高,從而導致一些列的問題。
img src=' https://p9 . toutiaoimg.com/large/3eb 200046 a 26 c 69 C2 cf 6 '/
因此,要想抓住目前p2p借貸行業的發展機遇,正規機構只有依靠穩定安全的p2p借貸程序源代碼,同時具備快速開發部署自己的網貸系統的能力,才更有利於搶占網路金融市場。這個要求不僅僅局限於滿足平台的常用功能,更重要的是需要有一個可靠、專業的p2p借貸方案體系來保證後期的運營。
具體來說,有了下面提到的內容,你就可以判斷系統是否可靠了。首先要具備數據計算和統計准確的特點,准確計算借貸過程中產生的資金運作情況;同時,它可以生成統計數據分析等。其次,具有完善的貸款環節的特點,包括完整的用戶認證、貸款和放款流程等。保證用戶的方便。還有多模板選擇的特點,保證了系統界面簡潔明了,易於操作;前台界面簡潔,界面清檔態新美觀,干凈整潔,內容模塊劃分清晰,操作說明圖文並茂,直觀明了。甚至可以設置完整的積分評級和信用評級功能,從而建立完整的用戶積分管理體系,通過積分實現用戶信用評級管理。
上述功能的實現只能通過下載網上p2p借貸程序的源代碼,對低價或免費獲得的p2p借貸程序稍加修改,在網上進行,必然無法滿足平台或用戶對系統各種復雜功能的需求和要求。正因如此,切記不要為了短暫的利潤而忽視用戶和平台的安全。
本文來自http://www.diyou.cn/news/a2077.html,英皇官網的一位朋友
說到P2P貸款,對於絕大多數的理財者,應該並不陌生,甚至還有很多的理財者在這兩年為此「吃盡了苦頭」。因為近些年來,P2P可謂是「爆雷潮」的存在,隔三差五,甚至說是每天都存在著爆雷,理財者也是心驚膽戰。P2P網路貸款有著幾種方式的呈現:1、貸款需求資金者將資金額度以及年化利率掛在平台上等待出資人進行貸款;2、平台有著資金,然後尋找一些需求資金的貸款者。
這兩點,都是存在著「套路」。而P2P網路貸款的道路有哪些呢?如果避免上當受騙呢?
一、P2P網路貸款的套路:
1、模糊不清的日貸款利率、月貸款利率。
日貸款利率0.05%,算多嗎?從直觀上感覺,才0.05%的幅度,太低了。但是如果計算年利率呢?就算是不滾利的情況下,年化貸款利率就高達18.25%。而銀行貸款利率為多少呢?六個月以內為4.35%,六個月至一年為4.35%,一年至三年為4.75%,三年至五年為4.75%,五年以上為4.9%。
日貸款利率0.05%,年化貸款利率是銀行五年以上貸款利率的3.72倍!如果是計算滾利呢?那麼日貸款利率0.05%滾利計算,年化利率更高,達到20%的幅度。也就是說,一年貸款10萬,一年之後就需要還款12萬,而三年之後呢?需要償還17.3萬元!
並且,日貸款利率0.05%在P2P網路貸款行業中已經是中下水平的存在,更多的是日貸款利率0.08%、0.1%的行歲源存在,已經達到了高利貸的程度!
月利率的道路與日利率的套路是一樣的,都是從數字直觀感覺上很小,但是卻實際發生的年化貸款利率卻很大。
2、不清晰、不公正的協議。
很多在簽訂協議的時候,網簽或者郵寄的合同,說明的內容含糊不清。並且在貸款的過程中,往往是急促行的心態,讓貸款者緊張,然後發生貸款。協議根本就不是平等協議,而是不平等,很多情況與先後口頭約定的貸款協議嚴重不符合。並且實際發生的貸款利率會更高,比如說是日貸款利雀御率0.05%,但是卻實際要求償還0.1%的日貸款利率水平。
當然,還有就是還款違約的情況,也是不平等,與約定不符合。如果一旦進行了違約甚至需要翻倍的進行償還!
3、貸款發生以後,貸款金額與實際貸款金額嚴重不符合。
近期央視也是大量報道了P2P網路貸款的案例,其中很多案例中有說明,貸款者貸款的資金與實際到賬的資金嚴重不相符合。比如貸款資金為2萬元,但是實際到賬的只有1.2萬元,而其中說到的就是什麼金融服務費、什麼轉賬費之類的。如果貸款1年,除了需要正常還貸款利率下的利息,貸款的資金也是受到了極大的損失,一年下來甚至需要還100%的資金!
二、應當如何避免上當受騙?
1、拒絕P2P網路貸款。
最好的辦法就是:拒絕P2P網路貸款。現在市場中有很多的貸款方式、信用卡的方式,但更多的資金需求者並不了解。為什麼說直接的方法就是:拒絕P2P網路貸款呢?就是因為,網路上的貸款使人根本就看不清,存在的「幺蛾子」實在是太多、太多。雖然這種方法看起來很笨,但卻是最簡單有效、直接了當的。
當然了,從報道的P2P網路貸款案例來看,最主要的原因是什麼呢?其實與貸款者「虛榮」有關系,希望能夠買一些奢飾品,短暫生活過得好一些等。所以,直接了當的拒絕P2P網路貸款,也可以說是:拒絕虛榮。
2、仔細閱讀貸款協議以及算清楚日貸款利率、月貸款利率。
很多需求資金的貸款者對於細則、協議之類的根本就沒有資金的看,很單純。在加上沒有清楚的計算日貸款利率、月貸款利率到底是多少,對於還款的金額上沒有概念。所以容易「中招」。
3、經常了解法制報道。
其實市場中很多傳播的案例新聞,只有更好的了解這些案例的發生,才能夠對於自己有著更為深刻的認為,認為哪些是錯誤的,哪些是騙人的。這種方式是避免上當受騙最好的教育方式。只有了解了,才會有意識的規避。
作者不易,多多點贊,十分感謝!
『肆』 c-s和p2p模式混合是什麼
C/S和P2P模式混合指的是在網路應用程序中同時使用C/S模式和P2P模式。
C/S模式,即Client/Server模式,是指客戶端和伺服器端之間進行通信,客戶端向伺服器端發送請求,伺服器端笑悄裂響應並返回數據。
P2P模運察式即Peer-to-Peer模式,是指兩個或多個計算機之間直接進行通信,沒有中間伺服器。
在這種混合碰閉模式中,程序可以在C/S模式下與伺服器進行通信,同時也能在P2P模式下與其他客戶端進行通信,提高網路應用程序的靈活性和可靠性。
『伍』 IPFS(四) 源碼解讀之-p2p
package p2p
import (
"context"
"errors"
"time"
net "gx/ipfs//go-libp2p-net"
manet "gx/ipfs//go-multiaddr-net"
ma "gx/ipfs//go-multiaddr"
pro "gx/ipfs//go-libp2p-protocol"
pstore "gx/ipfs//go-libp2p-peerstore"
p2phost "gx/ipfs//go-libp2p-host"
peer "gx/ipfs//go-libp2p-peer"
)
//P2P結構保存當前正在運行的流/監聽器的信息
// P2P structure holds information on currently running streams/listeners
type P2P struct {
//監聽器
Listeners ListenerRegistry
//數據流
Streams StreamRegistry
//節點ID
identity peer.ID
//節點地址
peerHost p2phost.Host
//一個線程安全的對等節點存儲
peerstore pstore.Peerstore
}
//創建一個新的p2p結構
// NewP2P creates new P2P struct
//這個新的p2p結構不包含p2p結構中的監聽器和數據流
func NewP2P(identity peer.ID, peerHost p2phost.Host, peerstore pstore.Peerstore) *P2P {
return &P2P{
identity: identity,
peerHost: peerHost,
peerstore: peerstore,
}
}
//新建一個數據流 工具方法 構建一個有節點id,內容和協議的流
func (p2p P2P) newStreamTo(ctx2 context.Context, p peer.ID, protocol string) (net.Stream, error) {
//30s 後會自動timeout
ctx, cancel := context.WithTimeout(ctx2, time.Second 30) //TODO: configurable?
defer cancel()
err := p2p.peerHost.Connect(ctx, pstore.PeerInfo{ID: p})
if err != nil {
return nil, err
}
return p2p.peerHost.NewStream(ctx2, p, pro.ID(protocol))
}
//對話為遠程監聽器創建新的P2P流
//創建一個新的p2p流實現對對話的監聽
// Dial creates new P2P stream to a remote listener
//Multiaddr是一種跨協議、跨平台的表示格式的互聯網地址。它強調明確性和自我描述。
//對內接收
func (p2p P2P) Dial(ctx context.Context, addr ma.Multiaddr, peer peer.ID, proto string, bindAddr ma.Multiaddr) ( ListenerInfo, error) {
//獲取一些節點信息 network, host, nil
lnet, _, err := manet.DialArgs(bindAddr)
if err != nil {
return nil, err
}
//監聽信息
listenerInfo := ListenerInfo{
//節點身份
Identity: p2p.identity,
////應用程序協議標識符。
Protocol: proto,
}
//調用newStreamTo 通過ctx(內容) peer(節點id) proto(協議標識符) 參數獲取一個新的數據流
remote, err := p2p.newStreamTo(ctx, peer, proto)
if err != nil {
return nil, err
}
//network協議標識
switch lnet {
//network為"tcp", "tcp4", "tcp6"
case "tcp", "tcp4", "tcp6":
//從監聽器獲取新的信息 nla.Listener, nil
listener, err := manet.Listen(bindAddr)
if err != nil {
if err2 := remote.Reset(); err2 != nil {
return nil, err2
}
return nil, err
}
//將獲取的新信息保存到listenerInfo
listenerInfo.Address = listener.Multiaddr()
listenerInfo.Closer = listener
listenerInfo.Running = true
//開啟接受
go p2p.doAccept(&listenerInfo, remote, listener)
default:
return nil, errors.New("unsupported protocol: " + lnet)
}
return &listenerInfo, nil
}
//
func (p2p *P2P) doAccept(listenerInfo *ListenerInfo, remote net.Stream, listener manet.Listener) {
//關閉偵聽器並刪除流處理程序
defer listener.Close()
//Returns a Multiaddr friendly Conn
//一個有好的 Multiaddr 連接
local, err := listener.Accept()
if err != nil {
return
}
stream := StreamInfo{
//連接協議
Protocol: listenerInfo.Protocol,
//定位節點
LocalPeer: listenerInfo.Identity,
//定位節點地址
LocalAddr: listenerInfo.Address,
//遠程節點
RemotePeer: remote.Conn().RemotePeer(),
//遠程節點地址
RemoteAddr: remote.Conn().RemoteMultiaddr(),
//定位
Local: local,
//遠程
Remote: remote,
//注冊碼
Registry: &p2p.Streams,
}
//注冊連接信息
p2p.Streams.Register(&stream)
//開啟節點廣播
stream.startStreaming()
}
//偵聽器將流處理程序包裝到偵聽器中
// Listener wraps stream handler into a listener
type Listener interface {
Accept() (net.Stream, error)
Close() error
}
//P2PListener保存關於偵聽器的信息
// P2PListener holds information on a listener
type P2PListener struct {
peerHost p2phost.Host
conCh chan net.Stream
proto pro.ID
ctx context.Context
cancel func()
}
//等待偵聽器的連接
// Accept waits for a connection from the listener
func (il *P2PListener) Accept() (net.Stream, error) {
select {
case c := <-il.conCh:
return c, nil
case <-il.ctx.Done():
return nil, il.ctx.Err()
}
}
//關閉偵聽器並刪除流處理程序
// Close closes the listener and removes stream handler
func (il *P2PListener) Close() error {
il.cancel()
il.peerHost.RemoveStreamHandler(il.proto)
return nil
}
// Listen創建新的P2PListener
// Listen creates new P2PListener
func (p2p P2P) registerStreamHandler(ctx2 context.Context, protocol string) ( P2PListener, error) {
ctx, cancel := context.WithCancel(ctx2)
list := &P2PListener{
peerHost: p2p.peerHost,
proto: pro.ID(protocol),
conCh: make(chan net.Stream),
ctx: ctx,
cancel: cancel,
}
p2p.peerHost.SetStreamHandler(list.proto, func(s net.Stream) {
select {
case list.conCh <- s:
case <-ctx.Done():
s.Reset()
}
})
return list, nil
}
// NewListener創建新的p2p偵聽器
// NewListener creates new p2p listener
//對外廣播
func (p2p P2P) NewListener(ctx context.Context, proto string, addr ma.Multiaddr) ( ListenerInfo, error) {
//調用registerStreamHandler 構造一個新的listener
listener, err := p2p.registerStreamHandler(ctx, proto)
if err != nil {
return nil, err
}
//構造新的listenerInfo
listenerInfo := ListenerInfo{
Identity: p2p.identity,
Protocol: proto,
Address: addr,
Closer: listener,
Running: true,
Registry: &p2p.Listeners,
}
go p2p.acceptStreams(&listenerInfo, listener)
//注冊連接信息
p2p.Listeners.Register(&listenerInfo)
return &listenerInfo, nil
}
//接受流
func (p2p *P2P) acceptStreams(listenerInfo *ListenerInfo, listener Listener) {
for listenerInfo.Running {
//一個有好的 遠程 連接
remote, err := listener.Accept()
if err != nil {
listener.Close()
break
}
}
//取消注冊表中的p2p偵聽器
p2p.Listeners.Deregister(listenerInfo.Protocol)
}
// CheckProtoExists檢查是否注冊了協議處理程序
// mux處理程序
// CheckProtoExists checks whether a protocol handler is registered to
// mux handler
func (p2p *P2P) CheckProtoExists(proto string) bool {
protos := p2p.peerHost.Mux().Protocols()
for _, p := range protos {
if p != proto {
continue
}
return true
}
return false
}
『陸』 什麼是p2p網貸平台源碼網貸源碼有哪些
網貸,又稱為p2p網路借貸。P2P是英文peer to peer的縮寫,意即「個人對個人」。網路信貸起源於英國,隨後發展到美國、德國和其他國家,其典型的模式為:網路信貸公司提供平台,由借貸雙方自由競價,撮合成交。資金借出人獲取利息收益,並承擔風險;資金借入人到期償還本金,網路信貸公司收取中介服務費。p2p網貸平台源碼基本上是不可能給公開下載的,網上有部分p2p網貸源碼泄露了,那源碼也是被修改過很多次的了,會隱藏也多bug的。下載安裝後期維護成本很高,還不利於二次開發!你可以去看看迪蒙的網貸系統,中國網貸系統第一品牌,安全可靠,功能也很齊全,完全能滿足企業定製開發需求。
『柒』 常見的p2p網貸源碼有幾種
常見的p2p網貸源碼基桐螞本上有四種吧,免費或低價購買的p2p網貸源碼、自行開發的p2p網貸源碼、購買之後又自己二次開發的p2p源碼,還有一種就是定製的
個人認為購買的和定製的比較好點,迪蒙網貸系統有它們的對比大輪埋滾螞,你可以去了解下
記得採納呀~~~^_^
『捌』 以太坊源碼分析--p2p節點發現
節點發現功能主要涉及 Server Table udp 這幾個數據結構,它們有獨自的事件響應循環,節點發現功能便是它們互相協作完成的。其中,每個以太坊客戶端啟動後都會在本地運行一個 Server ,並將網路拓撲中相鄰的節點視為 Node ,而 Table 是 Node 的容器, udp 則是負責維持底層的連接。下面重點描述它們中重要的欄位和事件循環處理的關鍵部分。
PrivateKey - 本節點的私鑰,用於與其他節點建立時的握手協商
Protocols - 支持的所有上層協議
StaticNodes - 預設的靜態 Peer ,節點啟動時會首先去向它們發起連接,建立鄰居關系
newTransport - 下層傳輸層實現,定義握手過程中的數據加密解密方式,默認的傳輸層實現是用 newRLPX() 創建的 rlpx ,這不是本文的重點
ntab - 典型實現是 Table ,所有 peer 以 Node 的形式存放在 Table
ourHandshake - 與其他節點建立連接時的握手信息,包含本地節點的版本號以及支持的上層協議
addpeer - 連接握手完成後,連接過程通過這個通道通知 Server
Server 的監聽循環,啟動底層監聽socket,當收到連接請求時,Accept後調用 setupConn() 開始連接建立過程
Server的主要事件處理和功能實現循環
Node 唯一表示網路上的一個節點
IP - IP地址
UDP/TCP - 連接使用的UDP/TCP埠號
ID - 以太坊網路中唯一標識一個節點,本質上是一個橢圓曲線公鑰(PublicKey),與 Server 的 PrivateKey 對應。一個節點的IP地址不一定是固定的,但ID是唯一的。
sha - 用於節點間的距離計算
Table 主要用來管理與本節點與其他節點的連接的建立更新刪除
bucket - 所有 peer 按與本節點的距離遠近放在不同的桶(bucket)中,詳見之後的 節點維護
refreshReq - 更新 Table 請求通道
Table 的主要事件循環,主要負責控制 refresh 和 revalidate 過程。
refresh.C - 定時(30s)啟動Peer刷新過程的定時器
refreshReq - 接收其他線程投遞到 Table 的 刷新Peer連接 的通知,當收到該通知時啟動更新,詳見之後的 更新鄰居關系
revalidate.C - 定時重新檢查以連接節點的有效性的定時器,詳見之後的 探活檢測
udp 負責節點間通信的底層消息控制,是 Table 運行的 Kademlia 協議的底層組件
conn - 底層監聽埠的連接
addpending - udp 用來接收 pending 的channel。使用場景為:當我們向其他節點發送數據包後(packet)後可能會期待收到它的回復,pending用來記錄一次這種還沒有到來的回復。舉個例子,當我們發送ping包時,總是期待對方回復pong包。這時就可以將構造一個pending結構,其中包含期待接收的pong包的信息以及對應的callback函數,將這個pengding投遞到udp的這個channel。 udp 在收到匹配的pong後,執行預設的callback。
gotreply - udp 用來接收其他節點回復的通道,配合上面的addpending,收到回復後,遍歷已有的pending鏈表,看是否有匹配的pending。
Table - 和 Server 中的ntab是同一個 Table
udp 的處理循環,負責控制消息的向上遞交和收發控制
udp 的底層接受數據包循環,負責接收其他節點的 packet
以太坊使用 Kademlia 分布式路由存儲協議來進行網路拓撲維護,了解該協議建議先閱讀 易懂分布式 。更權威的資料可以查看 wiki 。總的來說該協議:
源碼中由 Table 結構保存所有 bucket , bucket 結構如下
節點可以在 entries 和 replacements 互相轉化,一個 entries 節點如果 Validate 失敗,那麼它會被原本將一個原本在 replacements 數組的節點替換。
有效性檢測就是利用 ping 消息進行探活操作。 Table.loop() 啟動了一個定時器(0~10s),定期隨機選擇一個bucket,向其 entries 中末尾的節點發送 ping 消息,如果對方回應了 pong ,則探活成功。
Table.loop() 會定期(定時器超時)或不定期(收到refreshReq)地進行更新鄰居關系(發現新鄰居),兩者都調用 doRefresh() 方法,該方法對在網路上查找離自身和三個隨機節點最近的若干個節點。
Table 的 lookup() 方法用來實現節點查找目標節點,它的實現就是 Kademlia 協議,通過節點間的接力,一步一步接近目標。
當一個節點啟動後,它會首先向配置的靜態節點發起連接,發起連接的過程稱為 Dial ,源碼中通過創建 dialTask 跟蹤這個過程
dialTask表示一次向其他節點主動發起連接的任務
在 Server 啟動時,會調用 newDialState() 根據預配置的 StaticNodes 初始化一批 dialTask , 並在 Server.run() 方法中,啟動這些這些任務。
Dial 過程需要知道目標節點( dest )的IP地址,如果不知道的話,就要先使用 recolve() 解析出目標的IP地址,怎麼解析?就是先要用藉助 Kademlia 協議在網路中查找目標節點。
當得到目標節點的IP後,下一步便是建立連接,這是通過 dialTask.dial() 建立連接
連接建立的握手過程分為兩個階段,在在 SetupConn() 中實現
第一階段為 ECDH密鑰建立 :
第二階段為協議握手,互相交換支持的上層協議
如果兩次握手都通過,dialTask將向 Server 的 addpeer 通道發送 peer 的信息
『玖』 什麼是混合P2P技術
現狀
1. 代表性研發產品和技術
(1) ICQ類的即時通信軟體。兩個或多個用戶互相使用文字、語音或文件進行交流,快速、直接,易於同非PC網路設備(如PDA、手機)通信,而且它不依賴設備即可辨別用戶。由於利用P2P技術可以弱化甚至擺脫對中央伺服器的依賴,這樣的通信更接近非互聯網通信模式。
(2) Farsite(Microsoft),Ocean Store類數據存儲軟體。用於在網路上將存儲對象分散化存放,而不像現在放於專用伺服器。這樣減輕了伺服器負擔,增加了數據的可靠性和傳輸速度。
(3) Napster類軟體。實現數據共享,使用者可以直接從任意一台安裝同類軟體的PC上下載及上載文件,而不是從伺服器。用戶可以檢索、復制共享的文件。軟體自動發現最新的文件列表,發布者無需擔心發布的問題。
(4) Infrasearch、Pointera類數據搜索及查詢軟體。用來在P2P網中完成信息檢索。一旦形成P2P專用網,其上的數據搜索與現在互聯網中數據存在中央伺服器的情況有所不同,必須要考慮動態地將當前P2P網路中各個Peer的內容進行收集,並且要有效地向用戶傳遞。 P2P網用戶中相當數量在聯網方式上不同,專線、撥號、寬頻、窄帶都會碰到; 聯網的時間可以一個是24小時在線,而另一個完全可能僅聯機幾十分鍾; 使用的操作系統也不一定相同。
(5) Netbatch(Intel)類協同計算軟體。可聯接近1萬台PC,利用它們的空閑時間進行協同計算,完成超計算量的工作(如空間探測,分子生物學計算,晶元設計)。
(6) Groove 類數據或行動協同軟體。它是基於P2P連接的軟體工具,可以建立一個安全的企業級協同工作平台(P2P網),提供供求信息鏈上的互動信息溝通,如貨品目錄、庫存及發貨清單,幫助使用者進行經銷渠道維護、客戶服務和支持。
(7) 游戲軟體。事實上許多網路游戲均是P2P方式的,尤其是那些雙人及多人對弈游戲。
2. 組織與標准
目前,正式的P2P組織尚未成立,2000年8月間成立的P2P工作組,成員包括Intel、IBM、HP等大企業,目標集中在P2P技術的標准、安全性及可靠性等等。但由於P2P技術本身發展迅速,P2P技術涵蓋的范圍尚未確定,目前尚未有統一的規范。
發展
1. 關鍵技術
P2P是一種基於互聯網環境的新的應用型技術,主要為軟體技術。
(1) 對於互聯網上眾多計算機,P2P應用比其他應用要更多考慮那些低端PC的互聯,它們不具備伺服器那樣強的聯網能力,同時對於以往的P2P應用技術,現在的硬體環境已經更為復雜,這樣在通信基礎方面,P2P必須提供在現有硬體邏輯和底層通信協議上的端到端定位(定址)和握手技術,建立穩定的連接。涉及的技術有IP地址解析、NAT路由及防火牆。
(2) 在應用層面上,如果兩個Peer分別代表兩家不同的公司,而且它們已經通過互聯亂吵網建立連接,那麼一方的信息就必須為另一方所識別,所以當前互聯網上關於數據描述和交換的協議,如XML、SOAP、UDDI等都是一個完善的P2P軟體所要考慮的。
(3) 有通信就要有安全保障,加密技術是必須要考慮的。
(4) 其他需考慮的有如何設置中心伺服器,如何控制網路規模等。
2. P2P技術與現有互聯網技術比較
目前互聯網主要技術模式是S/C方式,此方式要在互聯網上設置擁有強大處理能力和大帶寬的高性能計算機,配合高檔的伺服器軟體,再將大量的數據集中存放在上面,並且要安裝多樣化的服務軟體,在集中處理數據的同時可以對互聯網上其他PC進行服務,提供或接收數據,提供處理能力及其他應用。對於一台與伺服器聯機並接受服務的PC機來說,這台PC機就是客戶機,其性能可以相對弱小。而P2P技術的特徵之一就是弱化了伺服器的作用,甚至取消伺服器,任意兩台PC互為伺服器,同時又是客戶機,即對等。右面是P2P與S/C方式的一些比較:
S/C方式造成互聯網路上的集中,無論信息資源還是成本資源均向同一方向集中,這樣的模式符合一卜蘆對多、強對弱的社會關系形式,如政府對個人、對企業,大企業對小企業,學校對學生,企業對職工等等關系。所以S/C方式是符合市場需求的。P2P方式將導致信型陪帶息數量、成本資源都向互聯網各點均勻分布,也就是所謂「邊緣化「的趨勢。此模式符合「一對一」的特點,以及彼此相當的社會關系形式,如個人對個人,規模相當的企業之間,等等,這也是符合市場需求的(如ICQ)。所以這兩種方式會共存,有關P2P即將替代S/C模式的說法是不成立的。P2P有其獨特的市場空間,是現有互聯網應用的補充,這一點應該是毫無疑問的。
3. P2P技術特性
(1) 既是S又是C,如何表現取決於用戶的要求,網路應用由使用者自由驅動。
(2) 信息在網路設備間直接流動,高速及時,降低中轉服務成本。
(3) 構成網路設備互動的基礎和應用。
(4) 在使網路信息分散化的同時,相同特性的P2P設備可以構成存在於互聯網這張大網中的子網,使信息按新方式又一次集中。
企業應用
應用P2P技術的互聯網產品正在迅速開辟出一塊新的互聯網應用市場,例如ICQ類的即時信息工具不僅創立了一個巨大市場,而且正在多方向地向外擴展,比如在移動通信市場,ICQ產品的多信息格式(文字、語言的支持)和即時性,可以為常規通信增加信息內容(文字、圖片)和通信對象(網上ICQ用戶)。
另一方面,ICQ的使用也會使部分用戶放棄Email,侵蝕Email市場。Napster類的文件共享型P2P產品開拓出網上文件傳播的新途徑,用戶不僅可以進行搜索和下載這樣的操作,同時也可以方便地將自己的文件提供給其他用戶,做到了基本的雙向交流。
由於P2P技術方案不同於S/C方式的特性,可以在許多方面彌補S/C方式的不足,P2P產品將建立互聯網上的一種新的應用模式,這時用戶不僅在PC裝有瀏覽器,而且還有數種P2P軟體來實現新的互聯網應用。
比如一個計算機配件經銷商可以通過Email或瀏覽器(如果對方也通過P2P技術發布信息,則也可以用P2P軟體)得到其上游廠家最新推出的產品信息及價格,研究了這些信息,並落實訂貨事宜之後,啟動P2P軟體,將新的產品及售價發布到重要客戶的P2P聯絡站上,其中一個未上網的用戶通過手機也知道了這消息。不久,經銷商將收到客戶的在線詢問,而經銷商在線回答問題的同時又將一個驅動程序傳給了這個客戶。這一切的操作均是通過互聯網,而對象是廠家人員或客戶,而非其網站或郵箱,這樣就真正利用互聯網做到了面對面的交流,更加接近現實社會的人際交流習慣。