基于UDP协议的NAT穿透技术研究与仿真

来源 :计算机时代 | 被引量 : 0次 | 上传用户:jinnsey
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要: NAT穿透技术能够有效解决由于IP地址短缺和路由表增大造成的用户接入困难的问题,可缓解因网络地址的严重消耗造成的IPv4资源稀缺的情况。针对这种情况进行了基于UDP协议的NAT穿透技术研究与仿真。首先分析NAT穿透的类型及各自的原理,提出对于NAT穿透相对有效的UDP打洞方案,然后通过穿透原理得出算法结构流程,最后在VC++环境下进行仿真实验。实验结果表明,该算法结构能够有效地实现NAT穿透目的,而且具有可拓展性,可在较多情况下适用。
  关键词: 网络地址; NAT穿透; NAT类型; UDP打洞
  中图分类号:TP393.02 文献标志码:A 文章编号:1006-88228(2014)06-12-03
  0 引言
  NAT又名网络地址转换,在如今IP地址越来越稀缺的情况下产生,主要为了解决地址重用的问题。众所周知,在TCP/IP协议中,有三个IP地址区域作为私有地址而被专门保留。
  1 NAT分类
  1.1 基本的NAT
  由于内网的IP地址不允许在网络上出现,内部数据包的 IP地址需转换后才能对外发送,所以在同一时间内,全子网内只有小部分IP地址能够对应到外部全球惟一的IP地址[2]。基本的NAT设备将会改变数据包中的原IP地址,但是不会改变数据包中相应的端口数据。
  1.2 NAPT
  NAPT全名为网络地址/端口转换器,由其名称可以看出凡是经过此设备的IP数据包,不仅数据包内的IP地址会被修改,而且数据包内的TCP/UDP端口数据也会被修改。它可允许内网多个计算机对应一个全球惟一的IP地址[3]。由于端口修改的方法不同,因而又可分为圆锥型和对称型两种。
  ⑴ Cone NAT(圆锥型)
  在一个客户机(拥有私有地址与端口号)与另一个客户机(拥有公有地址与端口号)建立端口映射之后,只要是当前仍然存在会话在利用此端口映射,那么它就可以用这个端口映射继续处理后续的会话。然而,当位于NAT后的主机与外网的主机建立连接之后,NAT接受外部连接的自由程度是不同的,由此可以把此类型进一步分类。但是要注意这个分类一般只适用于UDP传输,因为对于TCP连接,只有在有专门的配置情况下才会建立。Cone NAT分类之后为下面三种情况。
  ① Full Cone NAT(完全圆锥型)
  2 NAT穿透原理分析
  若想用软件实现NAT技术,一种方法是通过扩展应用层协议,使其具有NAT路由的功能;另一种方法则是把应用层协议中的私有地址直接修改为公网地址。但是,由于NAT类型的不同,通过修改应用层协议地址[4]的方法并不能通用,尤其当是Symmetric NAT类型的时候,其预先获得的公网地址与实际转换后的公网地址有可能不相同[5]。
  NAT穿透需要分析下面三种情况。首先,双方都是Symmetric NAPT。此情况由于端口号分配的不同,不支持穿透。其次,双方都是Cone NAPT。这种情况是我们所期望的,可以进行穿透。最后,两方分别是Symmetric NAPT和Cone NAPT。这种情况稍复杂些,假设A是Symmetric NAT,B是Cone NAT,由文献分析[6]可知,不管是A先连接B还是B先连接A,在一方的NAT接收到数据包后,由于查询自己的映射表无法找到相对应映射项而会将包丢弃,从而导致连接失败。
  因此,根据上述分析可以得出,只有当连接两端的设备都为Cone NAT的情况下,才能实现基于UDP协议的内网穿透。
  3 UDP打洞技术
  当前发展较快的穿透技术是一种借助于公网服务器来完成NAT穿透的技术,称为Hole Punching技术[7]。此技术属于一种中继方案,主要用来解决通信两端都在NAT设备之后的情况,如今这类情况比较常见。与其他解决方案相比,此技术比较简单通用,穿透原理如图5所示。
  从图5可以看出,客户机A和客户机B(下面简称A和B)分别向服务器S注册,因此服务器知道了它们的私网地址和转换后的公网地址。在A希望与B建立连接时,A会先向服务器S发送连接请求,服务器S会把B的公网、私网的地址都返回给A,同时还会把A的连接请求和A的公网与私网地址发给 B。至此A和B都能知道彼此的公、私网地址。可知A、B与服务器之间的通讯仅仅是为了打开通往服务器的通道,并通过不断发送消息保持通道的存在。
  接下来,当A得知B的公网、私网地址后,A会同时向这两个地址发起连接。如果A和B同在一个NAT之后,B会先在私网地址上收到A的连接请求,这样A与B之间的通讯就不会有NAT的介入;而如果A和B处在不同NAT之后,那么A发往B私网地址的连接将会无法路由或者被错误路由到不相关的终端,从而被丢弃,而A发往B公网地址的连接会顺利到达B所在的NAT。同样,在B得知A的公网、私网地址之后也会发起连接,情况与A相同。
  此时,A和B前的NAT设备已经记住了对方的IP地址和端口信息,对彼此处于敞开状态,即被在内部打洞,因此可建立新的对话,建立连接。由于发送的连接数据包都为UDP包,因此被称为UDP打洞技术。而且,建立连接之后,双方的NAT还可以作为中介将对方“介绍”给其他设备[8],从而降低S的工作量。
  综上所述,Hole Punching技术是通过公网Server保存的地址从而使客户机之间能够直接通信。但是,Server只帮助建立连接,而在建立连接之后就不会再介入了。
  4 编程测试
  既然上述基于UDP协议的穿透主要是靠公网服务器作为连接中介,那么,通信协议是必不可少的。根据上节所述的穿透原理可编写通信协议。我们需要自定义以下几种STRUCT:Client登录时向服务器发送的消息格式、Client注销时发送的消息格式、Client向服务器请求另外一个Client向自己方向发送UDP打洞消息格式、Client向服务器发送的消息格式、客户节点信息格式、Server向Client发送的消息格式、客户端之间发送消息格式。   关于所编写的Server部分,由穿透原理可知,Server端主要负责两件事,一是循环读取客户机登录和注销消息,并记录客户列表;二是循环转发客户P2P连接请求。这里要注意的是,我们应事先定义一个循环最大值(MAXC),防止丢包之后进入无限死循环,下面的Client部分也一样。Client端则主要有三部分:第一,登录服务端,并接收服务器端发送的已登录消息;第二,向外网IP发送消息,若发送超时,则发送一个请求打洞信息到服务器端,此过程循环(MAXC)次;第三,循环读取当前服务器用户。
  我们选用Visual C++6.0作为编程环境,进行此穿透实验的仿真实验。
  5 实验运行结果
  由于此程序只是为了实现穿透通信,因此功能并不是很完善。部分源程序参考相关资料改编。首先需运行服务器端,如图6所示,由图6可见,服务器端可以将已登录用户记录在案,中转连接功能则由后台运行。
  由于编程条件的限制,现将服务器端与两个客户机端在同一台电脑上运行,因此要指向的服务器IP为同一个地址。将客户机端分别命名为11和22,先模拟登录客户端主机11,然后模拟登录客户端主机22,所发送信息为“hello!”,两个客户机端的运行结果分别如图7、图8所示。
  由图7、图8可见,两个客户端主机已连接成功,并且发送的信息也已送达目的客户机。
  根据此实验结果分析,UDP穿透的目的已经达到。根据多次实验分析,由于客户端主机运行背景不同,同一局域网内可能需要在路由器端开通端口映射功能。
  6 结束语
  本文浅析了NAT的相关分类以及基于UDP协议穿透NAT的相关技术,并根据研究结果将其进行编程实现。该程序主要是根据UDP打洞技术来实现有关NAT穿透的基本功能,程序具有一定的适应性(针对Cone NAT),若结合硬件设施,可实现远程操控,因此有扩展开发空间。NAT穿透技术涉及很多内容,就传输层的穿透而言,本文只限于UDP协议,但就实际而言是不够的。目前网络上使用最多的传输层协议是TCP协议,而在实际应用中,基于TCP协议的穿透比基于UDP协议的穿透复杂的多。综上所述,本文所研究的NAT穿透技术还有待进一步开发与完善。
  参考文献:
  [1] 余以胜.P2P网络的NAT穿越技术研究[J].微型电脑应用,2012.1:34-36
  [2] 张静颐,赵雪岩,陈爱网.基于NAT穿透P2P即时通讯系统的设计与实现[J].电子设计工程,2011.7:96-98
  [3] 杜经纬,王春红.在P2P网络环境下基于UDP协议穿越NAT的研究[J].吉林师范大学学报(自然科学版),2012.1:93-94
  [4] 刘健,周仲文,刘洋.基于P2P的TCP穿透NAT技术研究[J].网络安全技术与应用,2011.3:40-41
  [5] Guha S, Francis P. Characterization and Measurement of TCPTaversal through NATs and Firewalls [EB/0L].http://nutss.gforge.cis.cornell.edu/pub/imc05-tcp nat.pdf.
  [6] 孔令旺.NAT技术及应用浅析[J].科技资讯,2011.32:26-26
  [7] 张知青,王碧玉.浅谈网络地址转换(NAT)的三种方式[J].中小企业管理与科技(上旬刊),2011.10:206-207
  [8] 刘泽阳,徐武平.P2P应用中一种多层NAT穿透解决方案的设计与实现[J].计算机应用,2011.7:1980-1983
