首页 > 编程知识 正文

p2p技术原理(P2P技术(一):NAT)

时间:2023-05-04 17:41:31 阅读:121211 作者:3615

1、NAT来源的购买优惠www.fenfaw.cn NAT是一项不可思议的技术,其出现几乎起死回生了IPv4。 在IPv4被认为结束历史使命的近20年间,——几乎忘记了IPv4地址空间即将枯竭的事实,可以说新技术正处于日新月异的时代,20年是漫长的历史。 更何况,NAT发生以后,网络终端的数量呈加速度上升趋势,对IP地址的需求急剧增加。

不可思议的是,NAT对IP网络模型的影响很大,其身影遍布网络的各个角落。 根据最近的研究报告,70%的P2P用户位于NAT网关中。

2、NAT的工作特点NAT通常位于某个组织网络的出口位置,通过将内部网络的IP地址替换为出口的IP地址来提供公共网络的可达性和上层协议的连接能力。 对于有internet访问需求且内部使用专用地址的网络,请将NAT网关放在组织的出口,然后在离开专用网络访问internet时,将源IP作为公共地址,通常是出口

RFC1918由10.0.0.0-10.0.0.0-10.0.0-10.255.255; 172.16.0.0-172.31.255.255; 192.168.0.0-192.168.255.255,分别位于A/B/C类地址,作为内部网络IP

NAT处理消息的几个重要特征:

NAT网关设置在从专用网到公用网的根出口位置,所有双向流量都必须通过NAT网关网络接入,首先只能从专用网一侧开始。 公用网不能主动接入专用网主机NAT网关在两次接入方向上完成地址转换和翻译,出方向进行源信息替换,入方向进行目的地信息替换的NAT网关的存在,通信双方都可以其中的第二个特点是打破了IP协议体系结构中所有节点在通信中的对等地位。 这是北约最大的弊端,给对等通信带来了很多问题。 当然,相应的克服手段也应运而生。 事实上,第四点是NAT的目标,但往往没有实现NAT。 这是因为除了IP报头之外,高层的通信协议总是在内部携带IP地址信息。

3、NAT实现方式NAT工作模式有一对一NAT、一对多NAT。 其中,一对一表示一个内部主机占用一个公共网络IP,这种方式对节约公共网络IP意义不大,主要实现以下特殊需求: 例如,用户想隐藏内部主机的真正IP。

NAT工作模型中最常用的是一对多。 在一对多模型中,可以根据端口转换的机制进一步细分。

3.1、静态NAT是一对一的NAT,这里只进行IP转换,不进行端口转换

3.2、NAPT端口复用技术。 与静态NAT的区别在于,NAPT不仅执行IP地址转换,还执行传输层端口转换。 具体而言,只有一个公共IP,用于区分不同端口的专用IP主机上的数据。

3.3、NAPT种NAT类型为完全圆锥形NAT(fullconeNAT )

特点: IP和端口不受限制

表现形式:将来自内部相同IP地址和相同端口号(IP_IN_A : PORT_IN_A )的主机监听/请求发送到具有公共网络IP的端口(IP _ out _ b : port _ a ) 任意外部IP地址和端口是映射到其公共网络的称为IP的端口访问(IP_OUT_B : PORT_OUT_B )是内部的该主机) IP _ in _ a : port 简单来说,只要客户端从内部到外部建立映射,其他外部主机上的IP和端口就可以使用此孔将数据发送到客户端。

圆锥形NAT(restrictedconeNAT ) )。

特点: IP受限制,端口不受限制

表示:与完全锥形NAT不同,在公共网络映射后,并非所有IP都允许访问该端口。 要进行通信,必须连接到内部主机所在的外部IP主机,并且该外部IP主机必须能够与该内部主机进行通信,但端口不受限制。

端口限制型网络连接(NAT )。

特点: IP和端口受限

表现形式:该技术比限制性玉米NAT更严格。 除了受限锥形NAT功能外,还需要恢复主机的端口。 假设内部主机向a主机上的P1端口发送消息,则在该外部主机向内部主机发送UDP消息时,必须要求消息IP为a,端口为P1。 此请求进一步增强了外部消息请求方的限制,比Restrictd Cone更安全。

对称NAT (对称NAT )。

特征:每个外部主机或端口的会话映射到不同的端口(孔)

表现形式:同一个客户端和不同的目标IP:PORT通信,经过NAT映射后的公网IP:PORT是不同的此时,如果b想与客户的PS进行灾难恢复,也只能在NatIP:NatPortB (即紫色孔),在NatIP:NatPortA (即黄色孔)中

