首页 > 论文范文 > 计算机论文 > 计算机论文范文:如何实现网络的快速穿越

计算机论文范文:如何实现网络的快速穿越


1 前言
随着 3G、LTE、Wi?、Wimax 等宽带无线接入技术的快速发展和成熟,移动互联网已快速融入人们的生活中。基于全 IP 化的网络发展趋势使得我们需要更多的 IP 地址来接入网络。目前大部分的企业和驻地网采用私有地址映射 NAT(Network Address Translation,网络地址转换)的方法解决 IPv4 地址不够用的问题。
NAT 通常位于专网和公网的边界处,当专网发出的数据分组到达 NAT 设备时,NAT将内部 IP 地址转换成公网可识别的合法 IP 地址;当从外部发来的 IP 分组到达 NAT 后,NAT 查阅地址映射表,将公网地址转换成专网地址,再转发给网内结点。NAT 还可以通过设置包过滤规则,使不符合规则的数据包无法穿透 NAT 及防火墙。
NAT/ 防火墙模式对端口固定的应用协议,通常只转换其包头,即可实现穿越,但对于像SIP/MGCP/H.248/H.323 等信令协议来说,需要在控制信息中动态地协商媒体流端口,其信令发起的 IP 地址是私有的,而私有地址在公网上是无法路由的,这样就使得这些控制信令所动态分配的端口在 NAT 上转换时带来了难度。
面向未来移动通信应用的需求,媒体流的传输多采用 UDP 协议,控制协议多基于 SIP/MGCP/H.248/H.323 等协议实现。基于以背景,本文重点对UDP协议穿越NAT策略进行研究,提出一种自配置的 UDP 协议穿越 NAT 策略,通过在公网设置一台服务器,客户端设置唯一的标识 ID,实现主机在 NAT 内外网不同组合时,自适应的选择最佳的通信策略,实现网络的穿越,提高通信的效率,分析验证表明该方案是可行的。
2 UDP协议穿越NAT的工作方式
UDP 穿越 NAT 一般有以下三种方式:
2.1 中继转发方式
中继转发方式是一种端到端通信方式。当两台主机分别位于两个不同的NAT设备后时,两个主机分别向一个实现设置好的、已知的、处于公网的 NAT 服务器发起 UDP 连接,服务器收到连接请求后,分别向通信的两台主机转发消息,从而实现对通信双方的连接。这种工作方式效率较低,对于服务器的处理能力要求也比较高,带宽的占用较大,主机间的信息转发时间也较长,容纳的用户数有限,因此实际应用中使用较少。
2.2 反向连接方式
反向连接方式是当一台主机位于 NAT 之后时,另一台主机位于公网,有合法的 IP 地址的情况。当位于公网的主机试图连接私网内的主机时,通过一个已部署的服务器来中转请求到该主机,该主机接到请求后发出一个“反向”请求到公网主机。这样私网内的主机与公网地址的主机就可以建立起一个端到端的 UDP 连接。这种方式要求通信中的一方在NAT 的后面,另一方不能 NAT 后面,所以其适用面较窄。
2.3 UDP打洞方式
UDP 打洞(UDP Hole Punching),通常是根据预先定义好的 NAT 协议通过程序进行“punch holes”(打洞),通过 NAT 和防火墙,建立端到端直接的连接。UDP 打洞常见的有两种模式,一种是两个主机位于不同的私网内,另一种是两个主机位于同一私网内。
2.3.1 两主机位于不同私网内
有两个主机A和B分别位于不同的私网,即不同的 NAT 之后,主机 A 和主机 B 都有自己的私网 IP 地址。设置一个公网的服务器 S,进行 NAT 地址的转换。如果 A 要建立一个与主机 B 的 UDP 会话,因为主机 A 使用的私网IP 地址和端口号,而 B 的地址也是私网 IP,这样 B 所在的 NAT 就无法将该消息送达 B,通常会丢掉该消息。同样道理,B 也无法主动建立与 A 的连接。使用 UDP 打洞的原理是:主机 A 和 B 通过 NAT 设备分别获得内网和公网地址,并在服务器 S 上注册。当主机 A 向B 的公网地址发送 UDP 请求时,服务器 S 会转发给 B 一个消息,要求 B 向 A 的公网地址发送 UDP 请求。这样,A 的私网地址和 B 的公网地址通过 NAT 建立起一个会话,而服务器 S 要求 B 返回的消息会在 B 的私有地址和A 的公共地址之间建立一个新的通信会话。当会话在每一方向上都建立,那么 A 和 B 就能直接通信而不再需要服务器
S。
2.3.2 两主机位于同一私网内
当两台主机处于同一私网内,即同一NAT 后时,通信的双方的公网地址是相同的。
但通信的两台主机预先并不知道位于同一私网之一情况,所以主机之间还是使用打洞的方式建立连接,仍需要在公网上设置一个具有公网地址的服务器 S。当主机 A 连接主机 B 时,会向 B 的外网地址发起连接请求,服务器 S采用打洞的方案进行地址映射。这种方式的缺点是处于同一私网内的两台主机需要先到公网服务器上进行地址的映射和转换,增加了通信建立的反应时间,效率低下。
另一种情况,当一台主机位于私网内,另一台主机为公网地址时,可以直接连接,也可以使用打洞的方式,但这样会增加了连接的复杂性。
3 STUN协议分析NAT 设备对于常用协议的数据包只需对IP 地址和端口号进行转换。但对于 H.323、SIP 和 MGCP 等应用来说,媒体的连接是放在数据包负载中传递的,协议只实现协商控制功能。基于 UDP 协议实现的媒体连接应用,由于用户设备的地址是私有的,该地址在公网上是不可达的,故通话双方无法实现正确路由,连接无法建立起来。
STUN(Simple Traversal of UDP overNATs,NAT 的 UDP 简单穿越)协议是现在最常见的 UDP 对 NAT 穿越协议 [2],该协议由RFC 3489 定义,采用打洞(Hole Punching)
的方式实现。STUN 协议中私网用户预先得到其在出口 NAT 上的对外地址,然后在协议中直接填写出口 NAT 上的对外地址,这样负载中的内容在穿越 NAT 时就无需修改,按普通NAT 流程转换 IP 地址即可。STUN 协议处理的通常是应用层的地址转换问题,客户端通过 NAT 找到自己的公网地址,查出自己所处的 NAT 类型及绑定的端口号。该信息被用来在两个同处于 NAT 后的主机建立 UDP 通信。
STUN 协议的优点是不需要对现有的 NAT 设备做改动。
4 一种自配置的UDP协议穿越NAT策略方案
本文基于以上分析,对 STUN 协议进行改进,提出一种自配置的 UDP 协议穿越 NAT策略,通过在公网设置一台服务器,客户端设置唯一的标识 ID,实现主机在 NAT 内外网不同组合时,自动的选择最佳的通信策略,实现网络的穿越。
4.1 服务器功能设计
该方案中需设置一台位于公网的地址映射服务器,服务器需包括三个功能:
(1)用户网络类型检测。服务器需对用户发来的连接请求进行处理,并检测出该用户的网络类型,对其内网或外网的 IP 地址、PORT 端口信息等返回给用户程序,用户端程序会根据这些信息选择相应策略。
(2)检索查询功能。对于已经在服务器上注册过的主机,数据库会保留其内外网地址、端口号等信息,当其他主机需要与该主机建立连接时,可在服务器上快速检索查询到其对应的网络信息。
(3)数据转发功能。服务器需要根据已注册的主机信息,把位于私网内的主机发出的UDP 包转发给另一台主机。
4.2 一种自配置的UDP协议NAT穿越策略设计
假定有一个 NAT 穿越的网络环境中,在公网上设置一台地址映射服务器,所有主机都在该服务器上进行注册。当主机启动时在该服务器注册,会获取到自己的网络类型和网络地址信息。当主机 A 需要和主机 B 建立端到端的通信时,采用自配置的通信策略建立端到端连接。具体的判决流程如图 1 所示。 优普论文发表网是学生人工智能论文快速写作,计算机职称论文发表,计算机论文范文参考首选网站。


