p2p打洞原理和方案_luyuehui p2p实现原理

p2p打洞原理和方案_luyuehui p2p实现原理
如果两个Client不是公网上,要实现p2p通信必须进行nat打洞,这是因为nat会将局域网内主机的ip映射到公网上。
1.nat的分类

NAT共分为两大类:Cone NAT和Symmetric NAT。Cone NAT指的是只要源IP端口不变,无论发往的目的IP是否相同,在NAT上都映射为同一个端口,形象的看来就像锥子一样,而Symmetric NAT对于发往不同目的IP的会话在NAT上将映射为不同的端口,也就是不同的会话。 其中Cone NAT又可细分为3类,分别是FullCone型、RestrictedCone型和Restricted PortCone。限制的严格程度和对局域网内主机的保护由松到紧依次为:Full Cone、Restricted Cone、Restricted Port Cone、SymmetricNAT。

这里“限制”指的是NAT对由外到内的数据包进行审查、过滤,看看数据包的源地址和他发送到的“洞”是否有关系,如果没有那么就将其丢弃。

“由松到紧”指后者不仅继承了前者在限制上的特性,而且自己还添油加醋的干了些坏事,以至于对“由外到内”的数据包比前者有着更严格的限制。例如Restricted Cone限制了外部进入内部的IP,使得只有被打洞IP发出的数据包才允许进入NAT,而RestrictedPort Cone不但限制了IP,还限制了端口,使得只有被打洞的IP:PORT才能往这个洞里发送数据,其他任何来自不同于被打洞地址(IP:PORT)的数据包都不能使用这个洞将数据发送到NAT之后。

2.NAT对Session的映射

这里列出NAT对于内网地址映射到外网地址的一些普遍规律,可将其分为4种情况,以下的Session即为通信双方的链接,具体表现为在NAT上映射的外网IP:PORT。

A.源IP不同,忽略其他因素,将映射为不同的Session

B.源IP相同,源端口不同,将映射为不同的Session

C.源IP相同,源端口相同,目的IP相同,目的端口不同,将映射为相同的Session

D.源IP相同,源端口相同,目的IP不同,忽略目的端口,对于不同的NAT可分为不同的情况

a)ConeNAT:将映射为相同的Session

b)SymmetricNAT:将映射为不同的Session

以下对四种NAT类型分别予以说明:

(一)全锥形NAT(FullCone):IP、端口都不受限。只要客户端由内到外打通一个洞之后(NatIP:NatPort ->A:P1),其他IP的主机(B)或端口(A:P2)都可以使用这个洞发送数据到客户端。映射关系为:Client->NatIP:NatPort->Any,即任何外部主机都可通过NatIP:NatPort发送数据到Clietn上。

(二)受限锥形NAT(Restricted Cone):

IP受限,端口不受限。当客户端由内到外打通一个洞之后(NatIP:NatPort ->A:P1),A机器可以使用他的其他端口(P2)主动连接客户端,但B机器则不被允许。映射关系为:Client->NatIP:NatPort->A,即只有来自A的数据包才能通过NatIP:NatPort发送到Client上。

(三)端口受限锥型(Restricted PortCone):IP、端口都受限。返回的数据只接受曾经打洞成功的对象(A:P1),由A:P2、B:P1发起的数据将不被NatIP:NatPort接收。映射关系为:Client->NatIP:NatPort->A:P1,即只有来自A:P1的数据才可通过NatIP:NatPort发送到Client上。

(四)对称型NAT(SymmetricNAT):对称型NAT具有端口受限锥型的受限特性。但更重要的是,他对每个外部主机或 端口的会话都会映射为不同的端口(洞)。只有来自相同的内部地址(IP:PORT)并且发送到相同外部地址(X:x)的请求,在NAT上才映射为相同的外网端口,即相同的映射。一个外部地址(X:x)对应一个NAT上的映射,如上图红色三角,每个映射仅接收来自他绑定的外部地址的数据。注:X在这里意为任意一台外部主机,x为这台主机上的任意一个端口。映射关系为:Client->NatIP:Pa1->A:P1,当Client访问B:P1时,映射关系变为:Client->NatIP:Pb->B:P1,同理,NatIP:Pa2也就是Client访问A:P2时的映射。

3.穿透性

NAT类型简写对应:全锥形->FC,限制锥形->RC,端口限制锥形->PC,对称型->SN。还需要说明的是:下文所提到的“双方建立连接”意为双方在打洞之后而进行的直接的数据传输,而不是通常认为的“TCP是基于连接的“或是“UDP是无连接的协议”这样的概念。

(一)其中一个具有公网地址时。无论对方是什么类型的Nat都能打通。

(二)其中一个是FC时,都可以实现p2p通信。

(三)其中一个是RC时,如果另外一个nat是SN型的,则不能建立通信。除此之外的都能建立通信。

(四)当PC->PC时,能建立通信。

(五)SN对SN,不能建立通信。


  

爱华网本文地址 » http://www.413yy.cn/a/25101014/226063.html

更多阅读

人民币符号和美元符号怎么打 人民币怎么兑美元

人民币符号和美元符号怎么打——简介人民币和美元是我们常用的钱币,我们在学文章是经常需要这些符号,那么这些符号在键盘上该怎么打出来呢?人民币符号和美元符号怎么打——工具/原料电脑人民币符号和美元符号怎么打——方法/步骤

赛尔号哈莫雷特怎么打 雷伊和盖亚打哈莫雷特

哈莫雷特四个配技,PP值都不高,特别是容易秒人的物攻招数“龙王灭碎阵”,只能用5次。只要将龙王的招数全部耗完,四个技能的PP值全为0,它就不能再出招,任凭咱们鱼肉。下面就说说哈莫雷特的具体打法攻略。赛尔号哈莫雷特怎么打——打法提示

试管中的为什么?6 为什么要打夜针? 试管夜针打hcg原理

那么为什么取卵前卵泡数目还不少呢,怎么到取卵的时候就少了呢?原因有三1 打HCG的时间是否正确取卵之前34——36小时需要打HCG针,这个时候至少要有三个17*17以上的卵泡,如果时间上判断错误,可能会出现较多的不成熟或过分成熟的卵子,这将

书名号和单书名号怎么打出来 书名号怎么打出来

书名号和单书名号怎么打出来——简介对于很多电脑新手来说,都不知道怎么打出书名号和单书名号。让我来给大家介绍下吧,希望对大家有所帮助。书名号和单书名号怎么打出来——工具/原料书名号书名号和单书名号怎么打出来——

对人民陪审员工作的几点体会和感想 应逐步实现人民陪审员

现已连任两届,是一名老资格的人民陪审员。参加了几十次庭审,深感责任重大,由原来不了解人民陪审员的工作,到熟悉并胜任人民陪审员工作,我确实有一些体会和感受。一、努力学习是当好人民陪审员的重要基础人民陪审员制度是一项重要的司法制

声明:《p2p打洞原理和方案_luyuehui p2p实现原理》为网友海海亽生分享!如侵犯到您的合法权益请联系我们删除