其他文献
【正】 梆子腔中的二六板类,是与原板一样的一板一眼的板式。有些剧种的二六板是一种独立的板式(如晋剧的“二性”,京剧西皮的“二六”以及豫剧的“二八板”等),也有些剧种如
计算机网络技术的广泛应用为网络路由的发展带来新的机遇与挑战,对提高网络资源的应用效率具有重要意义。但是,受网络路由算法的影响,整个计算过程比较复杂,在很大程度上给工
“创新能力是一个民族进步的灵魂,是国家兴旺发达的不竭动力”。创新是教与学的灵魂,是实施素质教育的核心。在实际教学中,对学生创新思维能力的培养,已引起广大数学教师的高度重
针对远程教学中学生机端同步显示教师机端教学内容的需求,提出了一种基于Mirror Driver的教师机端屏幕共享解决方案。该方案基于教师机端对DirectDraw非高依赖和Mirror Driver能精确高效捕捉屏幕变化区域的特点,首先对教师机端屏幕高效捕捉;然后将捕捉的变化图像压缩成JPEG格式,通过网络传输到学生机端;最后学生机端提取JPEG数据,并转换成BMP图像,将多变化区域图像合成显示。
[基本案情]王某供称其与陈某共同预谋,共同入室实施了盗窃行为。陈某供称其仅在门口实施了望风行为,具体窃取财物系王某一人实施。赃物也归王某一人支配。现另有从被害人大门外
综合实践活动课程在我国普通教育课程中还是一门崭新的课程,在实施过程中必然会遇到一些问题,这些问题一定要引起我们的重视。
东德运动员.1964年2月24日生 主项:蛙泳、个人混合泳 曾获2枚奥运会、4枚世锦赛奖牌 戈韦尼格尔是八十年代初顶级蛙泳和个人混合泳选手之一,曾夺得多枚奥运会、世锦赛奖牌。然而
【正】 演奏艺术专业门类繁多,各种专业教学又都有其自身的特点和训练方法。但是,从教学方法宏观角度来看,还是有其共同的规律可循。本文试通过对我国演奏艺术教学中诸问题的
12月3日,工业和信息化部副部长尚冰一行赴湖南长沙就三网融合试点及宽带示范城市创建等情况进行专题调研。尚冰实地调研了长沙市白沙湾居民小区、金鹰小区三网融合建设情况,长
1500宽带生产线自动化控制功能水平较低是影响产品质量稳定的关键因素,也是制约高端产品生产的主要环节.本项目对生产线自动化系统硬件系统、软件系统进行全面彻底的改造,升级了