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

新版基于UDP协议的NAT穿透技术研究与仿真汇编摘要:NAT穿透技术能够有效解决由于IP地址短缺和路由表增大造成的用户接入困难的问题,可缓解因网络地址的严重消耗造成的IPv4资源稀缺的情况。针对这种情况进行了基于UDP协议的NAT穿透技术研究与仿真。首先分析NAT穿透的类型及各自的原理,提出对于NAT穿透相对有效的UDP打洞方案,然后通过穿透原理得出算法结构流程,最后在VC++环境下进行仿真实验。实验结果表明,该算法结构能够有效地实现NAT穿透目的,而且具有可拓展性,可在较多情况下适用。关键词:网络地址;NAT穿透;NAT类型;UDP打洞中图分类号:TP393.02文献标志码:A文章编号:1006-88228(202x)06-12-030引言NAT又名网络地址转换,在如今IP地址越来越稀缺的情况下产生,主要为了解决地址重用的问题。众所周知,在TCP/IP协议中,有三个IP地址区域作为私有地址而被专门保留。1NAT分类1.1基本的NAT由于内网的IP地址不允许在网络上出现,内部数据包的IP地址需转换后才能对外发送,所以在同一时间内,全子网内只有小部分IP地址能够对应到外部全球惟一的IP地址[2]。基本的NAT设备将会改变数据包中的原IP地址,但是不会改变数据包中相应的端口数据。1.2NAPTNAPT全名为网络地址/端口转换器,由其名称可以看出凡是经过此设备的IP数据包,不仅数据包内的IP地址会被修改,而且数据包内的TCP/UDP端口数据也会被修改。它可允许内网多个计算机对应一个全球惟一的IP地址[3]。由于端口修改的方法不同,因而又可分为圆锥型和对称型两种。⑴ConeNAT(圆锥型)在一个客户机(拥有私有地址与端口号)与另一个客户机(拥有公有地址与端口号)建立端口映射之后,只要是当前仍然存在会话在利用此端口映射,那么它就可以用这个端口映射继续处理后续的会话。然而,当位于NAT后的主机与外网的主机建立连接之后,NAT接受外部连接的自由程度是不同的,由此可以把此类型进一步分类。但是要注意这个分类一般只适用于UDP传输,因为对于TCP连接,只有在有专门的配置情况下才会建立。ConeNAT分类之后为下面三种情况。①FullConeNAT(完全圆锥型)2NAT穿透原理分析若想用软件实现NAT技术,一种方法是通过扩展应用层协议,使其具有NAT路由的功能;另一种方法则是把应用层协议中的私有地址直接修改为公网地址。但是,由于NAT类型的不同,通过修改应用层协议地址[4]的方法并不能通用,尤其当是SymmetricNAT类型的时候,其预先获得的公网地址与实际转换后的公网地址有可能不相同[5]。NAT穿透需要分析下面三种情况。首先,双方都是SymmetricNAPT。此情况由于端口号分配的不同,不支持穿透。其次,双方都是ConeNAPT。这种情况是我们所期望的,可以进行穿透。最后,两方分别是SymmetricNAPT和ConeNAPT。这种情况稍复杂些,假设A是SymmetricNAT,B是ConeNAT,由文献分析[6]可知,不管是A先连接B还是B先连接A,在一方的NAT接收到数据包后,由于查询自己的映射表无法找到相对应映射项而会将包丢弃,从而导致连接失败。因此,根据上述分析可以得出,只有当连接两端的设备都为ConeNAT的情况下,才能实现基于UDP协议的内网穿透。3UDP打洞技术当前发展较快的穿透技术是一种借助于公网服务器来完成NAT穿透的技术,称为HolePunching技术[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私...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

笔杆子文秘
机构认证
内容提供者

为您提供优质文档,供您参考!

确认删除?