- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机网络打洞技术
Internet的快速发展以及IPv4地址数量的不足使得NAT设备得到了大规模的应用,然而这也给越来越多的端到端通信也带来了不少的麻烦。一般来说,NAT设备允许内网内主机主动向公网内主机发送数据,但却禁止内网外的主机主动向内网内的主机传递数据。由于很多的会话双方处于不同的NAT设备后,它们通信一般通过公网服务器中转,而要建立P2P通信,则必须解决NAT穿越问题才能建立通信。
第三章 NAT穿越模块的设计与实现
NAT 是介于内网和公网之间的设备,公网中的IP 地址是全球唯一的,而在内网中的IP 地址可以重复出现,但不能出现在公网中[18]。NAT的基本功能就是通过一个或几个lP地址,来实现局域网上的所有主机都可以对因特网进行访问[19]。
NAT实现了公网地址和内网地址之间的映射,可从两个方面来概括:(1) 当内网内的IP包经过NAT需要流入公网时,NAT将此IP 包的源IP地址和端口改为NAT接口上的一个公网地址和端口;(2)当公网中的IP包经过NAT 需要访问内网资源时,NAT将此IP 包的目的地址和端口改为内网IP 地址和端口。
图3.1 UDP包经过NAT原理图
图 3.1是 UDP包经过NAT后的示意图,可以看出UDP包从内网主机A发出时,到达NAT后它的源端IP和端口都已经改变。同时从主机B的UDP包发往NAT-A的公网IP和端口后,NAT将其自动转发给主机A。
3.1 NAT穿越方案分析
3.1.1 NAT的类型
NAT设备的类型对于穿越NAT,有着十分重要的影响,根据端口映射方式,NAT可分为如下4类,前3种NAT类型可统称为cone(1)全克隆( Full Cone) : NAT把所有来自相同内部IP地址和端口的请求映射到相同的外部IP地址和端口。任何一个外部主机均可通过该映射发送IP包到该内部主机。(2)限制性克隆(Restricted Cone) : NAT把所有来自相同内部IP地址和端口的请求映射到相同的外部IP地址和端口。但是,只有当内部主机先给IP地址为X的外部主机发送IP包,该外部主机才能向该内部主机发送IP包。(3)端口限制性克隆( Port Restricted Cone) :端口限制性克隆与限制性克隆类似,只是多了端口号的限制,即只有内部主机先向IP地址为X,端口号为P的外部主机发送1个IP包,该外部主机才能够把源端口号为P的IP包发送给该内部主机。(4)对称式NAT ( Symmetric NAT) :这种类型的NAT与上述3种类型的不同,在于当同一内部主机使用相同的端口与不同地址的外部主机进行通信时, NAT对该内部主机的映射会有所不同。对称式NAT不保证所有会话中的内有地址和公开IP之间绑定的一致性。相反,它为每个新的会话分配一个新的端口号。端口号由此可见,Symmetric Cone条件最严格,Port /Restricted Cone次之,Full Cone条件最不严格。cone NAT[20]。
3.1.2 NAT给P2P通信带来的问题研究
NAT的存在,使得局域网的用户可以共享一个IP地址访问因特网,解决了IP地址的不足,同时起到了防火墙的作用。但是NAT的存在给P2P网络也带来了问题:(1)内网主机的IP地址是虚拟的,在因特网上是非法的,因而内网主机对公网是不可见的。(2)即使内网内主机的IP地址已知,NAT仍然阻止公网主机主动访问内网主机。(3)内网主机可以作为客户机访问外网,但不能作为服务器向外网提供服务[21]。
NAT产生种种问题的原因主要是NAT不允许外部主机主动访问内部主机,这样虽然有安全性高的优点,但是同时带来服务性能低的不良效果。上述这些限制使得在NAT的网络中,外网主机无法穿过NAT主动与内网主机进行通信,P2P网络各主机无法彼此发现对方进行对等信息交换,特别是位于不同NAT之后的不同内网中的机器,更是无法相互连接。如果不能够穿越NAT,P2P网络就无法实现真正的对等,也就无法实现所有信息的交换或共享。
当前处于NAT后的主机通信一般通过服务器的中转,例如当客户机A和客户机B都分别处于不同的NAT后面,先各自发起一个TCP或UDP的连接,连接到一个大家都知道的拥有固定IP地址的服务器S上。不能直接连接,两个客户端就使用S服务器进行消息的传递。例如,要发送一条信息到客户端B,客户端A以C/S连接方式简单的发送一条信息到S服务器,然后S服务器使用已经和客户端B建立的C/S连接发送这条信息到客户端B这种方法的优势在于只要两个客户端都连在服务器上,它就是有效的。它的明显缺点是它需要了服务器的处理并占用了带宽,而且即使服务器的网络状况良好,也有一定的通讯滞后问题。
图3.2 NAT后主机不建立P2P通信时发送数据的具体过程
NAT穿越的
文档评论(0)