p2p中的nat穿越方案

p2p中的nat穿越方案

ID:35273728

大小:401.50 KB

页数:7页

时间:2019-03-22

p2p中的nat穿越方案_第1页
p2p中的nat穿越方案_第2页
p2p中的nat穿越方案_第3页
p2p中的nat穿越方案_第4页
p2p中的nat穿越方案_第5页
资源描述:

《p2p中的nat穿越方案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、P2P中的NAT穿越方案简介1P2P简介P2P即点对点通信,或称为对等联网,与传统的服务器客户端模式有着明显的区别,传统的服务器客户端模型如图2所示。P2P这一术语在不同的上下文环境里可能有不同的内涵,它可以指一种通信模式、一种逻辑网络模型、一种技术、甚至一种理念。在P2P网络中如图1所示,所有通信节点的地位都是对等的,每个节点都扮演着客户机和服务器双重角色,节点之间通过直接通信实现文件信息、处理器运算能力、存储空间等资源的共享。P2P网络具有分散性、可扩展性、健壮性等特点,这使得P2P技术在信息共享、实时通信、协同工作、分布式计算、网络存储等领域都有

2、广阔的应用。图1P2P结构模型图2CS模式2NAT简介目前,IPv4地址资源的紧缺使得NAT技术获得了广泛的应用。NAT技术是一种把内部网络(简称为内网)私有IP地址转换为外部网络(简称为外网)公共IP地址的技术,它使得一定范围内的多台主机只利用一个公共IP地址连接到外网,可以在很大程度上缓解了公网IP地址紧缺的问题。3NAT对P2P通信的影响NAT技术虽然在一定程度上解决了IPv4地址短缺的问题,在构建防火墙、保证网络安全方面都发挥了一定的作用,却破坏了端到端的网络通信。NAT阻碍主机进行P2P通信的主要原因是NAT不允许外网主机主动访问内网主机,因

3、为NAT设备上没有相关转发表项,要在NAT网络环境中进行有效的P2P通信,就必须寻找相应的解决方案。本文就着重介绍几种常见的解决方案。4P2P穿越NAT的几种方案4.1反向链接技术当通信的双方中只有一方位于NAT之后时,它们可以利用反向链接技术来进行P2P通信。图3中ClientA(拥有内网IP地址10.0.0.1)位于NAT之后,它通过TCP端口1234连接到服务器(拥有外网IP地址)的TCP端口1235上,NAT设备(拥有外网IP地址155.99.25.11)为这个连接重新分配了TCP端口62000。ClientB(拥有外网IP地址138.76.2

4、9.7)也通过TCP端口1234连接到服务器端口1235上。ClientA和ClientB从服务器处获知的对方的外网地址二元组{IP地址:端口号}分别为{138.76.29.7:1234}和{155.99.25.11:62000},它们在各自的本地端口上进行侦听。由于ClientB拥有外网IP地址,所以ClientA要发起与ClientB的通信,那么它可以直接通过TCP连接到ClientB。但如果ClientB尝试通过TCP连接到ClientA进行P2P通信,则会失败,原因是ClientA位于NAT设备后,虽然ClientB发出的TCPSYN请求能够到

5、达NAT设备的端口62000,但NAT设备会拒绝这个连接请求。要想与ClientA通信,ClientB要通过服务器给ClientA转发一个连接请求,反过来请求ClientA连接到ClientB(即进行反向链接),从而建立起它们之间的TCP连接。图3反向链接示意图4.2UDP打洞技术如果两个P2P客户端都位于NAT设备后面,想要进行P2P通信,那又该如何解决呢?UDP打洞技术就是为解决这个问题而应运而生的,它能够通过中间服务器实现P2P客户端互连。该技术在RFC3027的第5.1节中有所提及,目前在多种在线游戏协议中已经得到了应用,下面来重点介绍下。4.

6、2.1集中服务器打洞技术假定客户端A和客户端B都可以与公网内的已知集中服务器建立UDP连接,一个客户端在集中服务器上登陆的时候,服务器记录下该客户端的两对地址二元组信息{IP地址:UDP端口},一对是该客户端与集中服务器进行通信的自身的IP地址和端口号,另一对是集中服务器记录下的由服务器“观察”到的该客户端实际与自己通信所使用的IP地址和端口号。我们可以把前一对地址二元组看作是客户端的内网IP地址和端口号,把后一对地址二元组看作是客户端的内网IP地址和端口号经过NAT转换后的外网IP地址和端口号。集中服务器可以从客户端的登陆消息中得到该客户端的内网相关

7、信息,还可以通过登陆消息的IP头和UDP头得到该客户端的外网相关信息。如果该客户端不是位于NAT设备后面,那么采用上述方法得到的两对地址二元组信息是完全相同的。4.2.2建立P2P的Session假定客户端A要发起对客户端B的直接连接,具体的“打洞”过程如下:(1)客户端A最初不知道如何向客户端B发起连接,于是客户端A向集中服务器发送消息,请求集中服务器帮助建立与客户端B的UDP连接。(2)集中服务器将含有客户端B的外网和内网的地址二元组发给客户端A,同时,集中服务器将包含有客户端A的外网和内网的地址二元组信息的消息也发给客户端B。这样一来,客户端A与

8、客户端B就都知道对方外网和内网的地址二元组信息了。(3)当客户端A收到由集中服务器发来的包含客

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

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

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