不同局域网内经Internet的P2P通信技术总结不同局域网内经Internet的P2P通信技术总结
以下将要用到一个叫做NAT的重要名词,先做点解释。 如果两台机器A和B,分别处于两个局域网内,它们要通过Internet通信,这就是P2P(点到点)连接通信。 实际上,围绕P2P通信,尤其是两个不同局域网间的P2P,已经有许多的P2P协议和开发包涌现。例如,Sun公司以Java写的开发包Jxta,微软在Windows XP平台上有P2P的β版开发包,Intel公布.Net平台上的P2P应用开发工具包,放到微软有关.Net平台的新闻站点www.gotdotnet.com上供用户免费下载。 但是利用它们来开发程序,非常繁琐,我们需要用简单的实现完成功能就可以了。 下面其实有两个实例,讲述连通的过程,包括简单伪代码。 原理讲述: 何以如此麻烦? A在发UDP包给Server上线时,A的网关(A.Gate)就分配一个Nat端口(A.NatPort)给A,用于A和Server间的本次UDP会话,但A的网关明确标记,这个Nat端口,仅能用于A和Server之间的UDP通信,不能挪着它用。并且,这个临时分配的端口,只能保持一个很短的时效,也许是一两秒吧。这个时间内,如果A与Server没有任何通信,那么这个映射端口就宣告无效。下次,A和Server又要通信时,A的网关又会重新分配一个新的端口。这段表明三点: |