NAT类型与穿透

NAT类型

此处的NAT是指NAPT这种类型,首先简单说明一下NAT的流程

NAT流程

A: 局域网内的主机,没有公网地址

R: 局域网的路由

B: 有公网地址的主机

以下为A主动和B建立TCP连接的流程

A访问B,通过路由表获得下一跳需要发到R

(A_ip, A_port, B_ip, B_port): A->R

R将根据A_ip和A_port一一映射到R的一个端口

(R_ip, R_port(A_ip, A_port), B_ip, B_port): R->B

B返回数据给R

(B_ip, B_port, R_ip, R_port): B->R

R通过返回包的端口发回给A

(B_ip, B_port, A_ip, A_port): R->A

NAT类型

通过上面的流程可以知道当A的A_port访问B的B_port时会在R中留下一个映射关系,之后可以通过R_port可以找到内网对应的A_ip和A_port,完成转发.

NAT的分类均是在A访问B之后R_port存在的情况

全锥形(Full Cone)

如果主机C访问R_port,路由依然将数据发给R_port对应的主机,此时NAT为全锥形NAT,可以将R_port看作锥体的顶点,网络拓扑就像一个锥子一样

限制锥型(Restricted Cone)

C访问R_port路由不转发数据到对应的主机,但是B主机的B_port2(B_port2与B_port不同)访问R_port时转发,此时为限制锥型NAT.在A主机的A_port在向C主机发过数据后,B,C都可以通过访问R_port到A的相应端口,因为R_port只与A_ip和A_port有关,所以R_port不会变

端口限制锥型(Port Restricted Cone)

与限制锥型类似,只是B主机的B_port2直接访问R_port也不能转发,只有A主机向B_port2发过数据后才可以通过R_port访问

对称型(Symmetric)

对称型与前面的最大的区别是在于R_port(A_ip, A_port)的映射规则,三种锥型的R_port只与A_ip和A_port有关,而对称型的R_port(A_ip, A_port, B_ip, B_port)与出口地址也有关,其中任何一个变化对应的R_port也会变化

NAT穿透

4种NAT总共有C42+4=10C_4^2+4=10类型,除了(对称型,对称型)和(对称型,端口限制锥型)以外都可以通过STUN协议进行穿透