对这四种类型的NAT的限制越来越大。

4、北约的限制和解决方案IP协议的重要贡献之一是让世界平等。 虽然众所周知的CS架构是APP应用层协议中的角色区分,但是在网络层和传输层没有区别,一个IP地址的主机也可以是客户端

,也可以是服务器。

与此同时,很多应用也是把客户端和服务器的角色组合起来来完成功能。而在P2P应用中,一个用户的主机既为下载的客户,同时也向其他客户提供数据,是一种C/S混合的模型。上层应用之所以能这样设计,是因为IP协议栈定义了这样的能力。试想一下,如果IP提供的能力不对等,那么每个通信会话都只能是单方向发起的,这会极大限制通信的能力。

**而NAT最大的弊端正在于此——破坏了IP端到psddr的能力!其次NAT设备会对数据包进行编辑修改,这样就降低了发送数据的效率;此外,各种协议的应用各有不同,有的协议是无法通过NAT的(不能通过NAT的协议还是蛮多的),这就需要通过穿透技术来解决

4.1、NAT弊端 NAT使IP会话的保持时效变短。由于IP和端口资源有限,所以在会话结束后需要回收资源,即老化操作。基于UDP通信协议很难确定何时通信结束,所以NAT网关主要依赖超时机制回收外部的端口,但是如果应用需要维持连接的时间大于NAT网关的设置,通信就会意外中断。因为网关回收相关转换表资源以后,新的数据到达时就找不到相关的转换信息,必须建立新的连接。当这个新数据是由公网侧向私网侧发送时,就会发生无法触发新连接建立,也不能通知到私网侧的主机去重建连接的情况。这时候通信就会中断,不能自动恢复。即使新数据是从私网侧发向公网侧,因为重建的会话表往往使用不同于之前的公网IP和端口地址,公网侧主机也无法对应到之前的通信上,导致用户可感知的连接中断。很多应用协议的设计者已经考虑到了这种情况,所以一般会设置一个连接保活的机制,即在一段时间没有数据需要发送时,主动发送一个NAT能感知到而又没有实际数据的保活消息,这么做的主要目的就是重置NAT的会话定时器。NAT在实现上将多个内部主机发出的连接复用到一个IP上,这就是依赖IP进行主机跟踪的机制都失效了。一个IP被很多用户共享,如果存在恶意的用户行为,很难定位到发起连接的那个主机。NAT工作机制依赖于修改IP包头的信息,这会妨碍一些安全协议的工作。因为NAT篡改了IP地址、传输层端口号和校验和,这会导致认证协议彻底不能工作,因为认证目的就是要保证这些信息在传输过程中没有变化。IP分片机制是在信息源端或网络路径上,需要发送的IP报文尺寸大于路径实际能承载最大尺寸时,IP协议层会将一个报文分成多个片断发送,然后在接收端重组这些片断恢复原始报文。IP这样的分片机制会导致传输层的信息只包括在第一个分片中,NAT难以识别后续分片与关联表的对应关系,因此需要特殊处理。4.2、NAT路由类型判断

根据上面的介绍,我们可以了解到,在实际的网络情况中,各个设备所处的网络环境是不同的。那么,如果这些设备想要进行通信,首先判断出设备所处的网络类型就是非常重要的一步。

举个例子来说:对于IM中的实时音视频功能和VoIP软件,对位于不同NAT内部的主机通信需要靠服务器来转发完成,这样就会增加服务器的负担。为了解决这种问题,要尽量使位于不同NAT内部的主机建立直接通信,其中,最重要的一点就是要判断出NAT的类型,然后才能根据NAT的类型,设计出直接通信方案。不然的话,两个都在NAT的终端怎么通信呢?我们不知道对方的内网IP,即使把消息发到对方的网关,然后呢?网关怎么知道这条消息给谁,而且谁允许网关这么做了?

为了解决这个问题,也就是处于内网的主机之间能够穿越它们之间的NAT建立直接通信,已经提出了许多方法,STUN(Session Traversal Utilities for NAT,NAT会话穿越应用程序)技术就是其中比较重要的一种解决方法,并得到了广泛的应用。

参考链接:

http://www.52im.net/thread-50-1-1.html

http://www.360doc.com/content/14/0305/17/8285430_357987074.shtml

http://www.52im.net/thread-1055-1-1.html

《计算机网络自顶向下方法》

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。