码迷,mamicode.com
首页 > 其他好文 > 详细

NAPT(以此类型讨论)

时间:2016-05-11 19:51:56      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:

一、NAPT(以此类型讨论)

192.168.1.106 : 32054<-------->183.15.192.72 : 27786<-------->212.79.111.156 : 3478

192.168.1.106 : 32055<-------->183.15.192.72 : 27786<-------->212.79.111.155 : 3478

简而言之,两个基本规则:

Ø内部IP/PORTNAT的规则,分ConeSymmetic

Cone 只要内部IP固定,映射到外部的NAPT->PORT就固定。见上面蓝色交互。

Symmetic:任意内部IPPORT有一项改变,映射到外部的NAPT->PORT就改变。

 

Ø外部IP/PORTNAT的规则,基于Cone细分,对Symmetic无甚意义。

见下面的详述。

 

只要clisend2ip的操作(不管是否能send success)ipsend2cli时,cliNAPT就不会抛弃来自ip的数据。sen2ip可以看作是cli在自身NAPT上对ip登记(是否还有更好的表述方式)

 

ØFull cone

假定clisend2ip(任意一对ip:port),所有IP都可以从此通道[session]回访。不限制外部IP/PORT

ClisessionnatIP

ClisessionnatIP

 

//无需cli先连接IP_Other_x,只要知道cliNAPT:PORTIP_Other_x就可以直接访问了。

ClisessionnatIP_Other_0

ClisessionnatIP_Other_1

 

ØRestricted cone

假定clisend2ip限制外部IP,不限制外部IP->PORT

ClisessionnatIP

ClisessionnatIP

 

//需要cli先连接IP_Other_xIP_Other_x才可以访问。

ClisessionnatIP_Other

ClisessionnatIP_Other

 

ØPort restricted cone

假定clisend2ip限制外部IP && PORT

对比 Restricted cone

ClisessionnatIP/PORT0

ClisessionnatIP/PORT0IP/PORT0可以回访,其他IP/PORTX不可以。

 

ØSymmetic

Port restricted cone限制IP && PORT

cone不同的是,每次cli建立连接都使用不同的session

Clisession0natIP/PROT0

Clisession1natIP/PROT1//同一个IP,不同PORT,也使用不同的session

ClisessionxnatIPx/PROTx

 

文字概述了下,再来点图文并茂的增加点感情。

Ø直观图

srvn为公网IP(非隐藏在NAT后面)。

 

技术分享 

 

ØP2P流程

为了作图方便,祛除了不会影响流程的session

以后的图都假定cli_a/b都注册到了srv,互相知道对方第一次向外的NAPT:PORT(to srv)

UDP打洞其实就是发送数据到对方的NAPT:PROT。只是把某一特定时刻的send称之为打洞。

 

cli_a/b通过srv预先得知了对方第一次send2srv时的【NAPT:port

l1<------>不限

技术分享 

可惜的是full cone几乎不存在。

 

l2/3<------>2/3

因为cli_acli_b的认知基于【NAPT_B:portn(反之cli_bcli_a也类推),而【NAPT_B:portn】在{cli_b IP已定 &&  2/3} 的条件下是不会改变的,所以2/3可以放在一起讨论。就画出2<------>2的。

技术分享 

v1、绿色线条:a->b,也可以看作是a打了一个指向b的洞,虚线表示此时的数据会被抛弃,不会抵达b

v2、红色线条:a请求b打洞。srv转发给b

v3、蓝色线条:b->a打洞。因为a之前有向【NAPT_B:PROT】发送过数据(->),所以【NAPT_A:PORT】允许【NAPT_B:PROT】通过,b可以抵达a

v4、绿色线条:a->b也是通了。

l2<------>4

NAPT限制较小的先向对方打洞。画简单点。

技术分享 

v1、绿色线条:a->b,也可以看作是a打了一个指向b的洞,虚线表示此时的数据会被抛弃,不会抵达b

v2、蓝色线条:因为a之前有向【NAPT_B】发送过数据(->),所以【NAPT_A】允许【NAPT_B】通过。

va<------>NAPT_A:PROTn<------>NAPT_B:PROTm<------>b

 

l3<------>4

技术分享 

v1、绿色线条:a->b,也可以看作是a打了一个指向b的洞,虚线表示此时的数据会被抛弃,不会抵达b

v2、蓝色线条:虽然a之前有向【NAPT_B】发送过数据(->),但【NAPT_A】限定port,【NAPT_B:PROTm】被拒。

v3红色线条:如果a知道portmsend2portm后,蓝色线条就可以走通了。即a<------>b

有的NAPT->PORT是递增的,有portm  =  portn + 1

l4<------>4

不讨论,通不了。

 

网上摘抄的:

1.Endpoint Independent Mapping ( Full cone )

不区分终结点的映射,使用本地端口 P1 连接一个服务器,外网端口 P2 收到的任何数据包会转发到机器 上,跟直连没有什么区别,不需要打洞

2.Address Dependent Mapping ( Restricted cone )

基于地址的映射,使用本地端口 P1 连接服务器 B,外网端口 P2 收到来自 的包转发到机器 

3.Address and Port Dependent Mapping ( Port-restricted cone )

基于地址和端口的映射,使用本地端口 P1 连接服务器 B,外网端口 P2 收到来自 特定端口的包会转发到机器 上,实际使用中与 没有太大区别

4.Symmetric NAT

具有 IP 和 端口的限制,且会为每一个 Session 分配一个新的端口,这个端口号通常是递增的,但是也有随机的,随机的一般无解。





NAPT(以此类型讨论)

标签:

原文地址:http://www.cnblogs.com/freezlz/p/5483231.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!