利用udp穿越p2p网络中nat技术探究

利用udp穿越p2p网络中nat技术探究

ID:6023980

大小:29.00 KB

页数:7页

时间:2017-12-31

利用udp穿越p2p网络中nat技术探究_第1页
利用udp穿越p2p网络中nat技术探究_第2页
利用udp穿越p2p网络中nat技术探究_第3页
利用udp穿越p2p网络中nat技术探究_第4页
利用udp穿越p2p网络中nat技术探究_第5页
资源描述:

《利用udp穿越p2p网络中nat技术探究》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、利用UDP穿越P2P网络中NAT技术探究  摘要:介绍了当前互联网主要应用技术P2P和NAT的工作方式,重点分析了NAT对P2P应用的影响,阐述了在P2P网络中如何利用UDP打洞的方式实现NAT之间的穿越方法,并用C++代码实现了该方法的关键技术。关键词:P2P网络;UDP;NAT;穿越中图分类号:TP393文献标识码:A文章编号:16727800(2012)0090126031NAT技术的产生目前的互联网是基于32位IP地址的,这意味着有效的IP地址数目约为四十亿个,由于IP地址使用方式的时效性,实际的数量会少

2、得多。随着可用IP地址越来越少,NAT技术出现。NAT(NetworkAddressTranslators),网络地址转换。网络地址转换的主要目的就是为了实现地址重用。NAT技术通过将局域网里的主机地址映射为Internet上的有效IP地址,从而实现了网络地址的复用,NAT技术不仅隐藏了内部网络地址信息,使外界无法直接访问内部网络设备,保护了内部网络,同时也暂时解决了IPv4地址不足的问题。NAT分为两大类,基本的NAT和NAPT(NetworkAddress/Port7Translator)。一个NAT处在公用

3、互联网与它所服务的局域网之间,重写数据包头部的IP地址和端口号以使所有的包看上去都像从一个NAT设备的公用IP地址发来(或接收)的,而不是发自(往)实际的源(目标)。2P2P技术的特性P2P是一种网络模型,又称对等网。在这种模型中,所有节点都是对等的(称为对等点),各节点具有相同的责任和能力,并协同完成任务。对等点之间直接互连,共享信息资源、处理器资源、存储资源甚至高速缓存资源,无须依赖集中式服务器或资源就可完成。这种模式与当今广泛使用的C/S模式形成鲜明对比,在C/S模式中,服务器是网络的控制核心,P2P模式的

4、节点则具有很高的自治性和随意性。随着Naster、Genuella等信息共享应用程序越来越流行,P2P技术更受人们的广泛关注。3P2P网络中穿越NAT的必要性7NAT技术使局域网的用户可以共享一个IP地址访问Internet,但NAT的存在给P2P应用带来问题。NAT不允许外部主机主动访问内部主机,提高了内部网络的安全,但却不适合P2P应用的需要。在P2P中,无论是内网主机还是外部网络的主机,地位是平等的,它们都可以相互建立直接的连接,实现信息共享。但由于NAT的存在,使得外部网络的主机无法首先主动发出到内网主机

5、的连接。如果外网主机无法穿过NAT主动与内网主机进行通信,P2P网络各主机无法彼此发现对方进行对等信息交换,特别是位于不同NAT之后的不同内网中的计算机,更是无法相互连接。如果不能够穿过NAT,P2P网络就无法实现真正的对等。随着基于Internet的P2P网络技术的广泛应用,更多的内网主机需要参与到P2P中来,P2P网络要求任何主机之间都能够直接对等交换信息,这就使得P2P网络应用必须解决穿越NAT实现双向对等通信的问题。4P2P网络中利用UDP打洞穿越NAT的技术原理目前常见的NAT类型是FullCone型N

6、AT,其工作原理是将来自相同内部IP地址和端口号的请求信息,将被映射为相同的外部地址和端口号。来自NAT之外的节点,可以通过向NAT之后节点的映射地址和端口号发送数据包。如果P2P网络中的两台主机都位于NAT之后,则双方都不知道对方的因特网地址,从而双方都无法主动发起连接请求,要解决这个问题,需要借助双方都知道的因特网服务器来建立连接,使用UDP在NAT上的打洞技术。利用UDP打洞穿越NAT的实现过程和原理,如图1。假设有两台主机,分别位于两个NAT之后,ClientA和ClientB要建立UDP直连。在Clie

7、ntA和ClientB之间建立UDP直连的过程:(1)ClientA登录Server,NATA为ClientA的访问线程分配了一个端口5000,则Server收到的ClientA的地址是:202.102.2.5:5000,这就是ClientA的外网地址。7(2)ClientB登录Server,NATB为ClientB的访问线程分配了一个端口6000,则Server收到的ClientB的地址是:170.50.5.20:6000,这就是ClientB的外网地址。现在ClientA和ClientB都可以与Server通

8、信,如果ClientA想直接发送UDP数据包给ClientB,则ClientA可以从Server处获得ClientB的公网地址170.50.5.20:6000,但ClientA还不能使用该地址直接与ClientB通信,因为此时NATB会将ClientA主动发来的信息丢弃,原因是此数据包没有会话记录。(3)现在需要在NATB上打一个方向为202.102.2.5的洞(也就是C

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。