DHT网络中一种TCP穿越NAT机制
ipsec nat穿越原理
IPsec NAT穿越原理什么是IPsec?IPsec(Internet Protocol Security)是一种网络协议,用于在IP网络上提供安全的数据传输。
它通过加密和认证机制来保护数据的完整性、机密性和身份验证。
IPsec可以在两个主机之间或两个子网之间建立安全的通信链路。
它可以用于远程访问VPN(Virtual Private Network)连接、站点到站点VPN连接以及移动设备的安全通信。
为什么需要NAT穿越?NAT(Network Address Translation)是一种网络技术,用于将私有IP地址转换为公共IP地址,以实现多个设备共享同一个公网IP地址。
然而,由于NAT会改变IP头部信息,导致加密后的数据包无法正确解析。
这就给使用IPsec进行加密通信的应用程序带来了困扰。
因此,需要一种方法来克服NAT 对IPsec的限制,实现安全的通信。
IPsec NAT穿越原理1. NAT Traversal为了解决NAT对IPsec的限制问题,提出了NAT Traversal技术。
NAT Traversal 允许在经过NAT设备时建立和维护安全通道。
a. UDP封装NAT Traversal使用UDP封装技术将原始的IPsec数据包封装在UDP数据包中。
由于UDP是一种无连接的协议,它可以通过NAT设备传输到目标主机。
在发送IPsec数据包之前,发送方会将IPsec数据包封装在UDP数据包中,并将目的端口设置为特定的值(通常是4500)。
这样,NAT设备就会将整个UDP数据包转发到目标主机。
b. NAT检测NAT Traversal还引入了一种称为”keepalive”的机制来检测是否经过了NAT设备。
当IPsec设备与对等方建立连接时,它会周期性地向对等方发送keepalive消息。
如果对等方收到了keepalive消息,则说明没有经过NAT设备。
如果对等方未收到keepalive消息,则说明可能经过了NAT设备,并且需要使用UDP封装技术。
nat技术的工作原理
nat技术的工作原理网络地址转换(Network Address Translation,简称NAT)是一种在计算机网络中常用的技术,它允许将一组IP地址映射到另一组IP地址,从而实现网络中IP地址的重用。
NAT技术的工作原理涉及到网络层和传输层两个不同的层次,下面将逐步详细介绍NAT技术的工作原理。
NAT技术的工作原理可以分为两个阶段:地址转换和端口转换。
第一阶段是地址转换。
当一台位于内部网络的计算机要访问外部网络时,它首先向接入网络的NAT设备发送请求。
在发送请求前,NAT设备会为内部计算机分配一个临时的IP地址(通常为私有IP地址)。
这个临时IP地址可以是在本地内部网络中的唯一一个地址,可以避免与外部网络中的其他计算机的IP地址冲突。
NAT设备对于发送请求的数据报进行修改,将内部计算机的源IP地址更改为分配的临时IP地址,然后将修改后的数据报发送到外部网络。
第二阶段是端口转换。
当外部网络返回响应数据时,NAT设备将响应数据中的目标IP地址更改为内部计算机的IP地址,并将响应数据发送到该内部计算机。
在此之前,NAT设备会在临时IP地址和内部计算机之间建立一个映射关系。
该映射关系通常会使用一种叫做网络地址端口转换(Network Address and Port Translation,简称NAPT)的技术。
NAPT技术使用了端口号的概念,除了将IP地址映射到已分配的临时IP地址外,还将端口号映射到正在使用内部计算机的应用程序上。
这样在响应数据被发送回内部计算机时,NAT设备可以根据端口号将数据正确地路由到相应的应用程序中。
NAT技术的工作原理中还涉及到一些其他的重要概念:1.NAT表:NAT设备通过维护一个NAT表来记录内部计算机和临时IP 地址之间的映射关系。
NAT表一般会包含内部计算机的IP地址,临时IP 地址,端口号和其他相关信息等。
2.网络地址转换规则:NAT设备根据一组预定义的转换规则来工作。
NAT穿透技术穿透原理和方法详解
NAT穿透技术穿透原理和方法详解NAT穿透技术是指在网络地址转换(NAT)环境下,通过一系列方法和技术,使内部设备能够与外部设备进行通信和访问。
NAT穿透技术的出现,解决了NAT所带来的通信限制和访问障碍问题,提供了更便捷的网络连接方式。
1. UPnP(Universal Plug and Play):UPnP是一种网络协议,用于自动配置设备和服务的网络通信。
UPnP可以帮助设备自动在NAT设备上创建端口映射,使内部设备能够直接被外部设备访问。
2. STUN(Simple Traversal of UDP through NAT):STUN是一种基于UDP的NAT穿透技术。
通过STUN服务器的中转,可以获取NAT设备的地址信息,进而建立内外设备的连接。
STUN可以通过多种方式获取地址信息,包括使用UDP报文中的IP地址和端口号等。
3. TURN(Traversal Using Relays around NAT):TURN是一种通过中继服务器实现NAT穿透的技术。
当无法直接建立连接时,内部设备可以通过TURN服务器作为中继,通过中继服务器与外部设备进行通信和交换数据。
4. ICE(Interactive Connectivity Establishment):ICE是一种综合利用STUN和TURN的NAT穿透技术。
ICE通过候选地址收集、比较和优选等步骤,选择最优的传输路径,确保内外设备之间的通信畅通。
以上方法中,UPnP是最简单且常用的NAT穿透技术,可以自动配置和映射端口,让内部设备能够被外部设备直接访问。
但是UPnP需要设备和路由器支持,而且由于安全性问题,有些网络中禁用了UPnP。
而STUN、TURN和ICE等技术则依赖于中继服务器和地址信息的获取,相对更加复杂一些,但是可以在更广泛的网络环境中使用。
总结来说,NAT穿透技术通过各种方法和技术,使得内部设备能够与外部设备进行通信和访问。
不同的NAT穿透方法适用于不同的网络环境,选择合适的方法能够提高网络连接和通信的效率。
DHT网络中一种TCP穿越NAT机制
收稿日期:2006201209基金项目:国家高技术研究发展计划项目(2004AA712032)・作者简介:耿福泉(1960-),男,辽宁沈阳人,东北大学博士研究生;赵林亮(1956-),男,山东胶南人,东北大学教授・第28卷第1期2007年1月东北大学学报(自然科学版)Journal of Northeastern University (Natural Science )Vol 128,No.1Jan.2007DHT 网络中一种TCP 穿越NAT 机制耿福泉,陈 浩,方忠民,赵林亮(东北大学信息科学与工程学院,辽宁沈阳 110004)摘 要:针对现有的NA T 穿透方案或者扩展性不好,或者未采用标准的协议栈,或者对移动性支持较差的问题,提出了一种新的TCP 穿越非对称型NA T 的机制网络地址转换的TCP 穿越(Nat TT )・利用公网的代理服务器为准备接受TCP 连接的位于NA T 之后的节点服务・发起TCP 连接的节点和接收TCP 连接的节点通过代理服务器进行协商,而在NA T 上建立了双方都了解的通道・通过这一通道以成功实现TCP 的连接・测试结果表明这一方法是有效的・关 键 词:P2P ;DHT ;NA T 穿越;网络地址转换;TCP中图分类号:TP 393.01 文献标识码:A 文章编号:100523026(2007)0120049204A NAT T raversal Strategy in D HT N et w orkGEN G Fu 2quan ,CHEN Hao ,FA N G Zhong 2m i n ,ZHA O L i n 2liang(School of Information Science &Engineering ,Northeastern University ,Shenyang 110004,China.Correspondent :CHEN Hao ,E 2mail :chenhaoneu @ )Abstract :To solve the existing problems such as the poor expandability during NA T traversal and nonstandard protocol stacks ,a new strategy using TCP called Nat TT is proposed.With the services provided by the agent sever on the Internet ,a routeway of TCP between the initial node and the receival node is thus available.It’s effectiveness can be seen from test results.K ey w ords :P2P ;DHT ;NA T traversal ;network address translater ;TCP最近几年,对等计算P2P (Peer 2to 2Peer )[1]迅速成为计算机界关注的热门话题之一・P2P 打破了传统的Client/Server (C/S )模式,在网络中的每个结点的地位都是对等的,既充当服务器,为其他结点提供服务,同时也享用其他结点提供的服务・目前P2P 研究的重点放在了如何有效地查找信息上,最新的成果都是基于DHT (Distributed Hash Table )[2]的分布式发现和路由算法・DHT 类结构能够自适应结点的动态加入/离开,有着良好的可扩展性、鲁棒性、结点ID 分配的均匀性和自组织能力・DHT 网络的基本原理是:每个节点有惟一的标识符(node Id ),每个消息(或资源)也有一个与node Id 属于同一名字空间(namespace )的标识符(key ),key 和node Id 在名字空间中是相对一致均匀分布的;根据消息的key ,节点能够将消息路由到node Id 与key 最为“接近”的节点・DHT 网络通常有两种搭建方式:一是所有的节点都加入到网络中,所有节点都同等重要,如图1;二是有选择性地让某些节点加入,例如只选择公网中有足够带宽和CPU 资源的节点加入,其他节点通过这些节点加入到DHT 网络,如图2・第一种方法造成很多NA T 后节点功能受限,用途不是很广泛・本文只讨论第二种DHT 网络・图1 所有节点都加入DHT 网络Fig.1 All the node s join DHT net图2 仅部分节点加入DHT网络Fig.2 Only part of the node s join DHT net和其他P2P应用一样,DHT网络中节点间常常需要借助TCP实现端到端之间的通信,但NA T[3]的大量部署破坏了端与端之间的可追溯性・根据文献[3],NA T有以下4种分类,假设数据包从A:X经NA:Y到某公网主机B:J:(1)Full Cone NA T:任何一台主机C都可通过NA:Y与A:X进行通信,即使A:X从未与C 通信过;(2)Restricted Cone NA T:当且仅当A:X曾向C发送过数据包,C才能通过NA:Y与A:X进行通信;(3)Port Restricted Cone NA T:当且仅当A: X曾向C:M发送过数据包,C:M才能通过NA: Y与A:X进行通信,除M之外C不能通过任何端口与A:X通信;(4)Symmetric NA T:对每一个和A:X通信的IP地址和端口,NA T都会分配一个新的映射端口・例如,A:X之后要和B:Q通信,NA T会分配一个新端口Z・下面简要分析这些应用是如何解决NA T穿越问题的:①如果只有一个节点位于NA T后,让此节点发起连接,例如Kazaa[4]・这只是一个部分解决方案,很多情况下通信双方节点都位于NA T后・②动态或手工配置NA T以便将某个特定端口的请求转发到NA T之后某节点,例如Bit Torrent[5]・但是用户通常没有能力或权限配置NA T・③通过中央服务器中转,例如Groove[6]・这种方案代价比较昂贵,因为当节点增多时,需要部署大量服务器・④通过公网节点中转,例如Skype[7],当中转大量数据时,会严重影响该节点性能・⑤利用私有会话发起协议在两个节点间交换UDP端口,然后在UDP之上打TCP隧道,例如Newrong[8]・本文采用标准TCP协议栈以便利用某些最新TCP优化成果,再者,很多网络都不允许使用UDP・1 一种新的TCP穿越NA T机制针对上述方案或扩展性不好,或未采用标准的协议栈,或对移动性支持较差的问题,本文提出了一种新的TCP穿越NA T机制Nat TT(即NA T TCP Traversal的缩写)・在Nat TT中,想随时接受连接请求的节点称为接收节点或接收者,负责某个接收节点存储(注册)的那个节点称为该接收节点的代理・代理的功能是向接收节点提供当前网络地址以及帮助NA T后节点实现穿越・为了保证可用性和可扩展性,代理还可以采用冗余备份,例如,某接收节点的代理的一些后继节点都可以作为该接收节点的代理・如图3・图3 NatTT结构图Fig.3 System architecture of NatTTCone NA T的穿越如图4所示・此外,还可利用文献[9]中第七部分描述的端口预测方法来扩展Nat TT以支持Symmetric NA T穿越,但最新研究指出,NA T零售市场上很少有Symmetric NA T[10],而且Vo IP等新兴业务在Symmetric NA T下表现不佳,本文相信Symmetric NA T会逐渐消失,因此只考虑Cone NA T・过程如下:(1)接收节点注册・步骤1和2是接收节点通过一个U RI向代理注册,UDP、TCP均可,但TCP开销较大,采用UDP(如图2)可以容许更多接收节点注册到每个代理上・接收节点定期向代理发送注册消息,以便代理随时通过NA T向它发送连接请求(步骤4)・(2)查询・步骤3为发起节点想与接收节点建立一条TCP连接,于是向代理(通过DHT算法)发送查询请求・代理首先检查接收节点是否已注册(可能需要和其他代理联系进行确认),若注册,通过其注册地址向它发送一个连接请求(步骤4)・该连接请求带有一个联系参数,以便追踪后续步骤针对那个查询请求,以及通知接收节点发起连接时应该使用的IP地址和端口・代理将最终向发起节点回应一个带有接收节点公有IP地址和05东北大学学报(自然科学版) 第28卷端口的应答(步骤10),以便和它建立一条直接的TCP连接(步骤11)・(3)打洞・步骤5和6为接收者通过连接请求中的地址信息与代理建立TCP连接,告知代理它所使用的地址信息・代理比较接收者的私有IP 地址(R)和公有IP地址(NR),若匹配,说明接收者不在NA T之后,否则接收者为即将从发送者公有IP地址和端口(N I:Y)发送的消息在NA T 上打洞・这里的策略是接收者使用相同的IP地址和端口与代理和发起者通信・因为是在Cone NA T 上打洞,NA T将为这两条TCP连接分配相同的端口・在图4的例子中,发送者使用端口X和代理通信(步骤3),但是代理看到的数据包地址为NA T I:Y・同样,接收者使用端口J但代理看到的地址为NA T R:K・为了打洞,接收者关闭步骤5和6中与代理的连接,并在步骤7中试图使用端口J 和N I:Y发起TCP连接请求,步骤8或者超时,或者返回一个TCP Reset应答,或者返回一个端口在使用错误(NA T I为Full Cone类型),任何一种情况都将导致连接失败,但是很可能在NA T R 上产生了一个R:J到N I:Y的映射(之所以“很可能”是因为NA T R可能因为步骤8的TCP Reset 应答关闭R:J到N I:Y的映射)・步骤8和9之间,接收者在R:J上创建一个监听Socket,然后发送一个连接应答(步骤9)・步骤10中代理通知发起者现在可以通过NR:K和接收者建立直接的TCP连接,步骤11连接建立・图4 Cone NAT穿越Fig.4 Cone NAT traversal2 测试结果分析目前仅仅针对DHT网络中位于不同NA T 后的节点进行了测试・搭建了一个有四个节点的DHT网络(通过Chord算法[11]),其中两个节点在公网上,分别运行Win2K、WinXP(SP2),主频分别为216MHz,117MHz・另两个节点位于不同的NA T后(通过STUN[3]算法测得两个NA T均为Cone类型),也分别运行Win2K、WinXP (SP2),主频分别为214MHz,218MHz・两个私网节点分别注册到两个公网节点上,分别向对方发起TCP连接・进行了大约200次测试,其中每个节点发送100次,观察测得穿越成功率分别达到99%和97%,TCP连接建立延迟从119s到716s15第1期 耿福泉等:DHT网络中一种TCP穿越NA T机制不等・这个结果一方面是因为NA T为Cone类型,另一方面因为测试环境是在学校搭建,网络连通性较好,同时DHT网络只有四个节点,节点查找较快・建议在实际环境中配置时,为步骤7的TCP建立设置一个可配置超时时间(目前设置为2s),同时将Nat TT根据STUN[3]和NA T中继穿越(TU RN)扩展以支持UDP穿越以及TCP、UDP中转・另外,对上例中两个公网节点进行仿真测试,观测到两个节点每秒分别可负载超过10000和7000个UDP注册(步骤1和2),节点每隔1min 重送一个UDP注册,因此这两个代理分别可负载大约600000和420000个接收节点・这不包括冗余代理和偶尔的查找以及连接请求带来的开销,相信这个开销不会太大・在实际的DHT网络中,公网节点负责的节点注册远远达不到此数目,因此像Skype一样,通常用户可以承担这些额外的开销・3 结 论本文提出了一种DHT网络中TCP穿越NA T机制,由某个节点协调位于NA T后的节点间的通信,而不是负责具体通信的中转,保证了系统的高可扩展性和良好的性能・同时采用标准的TCP协议栈,不仅有助于和其他系统的兼容,还便于利用某些最新TCP优化・下一步的工作就是扩展Nat TT以支持UDP穿越,同时借鉴交互式连接建立(ICE)的工作方式实现Symmetric NA T 的穿越・参考文献:[1]Tsirtsis G,Srisuresh work address translation2protocoltranslation(NAT2PT)[S/OL].[2005-10-21].http:∥/rfc/rfc2766.txt.[2]罗杰文・Peer to Peer(P2P)综述[EB/OL]・[2005-10-21]・http:∥/users/luojw/papers/p2p.htm.(Luo Jie2wen.Peer to peer(P2P)summary[EB/OL].[2005-10-21].http:∥/users/luojw/papers/p2p.htm.)[3]Rosenberg J,Weinberger J,Huitema C,et al.STUN2simple traversal of user datagram protocol(UDP)throughnetwork address translators(NATs)[S/OL].[2005-10-21].http:∥/rfc/rfc3489.txt.[4]Jessup T.How K azaa works.Utah Education NetworkSummit[EB/OL]・[2005-10-21].http:∥www.ndnn.org/blog/downloads/summit/U ENSummit-Peer-2-Peer.ppt.[5]Bit Torrent.FAQ[EB/OL].[2005-10-12].http:∥/FAQ.html.[6]Groove Networks.Groove web services[EB/OL].[2005-10-21].http:∥/pdf/wpgroove-web-services.pdf.[7]Skype Technologies S A.Skype explained[EB/OL].[2005-10-21].http:∥/products/explained.html.[8]Newrong Inc.NAT traversal SD K[EB/OL].[2005-10-25].http:∥/en/product/index.html.[9]Guha S,Takeda Y,Francis P.NU TSS:a SIP2basedapproach to UDP and TCP network connectivity[C]∥SIGCOMM’04Workshops.Portland,2004:43-48. [10]Jennings C.NAT classification results using STUN.IETFInternet draft[EB/OL].[2005-10-21].http:∥www./internet2drafts/draftjennings2midcom2stun2results202.txt.[11]Stoica I,Morris R,K arger D,et al.Chord:a scalable peer2to2peer lookup service for Internet applications[C]∥Proceedings of the ACM SIGCOMM’01Conference.SanDiego,California,2001:149-160.25东北大学学报(自然科学版) 第28卷。
端到端通信中TCP穿越NAT的解决方案
制使 得 网络地址 翻译 ( A N tokA desTas N T, e r d rs rn — w li ) a o 设备得 到 广 泛 应 用 。N T设 备 允许 或不 安 全 等弊 端 。文章 给 出 了一 种 称 为 “ C T P打 孔 ” 的方 法 , 以较 好 地 实 现 可
互联网
( 公罔 I P地址域)
() 1 全克 隆 ( ul o e : A F l C n ) N T把所 有 来 自相 同
内部 I P地址 和 端 口 的请 求 映 射 到 相 同 的 外 部 I P 地址 和 端 口。任 何 一 个外 部 主 机均 可通 过 该 映 射 发送 I P包到该 内部 主机 。
公网 I P地 址 公 网 I 址 公 网 I 址 公 网 I P地 P地 P地 址
1 NA T的 类 型
N T设 备 的类 型对 于 T P穿越 N T 有 着 十 A C A , 分重 要 的影 响 , 据 端 口映 射方 式 , A 根 N T可 分 为 如 下 4类 , 3种 N T类 型可 统称 为 cn 前 A o e类 型 。
维普资讯
第2 7卷 第 19期 5
・
电
力 系
统
通
信
Vo . 7 No. 5 12 19
1 ・ 0
2 06 1 1 0 年 月 0日
T l o m nct n rE et c P w rS s m e c m u ia o s o lc i o e yt e i f r e
( ) 制 性 克 隆 ( etce o e : A 2限 R s it C n ) N T把 所 r d
地址
有来 自相 同 内部 I 址 和端 口的请求 映射 到相 同 P地 的外 部 I 址 和 端 口。但 是 , P地 只有 当 内部 主 机 先 给 I 址 为 x 的外 部 主机 发送 I P地 P包 , 外 部 主机 该 才 能 向该 内部 主机发 送 I P包 。
tracker服务器及DHT网络
n. 追踪者tra cker就是缓存关于种子文件所有持有者和下载者的I P地址及路由信息,完成度等等的一个数据库,所有的持有者和下载者都向同一个trac ker提交自己的信息,trac ker收集这些信息并根据BT客户端的请求返回这些信息,也就是说你得周期性的更新这张表以获得最新的客户端信息,t racke r服务器本身不持有你下载文件的任何片段。
什么是DHT网络?D HT全称叫分布式哈希表(Dis tribu ted H ash T able),是一种分布式存储方法。
在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DH T网络的寻址和存储。
新版Bit Comet允许同行连接DHT网络和Tra cker,也就是说在完全不连上[Trac ker服务器的情况下,也可以很好的下载,因为它可以在DHT网络中寻找下载同一文件的其他用户。
BitC omet的DHT网络协议和Bi tTorr ent今年5月测试版的协议完全兼容,也就是说可以连入一个同D HT网络分享数据。
另外,这里使用的DHT算法叫Kade mlia(在eMul e中也有使用,常把它叫做KAD,具体实现协议有所不同)。
如何使用DHT网络?在B itCom et中,无须作任何设置即可自动连接并使用DHT网络,完全不需要用户干预。
BitC omet使用和TCP端口号相同的UDP端口进行DH T网络连接。
如果要完全禁用DH T网络,可以在选项-高级-网络连接中禁用DHT网络。
对于种子制作者,可以参考:种子文件制作内网能使用DH T网络吗?可以使用。
NAT穿越技术研究及实现
NAT穿越技术研究及实现NAT(Network Address Translation,网络地址转换)是一种网络技术,通常用于将私有网络中的IP地址转换为公共网络的IP地址,以便实现与公共网络的通信。
然而,在一些情况下,需要在私有网络中的主机之间直接通信,而不经过NAT设备的转换。
这就需要使用NAT穿越技术。
在实现NAT穿越技术时,主要有以下几种方法:1.反向连接:这种方法是在私有网络中的主机主动向公共网络中的主机发送连接请求,然后公共网络中的主机再发起一个反向的连接请求来建立连接。
这种方法可以绕过NAT设备的转换,但需要公共网络中的主机能够接受外部连接。
2.中继服务器:这种方法是在公共网络中设置一个中继服务器,私有网络中的主机通过中继服务器进行通信。
中继服务器充当了一个桥梁的角色,可以帮助私有网络中的主机建立直接的点对点连接。
这种方法需要有一个可信赖的中继服务器,并增加了网络延迟。
3.UDP打洞:这种方法是利用UDP协议的一些特性,通过在NAT设备上生成映射规则,使私有网络中的主机能够直接与公共网络中的主机通信。
具体步骤是,私有网络中的主机发送一个UDP包给公共网络中的主机,此时NAT设备会生成一条映射规则,将公共网络中的数据包转发到私有网络中的主机。
1.NAT设备的类型:不同的NAT设备采用不同的转换规则,因此在实现NAT穿越技术时,需要针对特定类型的NAT设备设计相应的解决方案。
2.端口映射:NAT设备通常会对IP地址和端口进行映射转换。
在实现NAT穿越技术时,需要确定私有网络中的主机的公共网络端口是如何映射到私有网络中的端口的。
3.安全性:NAT穿越技术涉及到跨越网络边界的通信,因此需要考虑安全性的问题。
在设计和实现NAT穿越技术时,需要采取相应的安全措施,以确保通信的安全性和可靠性。
总之,NAT穿越技术是一种允许私有网络中的主机直接通信的技术。
它可以通过反向连接、中继服务器、UDP打洞等方法实现。
pwnat原理
pwnat原理pwnat是一种用于绕过NAT(Network Address Translation)设备的技术,它允许在两个基于IPv4的主机之间建立直接的TCP/IP连接,而无需在NAT设备上做任何配置或端口映射。
pwnat的原理是通过在目标主机和源主机之间建立一个具有相同IP地址和端口的虚拟连接,使得NAT设备无法区分这两个主机之间的真实数据流。
下面将详细介绍pwnat的工作原理。
在传统的网络环境中,当一个主机请求与另一个主机建立TCP/IP连接时,它会向自己所在的NAT设备发送请求。
NAT设备会检查请求的源IP 地址和端口,并将其翻译成合法的公网IP地址和端口,然后将请求发送到目标主机。
目标主机通过回复数据包来建立连接,但是这个回复数据包是发送给NAT设备的,NAT设备会根据预先定义的映射规则将该包转发给源主机,从而建立了一个双向的连接。
而pwnat则通过利用NAT设备处理UDP(User Datagram Protocol)数据包的方式来实现直接的TCP/IP连接。
当源主机向目标主机发起连接请求时,并不是直接发送TCP数据包,而是发送一个经过处理的UDP数据包。
这个UDP数据包是经过pwnat客户端修改过的,将TCP的握手数据封装在UDP数据包的负载中。
在NAT设备收到这个经过处理的UDP数据包后,它会将该数据包转发给目标主机,并且会为这个UDP数据包建立一个NAT映射。
目标主机收到这个UDP数据包后,它会将数据包进行解包,并且提取出TCP握手数据。
然后,目标主机通过一个普通的TCP数据包响应该请求,并且将这个TCP 数据包封装在一个特殊格式的UDP数据包内发送回给源主机。
当源主机收到这个特殊格式的UDP数据包时,它会解包该数据包,并提取出TCP数据包。
这样,源主机和目标主机之间就建立了一个直接的TCP/IP连接。
之后的数据通过该连接传输,不再需要经过NAT设备。
值得注意的是,pwnat并不是一种新的技术,它只是利用了NAT设备对UDP数据包处理的特殊性来绕过端口映射的限制。
《穿越NAT的技术》课件
STUN
通过STUN协议可以判断NAT类型,并通过一系列的技术手段帮助实现穿透。
2
TURN
TURN是一种中继服务器,当直接通信无法建立时,可以通过TURN服务器建立 通信连接。
3
ICE
ICE是一种复合协议,结合STUN和TURN等技术,提供一种更加强大的NAT穿透 解决方案。
4. NAT穿透实现
1
远程桌面
NAT穿透技术可以帮助实现远程 桌面连接,方便用户远程控制和 访问本地计算机。
6. 总结
NAT穿透技术的发展历程
随着网络和应用需求的发展,NAT穿透技术也在不断演进和改进。
NAT穿透技术的局限性
尽管NAT穿透技术可以解决一些连接性问题,但仍存在一定的限制和局限性。
未来发展方向
随着IPv6的普及和引入新的技术,NAT穿透技术的未来发展充满了潜力。
《穿越NAT的技术》PPT 课件
# 穿越NAT的技术Leabharlann . NAT简介什么是NAT
NAT是网络地址转换的缩写,是一种用于将内部网络地址转换为外部网络地址的技术。
NAT的作用及优点
NAT技术可以帮助解决IPv4地址瓶颈问题,提高网络安全性,并减少IP地址的使用。
NAT的工作原理
NAT通过修改数据包的源IP地址和目标IP地址来实现内部网络与外部网络的通信。
2. NAT的问题
NAT对网络架构的限制
NAT会导致网络拓扑结构变得 更加复杂,并增加管理和维护 的难度。
NAT对P2P的影响
NAT会阻碍P2P应用程序的连接 性,使其难以建立直接对等的 连接。
NAT对服务器架设的影响
NAT会对服务器的架设和远程 访问造成一定的限制和困扰。
bt协议详解DHT篇(上)
bt协议详解DHT篇(上)bt协议详解 DHT篇(上)最近开发了⼀个的⽹站,突然产⽣了仔细了解bt协议的想法,这篇⽂章是bt协议详解系列的第三篇,后续还会写⼀些关于搜索和索引的东西,都是在开发这个⽹站的过程中学习到的技术,敬请期待。
⽂章主要内容来⾃于对的翻译,如果⼤家感兴趣的话,可以阅读⼀下英⽂原版。
为了⼤家阅读的⽅便,把⽂章分成了上下篇,两篇加在⼀起快1w字了,确实看的⽐较累。
1 简介前⾯讲到BT协议像tcp/ip协议⼀样是⼀个协议簇,dht协议在这个协议簇中出现的⽐较晚,但是它所发挥的作⽤却不容⼩视。
dht协议提出的⼀些新的想法让我们能够推翻中的设计,得到⼀个更简单更⾼效的bt服务器和bt客户端。
在dht协议中,bt客户端使⽤“distributed sloppy hash table”(DHT的全称)来存储没有tracker地址的种⼦⽂件所对应的peer节点的信息,在这种情况下,每⼀个peer节点变成了⼀个tracker服务器,dht协议是在udp通信协议的基础上使⽤Kademila(俗称Kad算法)算法实现。
重要:注意这⾥使⽤的术语,⼀个peer节点是⼀个实现了bt协议并且开启了tcp监听端⼝的bt客户端或者服务器。
⼀个node节点是⼀个实现了dht协议并且开启了udp监听端⼝的bt客户端或者服务器,这两者⾮常容易混淆。
dht由很多node节点以及这些node节点保存的peer地址信息组成,⼀个bt客户端包括了⼀个dht node节点,通过这些节点来和dht⽹络中的其它节点通信来获取peer节点的信息,然后再通过bt协议从peer节点下载⽂件。
看到这⾥⼤家应该明⽩了,dht协议并不能取代bt协议,它只是bt协议的⼀个强有⼒的补充,在⼀些禁⽌运⾏bt tracker服务器的国家,通过使⽤dht协议,⽤户照样可以下载想要的内容。
tracker服务器本来也不保存真正的⽂件,只是保存和torren⽂件相关的peer的信息,dht协议通过从附近的node节点获取peer信息,⽽不是从tracker服务器获取peer信息,这就是所谓的trackerless。
穿越NAT建立TCP连接
困难 , : 譬如 当主叫用户对处于 N T后 的被叫发起 A 会话请求时 , 由于此时被 叫用户尚未在 其 N T上 A
留下端 口映射关 系, 因此主叫不知道 目的端 口号 , N T设备也 不知道 该往 内网何处 转发外 来 的请 A
收到本 文时间 :0 6年 2月 2 20 1日
的 I 地址就能连接到外部 网络。位于 内部网络 P
连接将会更加困难 。 目 前利用 U P穿越 N T已经发展 的比较成 D A
熟, 主要利用 “ o uci ” H l P nhn 方法 , e g 其实现思想对
和外部网络之间的 N T设备负责实现 内网现方式 , A 目前 使 用 最 广 泛 的 是 N P N tok d rs P r A T( e r A des ot w Tas tn , r l i ) 它是通过修改数据包 的 I n ao P地址和传 输层 ( D U P或 T P 端 1来把不同内部地址端 口对 C) 3 映射到同一个对外 I P地址的不同端 口上。本文只 针对 N P A T进行讨论 。
于 T P的情况有借鉴和启发作用。 C
2 穿越 N T的原理 A
2 1 N T的性 质 . A
按照 R C38 - (T N协议 ,ip r e — F 4 92 SU S l Ta r m e vs
N T的存在给通信双方建立会话 连接带来了 A
a o U Pt og A s的解释可以把 N P l f D r hN T ) hu A T分为
的方法 。 关键词 : 穿越 N T T N C U P A S U T P D
中图分 类号
T 33 P 9
T CP n e tvt h o g t r d esTr n ltr Co n c i T r u h Newo k Ad r s a sa o s i y
nat穿越原理
nat穿越原理NAT(Network Address Translation)是一种在本地网络中使用的网络转换技术。
它的作用是将私有IP地址转换为公共IP地址,以便实现内部主机与公共网络进行通讯。
尽管 NAT 在局域网中广泛使用,但有些时候,由于一些原因,我们需要进行 NAT 穿透,以便让公共网络中的主机可以与局域网中的主机直接通讯。
本文将介绍 NAT 穿越的原理以及相关的技术和方法。
一、NAT 穿越的原理NAT 穿越(NAT Traversal)是指在网络中,经过 NAT 设备的数据包可以穿越 NAT 网关,从而实现传输的技术方式。
当内网的主机需要使用 P2P 技术、VoIP、视频会议等需要直接通讯的应用时,就需要 NAT 穿越技术。
NAT 穿越技术基于UDP协议,通过一个可探测的中转服务器,使外部的主机可以向内部的主机发送UDP数据包。
这种技术类似于端口转发,只是通过中间服务端实现。
NAT设备自身并不具备进行 NAT 穿越的能力,所以需要使用一些技术和协议来实现。
通常情况下,NAT穿越可以通过以下几种方式:1. UPnP(Universal Plug and Play in)协议:UPnP 协议是一种基于Internet的新一代设备互通性协议。
UPnP协议能够自动在NAT设备上建立端口映射规则,这样内部网络的设备就能在公网的设备中被访问到。
2. STUN(Session Traversal Utilities for NAT)协议:STUN协议是专门为NAT穿越而设计的协议,它可以检测NAT设备的类型,外部IP地址和端口。
使用STUN协议后,每个内部主机就可以获取到一个公网IP地址,从而实现P2P直接通讯。
3. TURN(Traversal Using Relay NAT)协议:TURN 协议也是一种专门用于NAT穿越的协议,它会在中介服务器上建立一条转发通道,从而实现内部和外部主机的通讯。
DHT网络中一种TCP穿越NAT机制
DHT网络中一种TCP穿越NAT机制DHT(分布式哈希表)是一种分布式的键值存储系统,它通过使用哈希函数将键值映射到一组节点上来实现存储和检索数据。
在DHT网络中,节点之间通过互相通信来存储和检索数据,但由于现实世界中存在大量的网络地址转换(NAT)设备,它们会限制节点之间的直接通信。
为了在DHT网络中穿越NAT,人们提出了一些方法和技术。
一种常见的TCP穿透NAT机制是使用中继节点。
在DHT网络中,中继节点充当转发器的角色,它们接收来自外部节点的连接请求,并将这些请求转发给位于NAT后面的内部节点。
通过中继节点,内部节点可以与外部节点进行通信,实现数据的传输和检索。
下面是一种使用中继节点穿越NAT的具体实现方式:1.外部节点发起连接请求到中继节点。
外部节点可以是DHT网络中的其他节点,也可以是位于NAT之外的设备。
2.中继节点接收到连接请求后,回复一个确认消息,表示愿意接受该连接。
3.外部节点和中继节点之间建立一个TCP连接。
为了确保连接的可靠性和安全性,可以使用一些加密和校验机制,比如TLS。
4.中继节点向NAT设备发起连接请求,请求让位于NAT之后的内部节点与中继节点建立连接。
5.NAT设备接收到中继节点的连接请求后,根据NAT类型的不同,会采取不同的穿透方式来建立连接。
比如,如果是对称NAT,NAT设备会在NAT维护的映射表中添加一条将外部节点的IP地址和端口映射到中继节点的IP地址和端口的记录。
6.一旦位于NAT之后的内部节点和中继节点成功建立连接,中继节点就可以将外部节点的请求转发给内部节点,实现数据的传输和检索。
7.内部节点通过中继节点将结果返回给外部节点。
8.中继节点在将结果返回给外部节点之前,可以对数据进行一些加工和处理,以保护内部节点的隐私和安全。
使用中继节点的TCP穿透NAT机制在DHT网络中被广泛应用,因为它能够克服NAT设备所带来的限制,实现节点之间的直接通信。
然而,由于中继节点需要将数据转发给内部节点,会增加一些额外的延迟和带宽消耗。
【精品】UDPTCP打洞穿越NAT技术
【关键字】精品(转)UDP/TCP 打洞(穿越NAT)技术2010-04-17 16:03转自:内容概述:在p2p通信领域中,由NAT(Network Address Translation,网络地址转换)引起的问题已经众所周知了,它会导致在NAT内部的p2p 客户端在无论以何种有效的公网ip都无法访问的问题。
虽然目前已经发展出多种穿越NAT的技术,但相关的技术文档却很少,用来证明这些技术的稳定性和优点的实际数据更少。
本文的目的在于描述和分析在实际中运用得最广泛、最可靠同时也是最简单的一种NAT穿越技术,该技术通常被称为“打洞”技术。
目前,“打洞”技术已经在UDP通信领域中得到了广泛的理解和应用,在此,也将讨论如何利用它实现可靠的p2p 的TCP流通信。
在收集了大量的“打洞”技术可以穿越的NAT设备和网络的数据以后,我们发现82%的已测NAT设备支持UDP形式的“打洞”穿越,64%的已测NAT设备支持TCP流形式的“打洞”穿越。
由于重量级p2p应用程序(如,VOIP、BT、在线游戏等)的用户需求量持续上升,并且该事实也已经引起了NAT设备生产厂商的广泛关注,因此,我们认为未来会有越来越多的NAT设备提供对“打洞”穿越技术的支持。
1、介绍用户量高速增长以及大量安全问题的巨大压力迫使Internet技术不断向前发展,但是这些新兴的技术很大程度地增加了应用程序开发的成本和复杂性。
Internet最初的地址体系是每个节点有一个唯一不变的全局地址,可以通过该地址直接与任何其它的节点进行通信,而现如今,该地址体系已经被新的实际上广泛使用的地址体系所替换,新的地址体系是由全局地址域和通过NAT接入全局地址域的大量私有地址域组成。
在新的地址体系中(如图1所示),只有在“main”全局地址域中的节点可以在网络中很容易地与任何其它的拥有全局地址的节点通信,因为该节点拥有全局的、唯一的、可路由的地址。
在私有网络中的节点可以与在同一个私有网络中的其它节点进行通信,并且在通常情况下可以向全局地址中的某个“著名”的节点发起TCP连接或发送UDP数据包。
ipsec nat穿越原理
ipsec nat穿越原理IPSec(Internet Protocol Security)是一种在网络通信中提供安全性的协议。
它通过加密和认证机制来保护数据的传输过程,防止数据在传输过程中被窃取或篡改。
而NAT(Network Address Translation)则是一种网络地址转换技术,将私有网络内部的IP地址转换为公共网络地址,以实现内部网络与外部网络的通信。
在网络通信中,当需要在不同私有网络之间建立安全通道时,IPSec 和NAT穿越技术的结合就显得尤为重要。
IPSec本身并不兼容NAT,因为IPSec在传输过程中对IP头部进行了加密,而NAT则需要访问IP头部中的信息来实现地址转换。
因此,如果直接在经过NAT 设备的网络中使用IPSec,就会导致IPSec加密后的IP头部信息被篡改,从而无法正确解密,造成通信失败。
为了解决IPSec和NAT之间的兼容性问题,IPSec NAT穿越技术应运而生。
其基本原理是在经过NAT设备的网络中,将IPSec加密的数据包进行特殊处理,以便在经过NAT设备时能够正确解密。
具体而言,通过在IPSec数据包中添加额外的头部信息,将原始IP头部信息保存在额外头部中,然后在经过NAT设备时,NAT设备只对原始IP头部进行地址转换,而不对额外头部进行操作,从而保证IPSec数据包的完整性和安全性。
在IPSec NAT穿越的过程中,需要考虑到两种情况:一种是在NAT 设备后端的主机是IPSec终端设备,另一种是在NAT设备后端的主机不是IPSec终端设备。
对于第一种情况,需要在NAT设备上配置IPSec穿越规则,以确保IPSec数据包能够正确穿越NAT设备并到达目标IPSec终端设备;对于第二种情况,需要在NAT设备上配置IPSec透明代理,以实现将IPSec数据包正确转发到目标主机上。
总的来说,IPSec NAT穿越技术通过在IPSec数据包中添加额外头部信息,保证了在经过NAT设备时数据包的完整性和安全性。
端到端的TCP的NAT穿越
根据 最 新 I E T F标 准 l 3 l 。 NAT类 型 按 映 射 和过 滤 策 略进行 重 新定 义分 类 . 见表 l 、 表2 。
表 1 映 射 策 略
映射 策 略
终 端 无 关 性 映 射 地 址 依 赖 性 映 射
故本 文不 作单 独 的考虑 。
根 据 上 述 原 理 ,本 文 使 用 开 源 代 码 S T N T U — MA N 进 行 检测 。S T N T U MA N 支持 R F C 5 3 8 9 、 R F C 5 7 8 0标准 。 该开 源代码 提供 的 S T N 服务器 有 U
,
地址 ,与端 口无关 。另 一种 是地 址 与端 口依赖性 映 射, 即只要 目的地址 与端 口中有一 个发 生变 化 就 要 使 用 不 同的映射 地址 。端 口预 测机 制也 将在这 两种
重 新 定义 了 S T UN 消息 中的几 个 属性 值 : C H A NG E —
R Z Q UE S T、 R E S P O NS E — O R / G N、 I ( 眦 R . A D D R l E S S 、
RES PO N S E— PORT 。
一
终 端 依 赖 性 映 射 下 NA T 的地 址 映 射 分 为 两
在 回 复 的 绑 定 响 应 中 将 外 网 地 址 写 进 属 性 Xo R — MAP P E D— AD DR ES S中 ,客 户 端 就 可 以从 响 应 中提取 自己的外 网地 址 。
2 . 1 类 型分 类
穿越 。对 于采用 终端 无 关性 过滤 策 略 的 NA T, 即对 外来 的包 不过 滤 。 这 种 NAT不 会影 响 P 2 P的通 信 ,
coturn 原理
coturn 原理coturn原理coturn是一种用于实现Traversal Using Relays around NAT (TURN)协议的服务器软件。
它的主要作用是解决在网络通信中遇到的NAT穿越问题。
在介绍coturn的原理之前,我们先了解一下什么是NAT穿越。
NAT(Network Address Translation)是一种网络地址转换技术,它允许多个主机通过一个公共IP地址进行互联网访问。
然而,由于NAT的存在,直接进行点对点的通信变得困难。
当两个主机处于不同的NAT网络中时,它们无法直接建立起连接。
这时就需要使用TURN协议来解决这个问题。
TURN协议是一种用于实现NAT穿越的协议,它允许主机通过一个可信任的中间服务器进行通信。
其中,coturn就是一种TURN服务器。
coturn的工作原理如下:1. 客户端发起通信请求:当两个主机需要进行通信时,它们首先会向coturn服务器发起通信请求。
这个请求包含了客户端的一些信息,比如IP地址、端口号等。
2. 分配转发地址:coturn服务器收到请求后,会为客户端分配一个转发地址。
转发地址是一个公共的IP地址和端口号,它可以被两个主机用来建立连接。
3. 转发通信数据:一旦转发地址被分配,coturn服务器就会开始转发两个主机之间的通信数据。
它会将从一个主机接收到的数据转发给另一个主机,从而实现两个主机之间的直接通信。
4. 保持连接:coturn服务器会定期发送保持连接的消息给两个主机,以确保连接的稳定性。
同时,它也会监测连接的状态,如果发现连接断开,就会尝试重新建立连接。
coturn的原理可以简单总结为:客户端通过coturn服务器进行通信,coturn服务器分配转发地址并实现两个主机之间的直接通信。
这样就解决了NAT穿越的问题,使得网络通信更加便捷和稳定。
总结一下,coturn是一种用于实现NAT穿越的TURN服务器软件。
它通过分配转发地址和转发通信数据,解决了NAT网络中主机之间无法直接通信的问题。
NAT穿越的原理和介绍(p2p核心协议和原理)
3.端口受限制锥形(Port Restricted Cone) 端 口受限制锥形类似于受限制锥形,但限制更 加严格.只有当内部主机曾经向外部主机地 址上的某个特定端口发送过数据包,这个外 部主机才可以用该特定端口向内部主机发送 数据.可以理解为对外部主机的IP地址和端 口同时进行了限制.图3表示了端口受限制锥 型的概念.
三,STUN协议 协议
一旦客户端得知了Internet端的UDP端口,通 信就可以开始了.如果NAT是完全圆锥型的, 那么双方中的任何一方都可以发起通信.如果 NAT是受限圆锥型或端口受限圆锥型,双方必 须一起开始传输. 需要注意的是,要使用STUN RFC中描述 STUN 的技术并不一定需要使用STUN STUN协议——还可以 STUN 另外设计一个协议并把相同的功能集成到运行 该协议的服务器上. SIP之类的协议是使用UDP分组在Internet 上传输音频和/或视频数据的.不幸的是,由于 通信的两个末端往往位于NAT之后,因此用传 统的方法是无法建立连接的.这也就是STUN STN Client只设 置了"改变端口" 标志.
图5 NAT类型判断图
该流程中使用了3个测试. 在测试I中,STUN Client发送STUN绑定请求给 STUN Server,没有设置CHANGE-REQUEST 和RESPONSE-ADDRESS属性,这引起服务器 用收到请求的地址和端口发送回复. 在测试II中,STUN Client设置了CHANGEREQUEST属性中的"改变IP"和"改变端口" 标志.则STUN Server用另外一个地址和端口为 客户端发送响应回复. 在测试III中,STUN Client只设置了"改变端口" 标志.
IPsecNAT穿越
IPsecNAT穿越IPsecNAT穿越是一种网络技术,用于解决IPsec协议在NAT环境下的通信问题。
本文将介绍IPsecNAT穿越的背景和原理,并探讨其在实际应用中的挑战和解决方案。
一、背景介绍在传统的网络环境中,IPsec协议已被广泛应用于保证网络通信的安全性。
然而,在存在网络地址转换(Network Address Translation,NAT)的情况下,IPsec协议会面临一些挑战。
NAT会改变IP报文的源IP地址和目的IP地址,打破IPsec协议中源地址和目的地址的匹配关系,从而导致IPsec通信失败。
为了克服这一问题,人们提出了IPsecNAT穿越技术,旨在解决IPsec协议在NAT环境下的通信难题。
二、IPsecNAT穿越原理1. NAT Transparency(NAT透明)IPsecNAT穿越技术通过实现NAT透明,使得NAT设备能够正确地处理经过NAT的IPsec报文。
它在IPsec数据包中添加必要的信息来维护IPsec会话,使得NAT设备能够正确地转发IPsec数据包。
2. NAT Traversal(NAT穿越)NAT穿越是IPsecNAT穿越的核心原理之一。
它通过在IPsec报文中插入额外的头部信息,使得经过NAT设备的IPsec报文能够正常到达目的地。
三、IPsecNAT穿越的挑战尽管IPsecNAT穿越技术提供了一种解决方案,但在实际应用中仍面临一些挑战。
1. NAT类型的差异不同类型的NAT设备对IPsecNAT穿越的支持程度不尽相同。
某些NAT设备可能无法正确处理IPsec报文,导致通信失败。
2. 防火墙配置限制部分防火墙可能会对IPsec通信进行限制,从而影响IPsecNAT穿越的实现。
这需要对防火墙进行相应的配置,在确保安全性的前提下实现IPsecNAT穿越。
3. 性能影响IPsecNAT穿越技术会增加通信的复杂性,导致一定的性能影响。
在大流量的场景下,IPsecNAT穿越可能导致网络延迟增加和吞吐量下降。
ipsec nat穿越原理
ipsec nat穿越原理IPSec是一种用于保护网络通信安全的协议套件,而NAT(Network Address Translation)则是一种网络地址转换技术。
在实际网络通信中,IPSec和NAT常常结合使用,以实现安全的数据传输。
本文将探讨IPSec穿越NAT的原理及相关技术细节。
我们需要了解IPSec的基本原理。
IPSec通过对数据进行加密和认证,确保数据在传输过程中不会被窃听或篡改。
它包括两个主要协议:AH(Authentication Header)和ESP(Encapsulating Security Payload)。
AH提供数据完整性和认证,而ESP则提供数据加密和机密性。
然而,当网络中存在NAT设备时,IPSec通常会遇到一些问题。
NAT会修改数据包的IP头部信息,导致IPSec协议中的加密和认证信息无法正确处理。
这就需要一些特殊的技术来解决IPSec穿越NAT的问题。
一种常用的方法是使用NAT-T(NAT Traversal)技术。
NAT-T允许在IPSec中封装加密后的数据包,并通过UDP协议传输。
这样可以绕过NAT设备对IP头部信息的修改,确保IPSec协议能够正常工作。
另一种方法是使用IKEv2(Internet Key Exchange version 2)协议。
IKEv2支持在NAT环境下的IPSec通信,通过在NAT设备上打洞(NAT Traversal)来实现数据传输。
这种方法比NAT-T更加灵活和高效。
除了NAT-T和IKEv2,还有一些其他技术可以帮助IPSec穿越NAT。
例如,在NAT设备上配置特殊的端口映射规则,或者使用中间设备进行数据转发。
这些方法都可以有效解决IPSec在NAT环境下的通信问题。
总的来说,IPSec穿越NAT的原理是通过特殊的技术手段,确保IPSec协议在存在NAT设备的网络环境中正常工作。
这些技术包括NAT-T、IKEv2等,它们通过绕过NAT设备对IP头部信息的修改,实现安全的数据传输。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
收稿日期:2006201209基金项目:国家高技术研究发展计划项目(2004AA712032)・作者简介:耿福泉(1960-),男,辽宁沈阳人,东北大学博士研究生;赵林亮(1956-),男,山东胶南人,东北大学教授・第28卷第1期2007年1月东北大学学报(自然科学版)Journal of Northeastern University (Natural Science )Vol 128,No.1Jan.2007DHT 网络中一种TCP 穿越NAT 机制耿福泉,陈 浩,方忠民,赵林亮(东北大学信息科学与工程学院,辽宁沈阳 110004)摘 要:针对现有的NA T 穿透方案或者扩展性不好,或者未采用标准的协议栈,或者对移动性支持较差的问题,提出了一种新的TCP 穿越非对称型NA T 的机制网络地址转换的TCP 穿越(Nat TT )・利用公网的代理服务器为准备接受TCP 连接的位于NA T 之后的节点服务・发起TCP 连接的节点和接收TCP 连接的节点通过代理服务器进行协商,而在NA T 上建立了双方都了解的通道・通过这一通道以成功实现TCP 的连接・测试结果表明这一方法是有效的・关 键 词:P2P ;DHT ;NA T 穿越;网络地址转换;TCP中图分类号:TP 393.01 文献标识码:A 文章编号:100523026(2007)0120049204A NAT T raversal Strategy in D HT N et w orkGEN G Fu 2quan ,CHEN Hao ,FA N G Zhong 2m i n ,ZHA O L i n 2liang(School of Information Science &Engineering ,Northeastern University ,Shenyang 110004,China.Correspondent :CHEN Hao ,E 2mail :chenhaoneu @ )Abstract :To solve the existing problems such as the poor expandability during NA T traversal and nonstandard protocol stacks ,a new strategy using TCP called Nat TT is proposed.With the services provided by the agent sever on the Internet ,a routeway of TCP between the initial node and the receival node is thus available.It’s effectiveness can be seen from test results.K ey w ords :P2P ;DHT ;NA T traversal ;network address translater ;TCP最近几年,对等计算P2P (Peer 2to 2Peer )[1]迅速成为计算机界关注的热门话题之一・P2P 打破了传统的Client/Server (C/S )模式,在网络中的每个结点的地位都是对等的,既充当服务器,为其他结点提供服务,同时也享用其他结点提供的服务・目前P2P 研究的重点放在了如何有效地查找信息上,最新的成果都是基于DHT (Distributed Hash Table )[2]的分布式发现和路由算法・DHT 类结构能够自适应结点的动态加入/离开,有着良好的可扩展性、鲁棒性、结点ID 分配的均匀性和自组织能力・DHT 网络的基本原理是:每个节点有惟一的标识符(node Id ),每个消息(或资源)也有一个与node Id 属于同一名字空间(namespace )的标识符(key ),key 和node Id 在名字空间中是相对一致均匀分布的;根据消息的key ,节点能够将消息路由到node Id 与key 最为“接近”的节点・DHT 网络通常有两种搭建方式:一是所有的节点都加入到网络中,所有节点都同等重要,如图1;二是有选择性地让某些节点加入,例如只选择公网中有足够带宽和CPU 资源的节点加入,其他节点通过这些节点加入到DHT 网络,如图2・第一种方法造成很多NA T 后节点功能受限,用途不是很广泛・本文只讨论第二种DHT 网络・图1 所有节点都加入DHT 网络Fig.1 All the node s join DHT net图2 仅部分节点加入DHT网络Fig.2 Only part of the node s join DHT net和其他P2P应用一样,DHT网络中节点间常常需要借助TCP实现端到端之间的通信,但NA T[3]的大量部署破坏了端与端之间的可追溯性・根据文献[3],NA T有以下4种分类,假设数据包从A:X经NA:Y到某公网主机B:J:(1)Full Cone NA T:任何一台主机C都可通过NA:Y与A:X进行通信,即使A:X从未与C 通信过;(2)Restricted Cone NA T:当且仅当A:X曾向C发送过数据包,C才能通过NA:Y与A:X进行通信;(3)Port Restricted Cone NA T:当且仅当A: X曾向C:M发送过数据包,C:M才能通过NA: Y与A:X进行通信,除M之外C不能通过任何端口与A:X通信;(4)Symmetric NA T:对每一个和A:X通信的IP地址和端口,NA T都会分配一个新的映射端口・例如,A:X之后要和B:Q通信,NA T会分配一个新端口Z・下面简要分析这些应用是如何解决NA T穿越问题的:①如果只有一个节点位于NA T后,让此节点发起连接,例如Kazaa[4]・这只是一个部分解决方案,很多情况下通信双方节点都位于NA T后・②动态或手工配置NA T以便将某个特定端口的请求转发到NA T之后某节点,例如Bit Torrent[5]・但是用户通常没有能力或权限配置NA T・③通过中央服务器中转,例如Groove[6]・这种方案代价比较昂贵,因为当节点增多时,需要部署大量服务器・④通过公网节点中转,例如Skype[7],当中转大量数据时,会严重影响该节点性能・⑤利用私有会话发起协议在两个节点间交换UDP端口,然后在UDP之上打TCP隧道,例如Newrong[8]・本文采用标准TCP协议栈以便利用某些最新TCP优化成果,再者,很多网络都不允许使用UDP・1 一种新的TCP穿越NA T机制针对上述方案或扩展性不好,或未采用标准的协议栈,或对移动性支持较差的问题,本文提出了一种新的TCP穿越NA T机制Nat TT(即NA T TCP Traversal的缩写)・在Nat TT中,想随时接受连接请求的节点称为接收节点或接收者,负责某个接收节点存储(注册)的那个节点称为该接收节点的代理・代理的功能是向接收节点提供当前网络地址以及帮助NA T后节点实现穿越・为了保证可用性和可扩展性,代理还可以采用冗余备份,例如,某接收节点的代理的一些后继节点都可以作为该接收节点的代理・如图3・图3 NatTT结构图Fig.3 System architecture of NatTTCone NA T的穿越如图4所示・此外,还可利用文献[9]中第七部分描述的端口预测方法来扩展Nat TT以支持Symmetric NA T穿越,但最新研究指出,NA T零售市场上很少有Symmetric NA T[10],而且Vo IP等新兴业务在Symmetric NA T下表现不佳,本文相信Symmetric NA T会逐渐消失,因此只考虑Cone NA T・过程如下:(1)接收节点注册・步骤1和2是接收节点通过一个U RI向代理注册,UDP、TCP均可,但TCP开销较大,采用UDP(如图2)可以容许更多接收节点注册到每个代理上・接收节点定期向代理发送注册消息,以便代理随时通过NA T向它发送连接请求(步骤4)・(2)查询・步骤3为发起节点想与接收节点建立一条TCP连接,于是向代理(通过DHT算法)发送查询请求・代理首先检查接收节点是否已注册(可能需要和其他代理联系进行确认),若注册,通过其注册地址向它发送一个连接请求(步骤4)・该连接请求带有一个联系参数,以便追踪后续步骤针对那个查询请求,以及通知接收节点发起连接时应该使用的IP地址和端口・代理将最终向发起节点回应一个带有接收节点公有IP地址和05东北大学学报(自然科学版) 第28卷端口的应答(步骤10),以便和它建立一条直接的TCP连接(步骤11)・(3)打洞・步骤5和6为接收者通过连接请求中的地址信息与代理建立TCP连接,告知代理它所使用的地址信息・代理比较接收者的私有IP 地址(R)和公有IP地址(NR),若匹配,说明接收者不在NA T之后,否则接收者为即将从发送者公有IP地址和端口(N I:Y)发送的消息在NA T 上打洞・这里的策略是接收者使用相同的IP地址和端口与代理和发起者通信・因为是在Cone NA T 上打洞,NA T将为这两条TCP连接分配相同的端口・在图4的例子中,发送者使用端口X和代理通信(步骤3),但是代理看到的数据包地址为NA T I:Y・同样,接收者使用端口J但代理看到的地址为NA T R:K・为了打洞,接收者关闭步骤5和6中与代理的连接,并在步骤7中试图使用端口J 和N I:Y发起TCP连接请求,步骤8或者超时,或者返回一个TCP Reset应答,或者返回一个端口在使用错误(NA T I为Full Cone类型),任何一种情况都将导致连接失败,但是很可能在NA T R 上产生了一个R:J到N I:Y的映射(之所以“很可能”是因为NA T R可能因为步骤8的TCP Reset 应答关闭R:J到N I:Y的映射)・步骤8和9之间,接收者在R:J上创建一个监听Socket,然后发送一个连接应答(步骤9)・步骤10中代理通知发起者现在可以通过NR:K和接收者建立直接的TCP连接,步骤11连接建立・图4 Cone NAT穿越Fig.4 Cone NAT traversal2 测试结果分析目前仅仅针对DHT网络中位于不同NA T 后的节点进行了测试・搭建了一个有四个节点的DHT网络(通过Chord算法[11]),其中两个节点在公网上,分别运行Win2K、WinXP(SP2),主频分别为216MHz,117MHz・另两个节点位于不同的NA T后(通过STUN[3]算法测得两个NA T均为Cone类型),也分别运行Win2K、WinXP (SP2),主频分别为214MHz,218MHz・两个私网节点分别注册到两个公网节点上,分别向对方发起TCP连接・进行了大约200次测试,其中每个节点发送100次,观察测得穿越成功率分别达到99%和97%,TCP连接建立延迟从119s到716s15第1期 耿福泉等:DHT网络中一种TCP穿越NA T机制不等・这个结果一方面是因为NA T为Cone类型,另一方面因为测试环境是在学校搭建,网络连通性较好,同时DHT网络只有四个节点,节点查找较快・建议在实际环境中配置时,为步骤7的TCP建立设置一个可配置超时时间(目前设置为2s),同时将Nat TT根据STUN[3]和NA T中继穿越(TU RN)扩展以支持UDP穿越以及TCP、UDP中转・另外,对上例中两个公网节点进行仿真测试,观测到两个节点每秒分别可负载超过10000和7000个UDP注册(步骤1和2),节点每隔1min 重送一个UDP注册,因此这两个代理分别可负载大约600000和420000个接收节点・这不包括冗余代理和偶尔的查找以及连接请求带来的开销,相信这个开销不会太大・在实际的DHT网络中,公网节点负责的节点注册远远达不到此数目,因此像Skype一样,通常用户可以承担这些额外的开销・3 结 论本文提出了一种DHT网络中TCP穿越NA T机制,由某个节点协调位于NA T后的节点间的通信,而不是负责具体通信的中转,保证了系统的高可扩展性和良好的性能・同时采用标准的TCP协议栈,不仅有助于和其他系统的兼容,还便于利用某些最新TCP优化・下一步的工作就是扩展Nat TT以支持UDP穿越,同时借鉴交互式连接建立(ICE)的工作方式实现Symmetric NA T 的穿越・参考文献:[1]Tsirtsis G,Srisuresh work address translation2protocoltranslation(NAT2PT)[S/OL].[2005-10-21].http:∥/rfc/rfc2766.txt.[2]罗杰文・Peer to Peer(P2P)综述[EB/OL]・[2005-10-21]・http:∥/users/luojw/papers/p2p.htm.(Luo Jie2wen.Peer to peer(P2P)summary[EB/OL].[2005-10-21].http:∥/users/luojw/papers/p2p.htm.)[3]Rosenberg J,Weinberger J,Huitema C,et al.STUN2simple traversal of user datagram protocol(UDP)throughnetwork address translators(NATs)[S/OL].[2005-10-21].http:∥/rfc/rfc3489.txt.[4]Jessup T.How K azaa works.Utah Education NetworkSummit[EB/OL]・[2005-10-21].http:∥www.ndnn.org/blog/downloads/summit/U ENSummit-Peer-2-Peer.ppt.[5]Bit Torrent.FAQ[EB/OL].[2005-10-12].http:∥/FAQ.html.[6]Groove Networks.Groove web services[EB/OL].[2005-10-21].http:∥/pdf/wpgroove-web-services.pdf.[7]Skype Technologies S A.Skype explained[EB/OL].[2005-10-21].http:∥/products/explained.html.[8]Newrong Inc.NAT traversal SD K[EB/OL].[2005-10-25].http:∥/en/product/index.html.[9]Guha S,Takeda Y,Francis P.NU TSS:a SIP2basedapproach to UDP and TCP network connectivity[C]∥SIGCOMM’04Workshops.Portland,2004:43-48. [10]Jennings C.NAT classification results using STUN.IETFInternet draft[EB/OL].[2005-10-21].http:∥www./internet2drafts/draftjennings2midcom2stun2results202.txt.[11]Stoica I,Morris R,K arger D,et al.Chord:a scalable peer2to2peer lookup service for Internet applications[C]∥Proceedings of the ACM SIGCOMM’01Conference.SanDiego,California,2001:149-160.25东北大学学报(自然科学版) 第28卷。