做了一个通用P2P系统

当然了,是给公司做的。架构是我设计的,服务器也是我实现的。

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神马的),穿透率是比较低的。其他家用路由器,穿透率还是很高的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章