该策略的实现原理及步骤如下:
假设有一台主机 A 需要和主机 B 建立起端到端的连接,该网络中存在 NAT 穿越,在对网络情况无法预先获知的情况下,主机 A可能有四种情况与主机B之间建立连接。首先,主机 A 向地址映射服务器发起请求,询问主机 B 在该服务器上注册的网络类型信息和 IP地址,根据获得的信息,主机 A 按照策略自配置的完成下述过程:
(1)如果主机 B 不是处于 NAT 内部的,也就是说主机 B 位于公网,有合法的公网 IP地址,则主机 A 可直接与主机 B 建立起连接,A 可以是公网的 IP 地址,也可以是位于 NAT内的,如果是从 NAT 发出的数据包,经地址映射后也可直接到达主机 B。
(2)如果主机 B 是位于 NAT 内部,则要分析主机 A 的网络情况,如果主机 A 位于公网,即 A 有可达的 IP 公网地址,则 A 要访问位于 NAT 内的主机 B 需要采取反向连接的策略,由主机 A 向地址映射服务器发起请求B 反向连接的消息,接到该消息后服务器会把主机 A 的地址信息发给主机 B,主机 B 收到请求后,根据请求会给 A 的公网地址发起一个反向连接。
(3)当两主机均位于 NAT 内部时,主机A 要建立与主机 B 的连接,也分两种情况,一种情况是主机 A 和 B 处于同一个子网,则A 和 B 之间的连接就不需要再通过公网的服务器进行消息的转发,而是可以让 A 直接与B 建立连接。这种情况可以通过判断 A 和 B的外网地址是否相同来确定。另一种情况是主机 A 和 B 分别处于不同的私网 NAT 内,也是最复杂的情况。
(4)当两主机位于不同的 NAT 内部时,需要采用打洞的方式。当主机 A 要向主机 B发起连接时,A 需先通过地址映射服务器发送到B的反向连接请求,B接到反向连接信息后,通过 B 的公网地址与 A 的私网地址间建立起一个可靠的 UDP 连接。同时,主机 B 为了与主机 A 实现交互,B 也要通过服务器向 A 发起反向连接请求,建立 A 的公网地址到 B 的私网地址之间的连接。
(5)经过以上过程的处理,如果主机 B能正确的返回连接确认消息给主机 A,则主机A 和主机 B 之间就完成了自配置的端到端的连接。如果主机A接受B的连接确认消息超时,说明 B 的消息无法返回给 A,则双方无法实现端到端的直连。一个解决方案是,在地址映射服务器上设置转发代理机制,将通信双方发来的消息经过转发传给对方,从而建立一个间接的通信连接。
4.3 策略验证与试验
基于以上的设计与逻辑分析,本文实现了该策略业务流程,并搭建了试验网进行了验证试验。图 2 是试验的网络拓扑结构。验证过程中,将地址映射服务器置于公网,通过两个客户机进行不同 NAT 之间的穿越试验。试验中分别将两台测试客户机分别置于同一 NAT 网络中,不同的 NAT 网络中,及一个客户机位于私网内、另一个客户机位于公网不同的组合,试验结果表明,该方案是可行的。
5 结论
本文面向未来移动通信应用的需求,对 UDP 协议穿越 NAT 策略进行了研究。基于 SIP/MGCP/H.248/H.323 等协议应用,分析了其媒体流传输的策略,提出一种自配置的UDP 协议穿越 NAT 方法,通过在公网设置服务器,客户端设置唯一标识,实现了在 NAT内外网客户机不同组合时,自适应选择最佳的图 2:试验组网结构通信策略,实现网络的穿越,提高通信效率,分析验证表明该方案是可行的。
参考文献
[1] Srisuresh Petal.RFC 2663:IP Network Address Translator(NAT) Terminology and considerations[S].IETF issue,Aug.
  1999.
[2] Rosenberg J,WeinbergerJ,HuitemaC,and
Mahy,R.RFC 3489:STUN-Simple Traversal of  User  Datagram  Protocol  (UDP) Through Network Address Translators (NATs)[S],Mar.2003.
[3] 李河 , 王树明 .P2P 网络中使用 UDP 穿越NAT 的方法研究 [J]. 吉林大学学报 ( 信息科学版 ),2003 21(3):275-279.
[4] WanderM,HolzapfelS,WackerA,WeisT.NTALG-TCP  NAT  traversal  with application-level gateways[C].2012 IEEE  Consumer  Communications  and Networking  Conference,CCNC'2012,p 46-47,2012.

本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。QQ:522-52-5970

论文   计算机   穿越