andyandandkle 2008-4-9 10:06
基于UDP穿透NAT进行远程连接的原理
[size=3][color=#000000][font=宋体]传统的远程连接软件一般使用[/font][font=Times New Roman]NETBEUI[/font][font=宋体]、[/font][font=Times New Roman]NETBIOS[/font][font=宋体]、[/font][font=Times New Roman]IPX/SPX[/font][font=宋体]、[/font][font=Times New Roman]TCP/IP[/font][font=宋体]等协议来实现远程连接,这要求远程连接的双方必须有一方有公网[/font][font=Times New Roman]IP[/font][font=宋体]或者都处于同一个局域网内[/font][font=Times New Roman]=[/font][font=宋体]。随着网络技术的发展,处于不同[/font][font=Times New Roman]NAT[/font][font=宋体]后的远程连接需求越来越迫切。较之通过虚拟网卡利用中央服务器中转实现内网穿透,“基于[/font][font=Times New Roman]UDP[/font][font=宋体]穿透[/font][font=Times New Roman]NAT[/font][font=宋体]进行远程连接”则是一个最为优秀的解决方案。目前互联网世界真正实现了[/font][font=Times New Roman]UDP[/font][font=宋体]穿透[/font][font=Times New Roman]NAT[/font][font=宋体]技术的软件不多,其中做得比较出色的是国外的[/font][font=Times New Roman]LogmeIn[/font][font=宋体]、[/font][font=Times New Roman]GoTomyPC[/font][font=宋体]以及国产软件[/font][font=Times New Roman]LoginAny[/font][font=宋体]。在此给大家介绍一下[/font][font=Times New Roman]UDP [/font][font=宋体]穿透[/font][font=Times New Roman]NAT[/font][font=宋体]是如何实现的。[/font][/color][/size]
[size=3][color=#000000][font=宋体]首先,非常有必要了解下[/font][font=Times New Roman]UDP[/font][font=宋体]。[/font][/color][/size]
[size=3][color=#000000][font=Times New Roman]UDP[/font][font=宋体]是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。换句话说:[/font][font=Times New Roman]UDP[/font][font=宋体]本身是非常不安全的。如果[/font][font=Times New Roman]UDP[/font][font=宋体]用来作为通讯媒介,那么安全性就是一个非常重要的问题,因为[/font][font=Times New Roman]UDP[/font][font=宋体]的数据包很容易伪造,发送者的[/font][font=Times New Roman]IP[/font][font=宋体]地址也经常被篡改。[/font][/color][/size]
[font=Times New Roman][size=3][color=#000000] [/color][/size][/font][size=3][color=#000000][font=宋体]其次,我们来谈谈为什么要选择[/font][font=Times New Roman]UDP[/font][font=宋体]。[/font][/color][/size]
[size=3][color=#000000][font=Times New Roman]LoginAny[/font][font=宋体]等软件采用[/font][font=Times New Roman]UDP[/font][font=宋体]而不用[/font][font=Times New Roman]IP[/font][font=宋体]数据包的原因是由于只要来源于安全的环境,大多数基于[/font][font=Times New Roman]UDP[/font][font=宋体]运输之上的防火墙和[/font][font=Times New Roman]NAT[/font][font=宋体]设备允许无缝双向沟通(从而有效地重新实施类似于[/font][font=Times New Roman]TCP[/font][font=宋体]的运输层),但是对[/font][font=Times New Roman] TCP[/font][font=宋体]和[/font][font=Times New Roman] IP [/font][font=宋体]数据包要做很大的改动,并且它们需要大量的重构[/font][font=Times New Roman]TCP[/font][font=宋体]和[/font][font=Times New Roman]IP[/font][font=宋体]数据包。[/font][/color][/size]
[size=3][color=#000000][font=宋体]最后,再来分析一下[/font][font=Times New Roman]UDP[/font][font=宋体]穿透[/font][font=Times New Roman]NAT[/font][font=宋体]连接原理。[/font][/color][/size]
[size=3][color=#000000][font=宋体]由不可靠的[/font][font=Times New Roman]UDP[/font][font=宋体]数据包构造出一个可靠的类似于[/font][font=Times New Roman]TCP[/font][font=宋体]的流,由[/font][font=Times New Roman]SSL[/font][font=宋体]层提供全面指导加密,完整性保护和端点核查能力,从而进一步保护这个流。为了建立一个[/font][font=Times New Roman]UDP[/font][font=宋体]穿透[/font][font=Times New Roman]NAT[/font][font=宋体]连接,客户端和控制端都要向网关发送若干加密[/font][font=Times New Roman]UDP[/font][font=宋体]数据包。这些数据包由与网关及其相关部分相同的密码加密,并与先前存在的[/font][font=Times New Roman]SSL[/font][font=宋体]连接相通。因此,很难被模仿和伪造。[/font][/color][/size]
[size=3][color=#000000][font=宋体]网关通过这些数据包来确定这两个实体的对外因特网的[/font][font=Times New Roman]IP[/font][font=宋体]地址,而且还试图预测当发送[/font][font=Times New Roman]UDP[/font][font=宋体]数据包时哪些防火墙端口将由用于沟通。通过试图建立直接连接的相应部分传递其发现的命令。如果网关能够成功地检测到端口命令,连接便会建立,其相应部分会互相改变而使用从网关获得的同一个密码,建立一个能够直接沟通的协议。如果不能建立直接连接,其相关部分会重新与基于[/font][font=Times New Roman]TCP[/font][font=宋体]之上的网关相连,并要求使用一个转发的端对端加密的协议。[/font][/color][/size]
[size=3][color=#000000][font=宋体]对于[/font][font=Times New Roman]LoginAny[/font][font=宋体]这一类软件来说,[/font][font=Times New Roman]UDP[/font][font=宋体]穿透[/font][font=Times New Roman]NAT[/font][font=宋体]连接这整个过程只需几秒钟,并且这个过程对用户是完全公开透明的。其最显著的特点是在使用直接连接时更快的运行速度和更低的延迟性。[/font][/color][/size]
[font=Times New Roman][size=3][color=#000000] [/color][/size][/font]