关于NAT和P2P约会
NAT是什么?
简介
网络地址转换(NAT,NetworkAddress Translation)属接入广域网(WAN)技术,它将内网地址转换为外网地址,能够让多个的内网地址共用一个外网地址来连接互联网。
出现的原因
IPv4公网地址不够用。
基本设计思想
IP不够端口来凑。NAT设备将内网的不同地址(1. IP不同;2.IP相同但端口不同)转换为外网同一个IP的不同端口,从而就减少了对外网地址的需求量。
NAT行为类型
按照RFC 4787的分类方法,NAT主要有两种行为:
- mapping Behavior(映射行为):即,内网地址向外发送数据时,NAT设备按照什么规则来创建或重用端口。
- Filtering Behavior(过滤行为):即,当外网地址向NAT映射的地址发送数据时,NAT设备按照什么规则来过滤数据。
每种行为有三种类型:
- Endpoint-Independent(地址端口都不依赖型)
- Address-Dependent(地址依赖型)
- Address and Port-Dependent(地址端口依赖型)
为方便理解,先假设一个已建立的NAT关系:内网地址A:a<——>NAT设备B:b<——>外网地址C:c。
映射行为 | 解释说明(内网向外网发送数据时的行为) |
---|---|
地址端口都不依赖型 | 内网地址A:a向外网发送数据,不管外网地址是多少,NAT设备都会映射为B:b。 |
地址依赖型 | A:a向外网发送数据,只要外网的IP地址为c,不管端口是多少,NAT设备就会映射为B:b;否则映射为其它地址。 |
地址端口依赖型 | A:a向外网发送数据,只有当外网的IP地址为c且端口为3,NAT设备才会映射为B:b;否则映射为其它地址。 |
过滤行为 | 解释说明(外网向内网发送数据时的行为) |
---|---|
地址端口都不依赖型 | B:b收到外网数据,不管外网的IP和端口是多少,NAT设备都会转发给A:a。换句话说,来者不拒。 |
地址依赖型 | B:b收到外网数据,只要外网的IP地址为c,不管端口是多少,NAT设备就会转发给A:a;否则,过滤掉。 |
地址端口依赖型 | B:b收到外网数据,只有外网的IP地址为c且端口为3,NAT设备才会转发给A:a;否则,过滤掉。 |
说明:NAT映射后,如果没有数据交互,会在一段时间内被释放掉。
P2P约会
背景
因为NAT的存在,所以两个不同局域网内的终端A和终端B想要建立点对点的通信就会遇到障碍,原因:
- 不知道对方经过NAT转换后的公网地址;
- 即使知道对方的公网地址,但由于NAT过滤行为的限制,数据也可能因被过滤掉而无法传达给对方;
下面介绍一种在某些情况下可以建立点对点通信的方法,我们拟人化地称之为P2P约会,约会过程需要借助一个约会服务器来进行牵线。
实现步骤和原理
步骤1:注册
约会双方A和B要先注册到约会服务器,并定时向约会服务器发送心跳包来维持NAT不会被刷新掉。
注册成功后,约会服务器能够获取终端的信息,主要包括:
- 身份唯一标示符
- 内网地址(例如:A:a和B:b)
- 外网地址 (例如:A1:a1和B1:b1)
步骤2:约会请求
当A想要和B约会时
- A先向约会服务器请求要和B进行约会;
- 约会服务器向A提供B的联系方式(内网地址B:b和外网地址B1:b1);
- 另外,约会服务器把A的约会请求转告给B,并向B提供A的联系方式(内网地址A:a和外网地址A1:a1);
步骤3:互发PING消息
-
后面的事情就和约会服务器没有任何关系了,A和B同时尝试分别向对方的内外网地址发送PING消息;
说明:
- 对于终端A,a1是和约会服务器打的洞,a2是向B发送PING消息打的洞。a1和a2可能是同一个洞,也可能不是,这取决于NAT设备的映射行为类型,当映射行为类型是“地址端口都不依赖型”时,a1等于a2;
- 对于终端B,和终端A同理。
什么情况下可以一方可以收到另一方的PING消息?
- 双方在同一个局域网内;
- 虽然不在一个局域网内,但满足以下几种情况;
(此处以A向B发送的PING消息进行讲解,反之亦然。)
- 情况一:B1的NAT过滤行为属于“地址端口都不依赖型”,其他条件不限
- 情况二:B1的NAT过滤行为属于“地址依赖型”,且b1==b2(即B1的NAT映射行为类型属于“地址端口都不依赖型”),其他条件不限
- 情况三:B1的NAT过滤行为属于”地址端口依赖型“,且b1==b2(即B1的NAT映射行为类型属于“地址端口都不依赖型”),且a1==a2(即,A1的NAT映射类型属于”地址端口都不依赖型“),其他条件不限
步骤三:响应PONG
当一方收到另一方的PING消息后,就响应PONG消息。当任意一方收到对方的PONG消息,就说明双方已经打通可以进行双向交互的通道,即约会成功。
步骤四:do what you want
当约会成功后,A和B就可以进行直接通信了,根据业务需要想做啥就做啥,比如下载文件等。
网友评论