论文部分内容阅读
VNC(Virtual Network Computing,虚拟网络计算)是AT&T剑桥实验室所研发的屏幕分享与远端操作工具,它支持多种操作系统,可以用于实现远程办公,远程技术支持等多种应用。随着互联网的迅速发展,互联网用户的迅速增多而IPv6尚未普及,IP地址匮乏的问题日益严峻,NAT(Network Address Translate,网络地址转换)成为了解决这一问题的普遍手段。但是NAT也带来另外一个问题,外部网络终端无法直接访问NAT内的终端,这使得位于NAT后的VNC客户端与服务端之间很难进行正常通信和工作。如何让VNC穿越NAT正常工作成为了VNC应用中的一个重要问题。本文针对NAT的原理进行了深入的研究。通过对现有的NAT穿越技术的分析和对比,提出了一种可以综合解决VNC跨越NAT的方案。由于VNC通过UDP协议来进行一些控制信息的传输,而一些实际数据的,如屏幕状态则需要通过TCP协议来传输。所以我们的VNC穿越NAT方案包括了UDP穿越和TCP穿越两个部分。其中UDP穿越部分使用了目前比较成熟,应用非常广泛的STUN协议,而TCP穿越部分由于涉及到三次握手和状态装换要比UDP复杂的多,目前业内还没有一个被广泛认可的方案,通过对几种TCP穿越技术的分析比较我们最终选择了NUSS小组的STUNT协议为基础来进行开发。但是基于STUNT实现的TCP穿越方法依然着不少问题,本文针对此这些问题进行了更深入的研究,对STUNT模型进行了改进,达到更了好的NAT穿越的成功率。最后我们加入了端口预测算法,来解决STUN和STUNT协议中都没有涉及到的对称性NAT穿越的问题。本文的最后提出了一套完整的VNC穿越NAT解决方案,详细描述了整个方案的架构及工作流程。并在北航实验室以及石景山区市政府等地部署了实验环境对其进行了实验测试,以实验数据证明了方案的可行性。