随着互联网技术迅猛发展和各种终端设备的爆发式呈现,网络已经成为个人日常生活及工作中不可或缺的一部分。传统的网络地址现在已不能满足各种大量网络业务的需求,虽然IPv6地址的加入有效减轻了该种状况,但是IPv4到IPv6过渡过程中市场上还是会存在大量的NAT设备。NAT技术是数据包在穿越防火墙或路由器等设备时一种地址转换改写的技术。NAT穿透就是通过相应的技术手段对不同类型NAT设备后的内部网络与NAT外部的网络建立一条通信的链路。现在大部分网络设备和终端如路由器等都安装或者嵌入了NAT设备。然而NAT设备的存在阻碍了P2P网络资源传输和分享。如何在P2P的环境下进行NAT穿透已经成为人们研究的一个重要课题。
本文旨在设计与实现一种以UDP穿透为主,以中转方式为辅的sTURN穿透方案。该方案包括了四种模式:P2P模式、LAN模式、中转模式、待拓展模式。该技术是建立在对经典的STUN、TURN和UDP Hole punching技术改进的基础上,使用了两类服务器:处于NAT外部的公网服务器和处于内部网络的私网服务器进行协助穿透和传输。本方案提高了穿透效率,减小了网络带宽的开销和网络传输时延,起到了负载均衡的作用,同时避免了类似传统的中转方式中第三方公网服务器由于网络带宽和负载等原因造成的技术瓶颈。穿透成功后,再用相同的IP/Port进行TCP的数据连接和传输。这样系统既可以保证在NAT穿透方面较高成功率又可以保证在数据传输方面的可靠性,较好的利用了UDP和TCP在穿透和传输方面各自的优越性。本方案具有较好的可移植性,保证了数据的传输质量和用户体验。
本文首先对P2P网络的架构和NAT的发展做了简要的概述,分析并比较了不同网络模型架构及不同经典NAT穿透技术的各自的优缺点。在此基础上,本文选择了基于P2P混合网络拓扑结构下的NAT网络穿透和数据传输技术方案。之后给出了该系统的总体的设计方案。整个系统模块包括:初始化、用户管理、NAT类型检测、NAT穿透,数据传输及数据库等。分别给出各个模块的详细设计、流程图及部分代码。并在windows 7系统下利用C++进行网络编程实现该设计。之后对这套系统的性能进行了相关测试和结果分析。最后总结本文所做的主要工作内容,同时展望了该方案在网络摄像机上的后续发展与应用。