NAT穿越技术研究毕业论文.docx
- 文档编号:8410919
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:35
- 大小:281.61KB
NAT穿越技术研究毕业论文.docx
《NAT穿越技术研究毕业论文.docx》由会员分享,可在线阅读,更多相关《NAT穿越技术研究毕业论文.docx(35页珍藏版)》请在冰豆网上搜索。
NAT穿越技术研究毕业论文
NAT穿越技术研究毕业论文
1 引言2
1.1 背景及研究目的2
1.2 NAT当前研究情况3
1.3 课题主要工作及结构安排4
2 NAT的工作原理4
2.1 NAT简介4
2.2 NAT使用的几种情况5
2.3 NAT的功能5
2.3.1 部地址翻译5
2.3.2 部全局地址复用6
2.3.3 TCP负载重分配6
2.4 NAT的原理6
2.5 NAT的工作过程6
2.6 NAT技术类型8
2.6.1 静态NAT8
2.6.2 动态NAT池8
2.6.3 NPAT8
3 NAT存在的缺陷及现行解决方案9
3.1 问题9
3.2 现行NAT穿越解决方案10
3.3 ALG方案10
3.5 MIDCOM方案12
3.6 STUN方案12
3.7 各种方案的简单对比15
4 基于UDP传输的NAT穿越解决方案16
4.1 目标16
4.2 NAT类型17
4.3 实际NAT测试情况20
4.4 解决方案原理21
4.4.1 通信过程21
4.4.2 理论分析21
4.4.3 试验结果23
4.5 与STUN解决方案的比较23
5 基于UDP传输的NAT穿越解决方案的简单设计25
5.1 基本原理25
5.2 实体介绍25
5.3 消息属性26
5.4 基本通信过程26
5.4.1 网络环境26
5.4.2 客户端行为26
5.4.3 服务器端行为28
5.5 客户端设计28
5.6 服务器端设计33
6 结束语35
参考文献36
致谢38
1 引言
1.1 背景及研究目的
当1983年1月1日TCP/IP协议成为ARPANET上唯一的正式协议以后,ARPANET上连接的网络,机器和用户快速增长,特别是NSFNET和ARPANET互连以后,数目更是以指数增长。
很多的地区网络开始加入,并且开始与加拿大,欧洲和太平洋地区的网络连接。
到了80年代中期,人们开始把互连的网络集成互连网,后来就是因特网。
增长继续保持指数级,到了2002年巳经拥有了3000个网络和2000,000台计算机。
其规模大约每年翻一翻[1]。
因特网业务的发展需要它能够提供大量IP地址来满足企业和个人的访问需求。
人们开始在制定的网络协议的时候,没有考虑到网络的规模能够增长的如此迅速,所以造成了现有网络协议IP地址的短缺。
于是提出了大量的解决方案,例如提出了Ipv6协议来扩大IP地址的大小,改变IP地址结构,甚至提出了废弃IP地址。
不幸的是,这些方案要么改变路由器的结构,要么改变PC机结构或者同时改变这两者,所以这些方案不能够马上实施。
一种新的解决方案地址复用也是提出的方案之一。
这种解决方案是基于这样的事实:
在任意给定的时刻,私网中只有很小比例的主机和公网中的主机进行通信。
基于这种思想,在私网部没有必要为每台主机都分配一个公网的IP地址。
这样整个网络就被分成了私网和公网。
在私网部,主机之间的通信地址完全可以使用可以重复利用的私网地址。
如果私网部的主机需要和公网的主机进行通信,只需要动态的把NAT设备的公网IP地址分配给需要和公网进行通信的主机,NAT作为中间转发设备,起到一个桥接作用实现二者之间的通信[2]。
基于这种想法,1993年由PaulFrancis和TonyEng在ComputerCommunicationReview发表了一篇关于地址复用的论文,在这篇论文中首次提到了地址复用的思想和实现地址复用的NAT设备。
IETF1994年5月提出了NAT协议,当时主要是为了解决网络地址短缺的问题;IETF又在1996年2月份提出了私有网络的概念。
在1999年8月份IETF提出了NAT中使用的相关的术语。
进入2000年,由于宽带城域网的兴起,传统的TCP/IP协议的应用开发更加成为研究的热点,NAT协议作为一个新协议急切的需要研究和开发,应用到实际网络中去。
1.2 NAT当前研究情况
作为一类标准Internet技术,NAT能实现让部LAN通信运用一套IP地址,而外部通信采用另一套IP地址,这在现行IPv4协议环境下意义重大。
通过NAT分离Internet与LAN地址,相对于单一的全球地址分配机制来说,很多地址可以节省下来。
为许多申请不到很多可全球路由公共地址的企业提供了局域网终端都可连网的解决方案,但是,NAT的缺陷是一个不容忽视的问题[3]。
部地址在公网上没有路由,用户可以访问别人,但难以被别人访问。
在我国的IP网上,目前很多用户都在用着“部地址”,这种现象毫无疑问对我国IP业务的发展有很大的潜在危害。
这种危害实际上已经逐渐显示出来。
随着IP在技术层面也逐渐走向成熟,与之相应的一系列协议、标准的出炉,多媒体通信系列标准的组成部分H.323和IETF的SIP,以及基于这些标准协议的产品,如IP系统、媒体网关等得到了广泛应用,一些网络冲突也突显出来。
比如当前一些网络实体限制这样端到端的分组通过,这些实体指的就是防火墙和网络地址转换器[4]。
但随着我国IP的发展,这一系列标准,协议都将会应用到实际中去,因此当前NAT的研究方向都是基于各种标准,各种协议的NAT穿越技术。
1.3 课题主要工作及结构安排
本课题是在以NAT应用为基础的背景下,以穿越NAT技术为研究对象。
首先介绍NAT的基本原理及常用技术类型,接下来通过对NAT在实际网络环境中的应用找出存在的缺陷,分析目前较为流行的解决方案的实现原理,最后提出了自己的解决方案,分析其理论可行性,在实际的试验中也得到证实是切实可行的,并对方案进行论证和简单的设计
在第一章中简要叙述了NAT的背景及本课题的研究目的等容;第二章主要说明NAT的定义,NAT的原理,NAT分类及NAT的技术类型等容;第三章介绍了目前NAT应用存在的缺陷及当前各种NAT解决方案以及各自的优缺点;第四章较详细的介绍了自己的解决方案,并进行理论分析和试验验证,最后根据论证结果与现有解决方案STUN做比较;第五章给出了一个解决方案实现的例子,以及相关的程序流图;第六章是对整个课题的一个总结。
2 NAT的工作原理
2.1 NAT简介
NAT英文全称是“NetworkAddressTranslator”,中文意思是“网络地址转换”,它是一个IETF(InternetEngineeringTaskForce,Internet工程任务组)标准。
在一个局域网中同时与外界通讯的主机数量只占域中主机总体数量的很小一部分,事实上,很多主机几乎从来不进行域外通讯,根据这种特点,可以看出实际上并不需要为每台主机都配备全局地址,只要分配少数几个全局地址给一个局域网,如果所有局域网中主机能够重用这几个公共IP地址和外界通讯,那么IP地址的需求量就会大大减少。
NAT正是利用了局域网的这种特点,实现了允许专用网络上的多台PC共享单个、全局路由的IPv4地址。
IPv4地址日益不足是部署NAT的一个主要原因。
简言之,NAT技术就是一种把部私有网络地址(IP地址)翻译成合法网络IP地址的技术[5]。
如图所示:
图2.1 网络地址转换示意
这种技术的主要优点是它可以随时在局域网中添加主机,其它主机及路由器的设置都不需要改变(除了几种特殊的应用),因此,这种解决方案可以很方便的配置和实施。
2.2 NAT使用的几种情况
a.连接到internet,但却没有足够的合法地址分配给部主机;
b.更改到一个需要重新分配地址的ISP;
c.有相同的IP地址的两个internet;
d.想支持负载均衡(主机);
2.3 NAT的功能
采用NAT,可以实现以下几个功能:
部地址翻译(Translationinsidelocaladdresses);部全局地址复用(overloadinginsideglobaladdresses);TCP负载重分配(TCPloaddistribution);处理重叠网络(Handingoverlappingnetworks)。
下面分别介绍它们的工作原理:
2.3.1 部地址翻译
这是NAT最通用的一种方法,功能是将网络部局部IP一对一的翻译成部全局地址。
在部主机连接到外部网络时,当第一个数据包到达NAT路由器时,router检查它的NAT表,因为NAT是静态配置的,故可以查询出来(simplyentry),然后router将数据包的部局部IP(源地址)更换成部全局地址,再转发出去。
外部主机接收到数据包用接收到的部全局地址来响应,NAT接收到外部发回来的数据包,再根据NAT表把地址翻译成部局部IP,转发到部网络。
2.3.2 部全局地址复用
这种方法使用地址和端口将多个部地址映射到比较少的外部地址。
也就是所谓的NAPT。
和部地址翻译一样,NATrouter负责查表和翻译部IP地址,唯一的区别就是由于使用了overloading,router将复用部全局IP地址,并存储足够的信息以区分不同地址,这样查询出来的是extendedentry。
NATrouter和外部主机的通讯采用翻译过的部全局地址,故同一般的通讯没有差别,从外部网络经router到部主机通讯时,同样要查NAT表[6]。
2.3.3 TCP负载重分配
这种方法和以上两种操作不同,这是NAT由外到的翻译,所以那种以为WEBserver一定要放置到NAT外部的说法是错误的。
工作原理:
外部主机向虚拟主机(定义为部全局地址)通讯,NATroute接受外部主机的请求并依据NAT表建立与部主机的连接,把部全局地址(目的地址)翻译成部局部地址,并转发数据包到部主机,部主机接受包并作出响应。
NATrouter再使用部局部地址和端口查询数据表,根据查询到的外部地址和端口做出响应。
此时,如果同一主机再做第二个连接,NATrouter将根据NAT表将建立与另一虚拟主机的连接,并转发数据。
2.4 NAT的原理
NAT安装在部网络和外部网络之间具有NAT功能的设备上,在部主机需要和外部进行通讯时,NAT负责进行地址翻译工作,所以在NAT上还必须维护一个翻译表(NAT表)来存储相应的地址转换信息,如果一个域有多个出口,那么还必须保证每个NAT具有相同的翻译表。
简单地说,NAT就是在局域网部网络中使用部地址,而当部节点要与外部网络进行通讯时,就在网关处,将部地址替换成公用地址,从而在外部公网(internet)上正常使用。
2.5 NAT的工作过程
NAT设备后面的客户端通常通过DHCP(动态主机配置协议)分配到专用的IP地址,或由管理员进行静态配置。
在与该专用网络的外部进行通讯时,通常会发生下列事情:
a.在客户机上:
当应用程序想同服务器通讯时,它将打开与源IP地址/源端口、目标IP地址/端口及网络协议相关联的套接字。
这样可以识别通讯所需的两个端点。
当应用程序利用该套接字传输信息时,客户机的专用IP地址/端口将被插入数据包的源地址字段中。
数据包的目标字段将包含服务器的IP地址/端口。
由于该数据包的目的地是在该专用网络之外的某个位置,因此客户机将把该数据包转发给默认的网关。
这种情况下的默认网关就是NAT设备。
:
NAT设备将截获该输出数据包,然后利用目标IP地址/端口、NAT设备的部全局IP地址/端口、网络协议及客户机的部局部IP地址/端口来创建端口映射。
NAT设备将维护这些映射组成的表,并将该端口的映射存储在表中。
部全局IP地址/端口就是该数据通讯用于取代部局部IP地址/端口的公共IP地址/端口。
NAT设备随即将来自客户机专用部IP地址/端口的数据包的源地址字段转换为NAT设备的公共IP地址和端口,实现对这些数据包的地址转换。
然后,数据包将通过外部网络发送出去,并最终到达目标服务器。
Internal:
192.168.1.1:
1000
External:
202.13.34.56:
1000
Remote:
334.333.234.45:
80
图2.2 出站数据包转换的示例
b.服务器上:
当服务器接收到数据包时,它认为自己是在和一台具有可全球路由IP地址的计算机进行通讯。
它会利用自己源地址字段中的护地址/端口将响应数据包定向到NAT设备的外部IP地址和端口。
NAT设备从服务器那接收到这些数据包,然后将数据包与其端口映射表进行比较。
如果NAT发现某个端口映射的远程主机正地址/端口、外部端口及网络协议与输入数据包的源IP地址/端口、目标端口和网络协议匹配,NAT就会进行反向转换。
NAT将把数据包目标字段中的外部IP地址和外部端口替换为客户机的专用正地址和部端口[2][7]。
2.6 NAT技术类型
NAT有三种类型:
静态NAT(StaticNAT)、动态NAT(PooledNAT)、网络地址端口转换NAPT(Port-LevelNAT)。
三种NAT方案各有利弊。
其中静态NAT设置起来最为简单和最容易实现的一种,部网络中的每个主机都被永久映射成外部网络中的某个合法的地址。
而动态地址NAT则是在外部网络中定义了一系列的合法地址,采用动态分配的方法映射到部网络。
NAPT则是把部地址映射到外部网络的一个1P地址的不同端口上。
根据不同的需要,可以选择不同的配置方式。
2.6.1 静态NAT
静态NAT是NAT中最简单的应用方式,部网络IP地址和外部网络IP地址只能是一一对应的固定映射方式,且需要指定和哪个地址进行转换。
如果部网络中有E-mail服务器、FTP服务器、WEB服务器等为外部网络用户提供服务,则这些服务器的IP地址必须采用静态地址转换,以便外部网络用户可以使用这些服务。
2.6.2 动态NAT池
动态NAT池(PooledNAT)是采用动态分配的方法映射部网络的和外部网络的IP地址。
采用NAT池意味着可以在部网中定义很多的部用户,通过动态分配的办法,共享很少的几个外部IP地址。
在动态NAT环境中能够同时和外界通讯的用户个数受限于地址池中的地址个数。
当远程用户连接上之后,动态地址NAT就会分配给他一个未分配给其它用户的地址池中的IP地址,用户断开时,这个IP地址就会被释放而留待以后使用,由此可见动态NAT还必需维护一个动态表格以便纪录私有IP地址和全局IP地址的对应关系,因为它们之间的对应关系不像静态NAT那样一一对应,也因此动态NAT要比静态NAT复杂得多。
该引起注意的是,NAT池中动态分配的外部IP地址全部被占用后,后续的NAT翻译申请将会失败,并传回hostunreachable的ICMP包,只有当一个用户结束连接,自动释放分配给它的全局地址后,新的地址转换要求才能被执行[9]。
2.6.3 NPAT
网络地址端口转换NAPT(PortAddressTranslation)也称为PAT,是人们比较熟悉的一种动态地址转换方式,它可以允许多个部本地地址共用一个部全局地址,同时用不同的协议端口号映射不同的部网络地址。
NAPT普遍应用于接入设备中,它可以将中小型的网络隐藏在一个合法的IP地址后面。
NAT与动态地址NAT不同,它将部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的TCP端口号,而动态NAT是把不同的私有部地址转换为地址池中未被使用的全局地址[9]。
3 NAT存在的缺陷及现行解决方案
3.1 问题
在IPv4网络中,公有IP地址的不足导致了用户网络中广泛采用了私有IP地址。
为了实现用户私网中发出的IP包在公网上可路由,在用户网络与公网交界处需要专门的翻译设备----网络地址翻译器(NAT)实现IP报头公有地址和私有地址等信息的翻译。
作为一类标准Internet技术,NAT能实现让部LAN通信运用一套IP地址,而外部通信采用另一套IP地址,这在现行IPv4协议环境下意义重大。
通过NAT分离Internet(公共域)与LAN(专用域)地址,相对于单一的全球地址分配机制来说,很多地址可以节省下来。
这一方面为许多申请不到很多可全球路由公共地址的企业提供了局域网终端都可连网的解决方案,另一方面,由于私网部的终端与外界不能直接进行通信,使得外部网络看不到网的主机的存在,从而提供了部网络一定的安全特性,在这方面起到了防火墙的作用。
但是,NAT的缺陷也是一个不容忽视的问题。
部地址在公网上没有路由,用户可以访问别人,但难以被别人访问。
在我国的IP网上,目前很多用户都在用着“部地址”,这种现象毫无疑问对我国IP业务的发展有很大的潜在危害。
这种危害实际上已经逐渐显示出来。
随着IP在技术层面也逐渐走向成熟,与之相应的一系列协议、标准的出炉,如ITU-T的H.323和IETF的SIP,以及基于这些标准协议的产品,如IP系统、媒体网关等得到了广泛应用,一些网络冲突也突显出来。
比如当前一些网络实体限制这样端到端的分组通过,这些实体指的就是防火墙和网络地址转换器。
基于H.323、SIP、MGCP和H.248等协议的语音和视频应用需通过信令消息中的IP地址和端口参数来实现目的地寻址,因此NAT穿越时不仅需要对TCP/UCP层的端口信息以及IP层的源地址和目的地址进行变换,还需对IP包载荷中的相关地址信息进行变换;但是NAT只是在数据包通过时修改数据包的源地址、源端口以及目的地址、目的端口,对IP包载荷中的任何信息包括地址信息都不进行修改,这使得通信不能正常进行,而这个问题也急需解决[3][21]。
尽管NAT的应用给网络传输带来了许多的弊端,但是由于IP地址资源匾乏,而长远的解决方案IPv6又处于试验研究阶段不能在短时间得以部署和实施的情况下,NAT仍然是必然的选择,所以当前要考虑的关键问题是解决NAT穿越这个棘手问题。
3.2 现行NAT穿越解决方案
NAT穿越技术是指企业网用户和本地网用户的终端用户采用私有IP地址通过出口的NAT/FW(防火墙)接入公网。
目前关于NAT穿透问题有多种解决方案,到底采用哪种方式需要从以下角度进行综合考虑:
升级要求,哪些网络元素需要做升级;网络业务量,应用这种解决方案后,是否会引入新的网络开销;在IP技术中还要考虑语音质量,此解决方案是否影响语音质量,增加时延或丢包率;运营商的投资,运营商是否需要做大量投资;企业投资,如果面向企业客户,企业是否需要做大量投资;确定性,此解决方案是否只能在特定的环境下生效,是否可以支持各种应用方案,是否可以穿越各种NAT;扩展性,此方案是否支持大规模应用[10][11]。
目前,对于NAT穿越问题业界提出了各种解决方案,主要有应用级网关(ALG)、代理方式(Proxy)、MIDCOM协议、STUN等,各自均具有不同的优点和缺点。
下面一一进行介绍:
3.3 ALG方案
NAT和NAPT只能对IP报文的头部地址和TCP/UDP头部的端口信息进行转换,对于报文的数据部分可能包含IP地址或端口信息的特殊协议(如H.323、SIP、MGCP等),则无法实现有效的转换,这就可能导致问题发生。
解决这些特殊协议的NAT转换问题的一个方法就是在NAT实现中采用ALG(ApplicationlevelGateway,应用级网关)功能。
ALG是在传统的NAT上进行协议扩展,使之具备感知SIP、H.323、H.324和MGCP等呼叫控制协议的能力,它通过与NAT交互以建立状态,使用NAT的状态信息来改变封装在IP报文数据部分中的特定数据,并完成其他必需的工作以使应用协议可以跨越不同围运行,从而完成呼叫控制协议的解析和地址翻译功能。
ALG方式是最简单也是最早出现的一种NAT穿越方案,然而其缺点也非常明显。
(1)可扩展性不强,即每增加一种应用都需要对ALG设备进行升级;
(2)增加了NAT设备的负担,影响地址穿越的效率和性能;(3)已部署的大量NAT的升级改造工作非常困难。
因此,尽管ALG方式在某些应用环境获得了一部分应用,但随着技术的发展,ALG方式巳逐渐被其他更优的方式所取代。
WAN
Firewall/NATwithALGFunction
图3.3 ALG组网示意图
3.4 代理方案
代理技术是为缓解ALG方式所带来的现有NAT升级困难而出现的,也是目前比较流行的一种NAT穿越解决方案。
代理方案是指通过对私网用户呼叫的信令和媒体同时做Relay来实现出口NAT/FW的穿越。
它是采用代理设备为私网SIP、H323、MGCP和H.248用户的语音和多媒体呼叫业务提供信令通道和媒体通道的地址转换功能。
代理方式在网络中部署的位置也比较灵活,既可以应用于私网部、也可以应用于公网和私网边缘或公网。
由于采用专用的IP语音和视频业务的代理设备,代理方式无需对现有的传统NAT进行协议扩展,所以不会影响数据业务的NAT穿越。
然而,代理技术有着与ALG方式相同的局限性,即每增加一种新的应用需要对代理设备进行协议扩展。
WAN
图3.4 Proxy方式组网示意图
3.5 MIDCOM方案
MIDCOM技术是为了解决ALG和代理技术所共有的可扩展性不强及代理方式中同时进行媒体和信令中继转发所带来的效率不高问题,而出现的一种NAT穿越解决方案,由IETF制定,用于代理设备分离为信令转发和媒体转发两个部分之间的接口协议。
实际应用中,媒体转发功能可以集成于NAT设备完成,信令转发可采用独立的功能实体或集成于软交换设备中完成。
MIDCOM技术是采用可信的第三方(MIDCOMAgent)对Middlebox(NAT)进行控制,由MIDCOMAgent控制Middlebox打开和关闭媒体端口。
通常,MIDCOMAgent的功能可以集成在呼叫控制服务器之中,而Middiebox功能集成在NAT之中,MIDCOMAgent和Middlebox之间接口采用MIDCOM协议完成互通。
MIDCOM技术的优势在于可扩展性强,新增应用只需对MIDCOMAgent进行扩展,而不会导致MIDB0X重新升级。
另外从安全性考虑,MIDCOM方式支持控制报文和媒体流的加密,因此安全性比较高。
然而,MIDCOM技术的实施需要对服务器和现有的NAT/FW需要同时进行MIDCOM协议的升级扩展以支持MIDCOM工作组开发的防火墙控制协议,且需要在运营商网络侧部署MIDCOM控制代理,这样,MIDCOM控制代理才可控制NAT/FW打开/关闭Pinhole,因此该方案的实施不可避免带来了现有设备升级的困难。
但可以预见的是,随着MIDCOM协议的不断成熟和发展,该方式将获得越来越多的应用前景[12][16]。
Firewall/NAT/MidBox
图3.5 MIDCOM方式组网示意图
3.6 STUN方案
STUN(simpleTraversalofUDPThroughNAT)是由IE作研制的一种UDP流协议穿透NAT的协议。
STUN协议有客户端和服务器两部分协作共同完成NAT穿越功能,位于部网络的STUNclient(NAT)通过UDP发送请求STUN消息给外部网络的STUNServer(NAT外),STIJNServer收到请求消息后产生响应消息,响应消息通过NAT发送给STUNClient,STUNClient通过响应消息体中的容得知其在NAT上对应的外部地址,然后将该地址填入以后的呼叫协议的UDP负载中,并且告知对端,本端的RTP接收地址和端口号为NAT外的地址和端口号。
由于通过STUN协议己在NAT上预先建立媒体流的NAT映射表项,因此媒体流可顺利穿越NAT。
STUN具体工作过程如下描述:
STUN是一个简单的客户—服务器协议。
客户端发送请求,服务器做出相应的响应。
有两种类型的请求,一种是BindingRequests,是基于UDP传输。
另一种是sharedsecretRequests,是针对TSL及TCP传输。
SharedSecr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NAT 穿越 技术研究 毕业论文
![提示](https://static.bdocx.com/images/bang_tan.gif)