當然了,是給公司做的。架構是我設計的,服務器也是我實現的。
P2P的原理就不講了,就講講實現它的關鍵點:
1、公網肯定要有個服務器做節點雙方的交互。爲了上大併發,節點和服務器之間我們用UDP協議。
2、如何做UDP穿透,其實現在RFC都有標準的流程。之前的博文,ICE就是這個東西。
3、爲了效果,肯定要做端口猜測。不過對稱NAT和對稱NAT之間,無論怎麼樣,穿透概率都很低。
4、P2P的關鍵,還是在於做UDP的可靠傳輸。我們調研了UDT、RUDP和谷歌的PTCP(libjingle項目)這三種,並做了仔細的測試與性能分析,最終選用PTCP。當然,爲了避免license限制,我們稍微對PTCP的協議做了變形(嘿嘿,這招也是跟谷歌學的,想想davik和java虛擬機)。
考慮了以上幾點,這個P2P系統基本也就出來了。不要問我UDP的穿透率,現在互聯網發展實在太快,網絡環境錯綜複雜,很難給出估計值。主要是運營商移動網絡(國內的3G神馬的),穿透率是比較低的。其他家用路由器,穿透率還是很高的。