图引用地址:https://www.zhihu.com/question/38729355
NAT分为两大类,基本的NAT和NAPT(即端口NAT,英文全称为Network Address/Port Translator)
静态转换 (Static Nat) 是指将内部网络的私有IP地址转换为公有IP地址,IP地址对是一一对应的,不变的,某个私有IP地址只转换为某个公有IP地址
动态转换 (Dynamic Nat), 动态转换可以使用多个合法外部地址集,在将内部网络的私有IP地址转换为公用IP地址时,IP地址对是不确定的,而是随机的,其私有IP地址可随机转换为任何指定该地址集内的IP
对于锥形NAT,假设已经有client A用内网的123 port与server A完成通信,并且NAT将公网的456 port分配给client A的123 port,此时若client A再用123 port向server B发起通信,则NAT仍然会将公网的456 port分给client A的123 port
对于对称型NAT,仍然假设已经有client A用内网的123 port与server A完成通信,并且NAT将公网的456 port分配给client A的123 port,此时若client A想向server B发起通信,则NAT就不会在将公网的456 port分给client A,比如会将789 port分配给client A
对于非对称型NAT与对称型NAT的区别概括为一句话就是:对于非对称型NAT,映射关系与目的地址无关, 只要源地址相同,client内网IP端口与NAT公网IP端口映射关系就相同;而对称的NAT,映射关系还与目的地址有关
锥形NAT又可分为:完全圆锥体(Full Cone NAT)、受限制的圆锥体(Restricted Cone NAT)、端口受限制的圆锥体NAT(Port Restricted Cone NAT)三种
假设 client A 已经用内网的 123 port 与 server A 完成通信,并且 NAT 将公网的 456 port 分配给 client A 的 123 port,下面举例说明三种锥型NAT定义区别:
完全圆锥体(Full Cone NAT):server B的所有端口都可以直接通过公网的 456 port 与 client A的123 port通信,当然也包括 server A的所有端口
(对IP、port没有限制)
受限制的圆锥体(Restricted Cone NAT):需要client A已经向server B发送过消息,server B才能够通过公网的 456 port 与 client A 的 123 port 通信,在此前提下,server A、server B的所有端口数据都可以通过公网的 456 port与client A的123 port通信
(在完全圆锥基础上加了对IP的限制)
端口受限制的圆锥体NAT(Port Restricted Cone NAT):需要client A已经向server B发送过消息,server B的X端口才能通过公网的 456 port 与 client A的123 port通信,注意只有server A、server B的X端口才能与client A的123 port通信,其他端口若想与client A通信需要再单独建立连接
(在受限制圆锥基础上加了对port的限制)
client A在使用这三种锥型NAT与server A、server B通信时,分配给client A的公网一直是456 port,不会变
假设有client A的123 port与server A的789 port、server B的789 port,若client A、server A想通信需要:client A的123先向server A的789发送消息
并且分配给client A公网port 为456,则有:
server A只能使用789与clientA的123通信,server A的其他端口不能与client A通信;
server B若想与client A通信,需要client A先向server B发送消息,并且分配给client A的公网的port不会是456