基于Qt的NAT检测和NAT穿透
摘要
网络上的NAT设备主要解决IPV4地址的缺乏,但同时也给端到端的连接带来不便。
目前,对于UDPNAT穿透已经有一些通用的,有 效的解决方法,基于这些方法实现简单NAT检测和穿透
关键词 NAT穿透,P2P,对等网络,Qt
中图法分类号TP311
NAT Detection and NAT Penetration Based on Qt
Yuhang Tang
Abstract NAT devices on the network mainly solve the shortage of IPV4 address, but also bring inconvenience to end-to-end connection. At present, there are some general and effective solutions for UDPNAT penetration. Based on these methods, simple NAT detection and penetration can be realized.
Keywords NAT Penetration, P2P, Peer-to-Peer Network, Qt
图3.1-1
图3.1-2
通过Qt的QUdpSocket进行网络编程,在.pro文件中添加QT+=network[5]
实际设备:在复杂的校园网中,分别在移动,联通,电信测试
first step:check the client’s NAT if can do P2P and if is located before the NAT?
客户端机(校园网)内网IP:192.168.1.100,PORT:8001向服务器(腾讯云)IP: 132.232.214.178,PORT:8000发送数据包
图3.2.1-1
3.2.2 第二步:检测客户端是否为完全锥形(Full Cone NAT)?
seccond step:check the client’s NAT if is Full Cone NAT?
点击客户端的step2,进行第二步检测
图3.2.2-1
third step:check the client’s NAT if is Symmetric NAT?
点击客户端step3,进行第三步
图3.2.3-1
图3.2.3-2
如图3.2.3-1客服端向服务器发送数据包,服务器接受到数据包,比较IP和PORT发现端口没有任何规律,且PORT不相同,说明当前客户端为Symmetric NAT,在这种情况下无法采用P2P进行直接通信,如果相同,那么可以进行第四步检测
fourth step:check the client’s NAT if is Restricted Cone NAT or if is Port Restricted Cone NAT?
点击客户端step4,进行第四步检测
图3.2.4-1
图3.2.4-2
可以看出当前无法接受数据包,因为该设备在第三步已经判断无法进行下一步,所以这一步没有任何反应,在其他类型的机器上,如电信可以成功打洞,其他类型无法成功打洞,所以在复杂的校园网环境下,P2P无法直接穿透广域网,必须借助其他方式,例如http遂道穿透,软交换是下一代网络中的核心技术,SIP 协议作为下一代网络最重要的协议之一,已经被广泛应用于 VoIP 系统
中。SIP 协议无法支持 SIP 信令和媒体流的 NAT 穿越,从而限制了其在广域网上的应用和发展。虽然目前解决 NAT 穿越的方案已经很多,但都存在着一定的局限性。文中详细解释了 NAT 对 SIP 通信的影响,介绍了 UDP 打洞技术的基本原理,
介绍了 UDP 打洞技术穿越锥形 NAT 的流程,以及 Http 代理网关方式穿越各种 NAT 的流程。文中通过比较各种 NAT 穿越方案的优缺点,提出一种综合 UDP 打洞与 Http 代理网关的 NAT 穿越方案。经过论证与实验,证明了该方案的可行性。[7]
UDP Hole Punching技术是目前在实际应用中利用STUN技术穿越NAT设备
的一种主要的技术[8-9]。
图4.1-1
图4.1-2
图4.1-3
如图4.1-1和4.1-2,4.1-3分别为服务器端和客户端A,B,服务器开启端口监听,客户端点击登陆于服务器握手,
图4.1.2-1
图4.1.2-2
如图所示,P2P在通信方面也有很大的作用,这里我采用的是sTRUN,即客户端之间打不通,就才用服务器代发,保证消息100%发送成功
NAT检测对于很多应用都有用处,比如即时通信,文件共享等等,通过这次实验对NAT穿透有了更深的印象,如何通过NAT穿透写了一个即时通信,分别在同一台设备,和不同设备,以及不同运营商等等,测试数据100%到达,当在NAT穿透方面做的不足,未来将采用http/sock5代理穿透的方式来减轻无法通过NAT穿透而给中转服务器带来的压力
参考文献
[1]李航,马林华.IP音视频穿越NAT技术的研究[J].通信技术, 2008,41(3):65-67, 87.DOI:10.3969/j.issn.1002-0802.2008.03.024.
[2]李正梅.NAT技术在计算机实验室中的运用[J].硅谷,2011,(9):191-191,145.DOI:10.3969/j.issn.1671-7597.2011.09.125.
[3]孔令旺.NAT技术及应用浅析[J].科技资讯,2011,(32):2626,56.DOI:10.3969/j.issn.1672-3791.2011.32.022.
[4]彭湘凯.NAT技术及其在网络安全中的应用[J].四川师范大学学报(自然科学版),2001,24(5):
542-545.DOI:10.3969/j.issn.1001-8395.2001.05.033.
[5][韩]金大臣,张红艳 TP311[M] 人民邮电出版社 2015-09-01 1-507
[6]马煜.NAT技术在校园网内部的分析与应用[J].科技创新与生产力,2017(01):52-53+58.
[7]周敏,余慕春,黄维丰.综合UDP打洞与Http代理的SIP穿越NAT方案[J].计算机技术与发展,2014,24(08):147-151+156.
[8]张建伟,蔡增玉,郭云飞等.基于UDP交换路由的NAT互联技术研究[J].计算机科学,2008,35(
9):119-122.DOI:10.3969/j.issn.1002-137X.2008.09.031.
[9]杨洋,冯小坤,杨光等.浅谈P2P的NAT穿越[J].科技信息,2011,(29):82,150.DOI:10.3969/j.issn.1001-9960.2011.29.057.
[10]范勇.对等网络中NAT穿越方案的研究与实现[D].南开大学,2009.DOI:10.7666/d.y1592106
[11]白伟华.NAT穿越在应用中的问题及解决方案[J].电脑开发与应用,2005,18(9):22-24.DOI:1
0.3969/j.issn.1003-5850.2005.09.017.
因篇幅问题不能全部显示,请点此查看更多更全内容