且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

P2P之UDP打洞原理、应用及框架设计

更新时间:2022-08-22 12:04:56

一、NAT类型
大多数NAT可分为如下类型
cone nat:把相同的内网地址和端口始终转换为同一个外网地址和端口
如192.168.0.2:8000始终转为外网的218.52.37.243:60000,在此session的生命期内,不管目的ip地址和端口是什么,转化的外网地址都不变
symmetric:相同的内网地址和端口,在对端的地址端口不同时,转变为不同的外网地址和端口
如192.168.0.2:8000给地址A和地址B发包时,转化为不同的外网端口60000和60001,对应两个session
 
nat具有拦截不速之客的功能,从数据包进入内网受限的角度上分,cone nat又分为如下几种
1 full cone 几乎没有任何限制,任何地址都可以往转化后的外网地址发包,nat会允许数据包通过
2 restrict cone nat 只允许相同ip地址的主机发的包通过
3 port restrict cone 只允许相同ip地址,相同端口的包通过
 
symmetric nat在限制方面和port restrict cone是一致的
 
二、比较流行的nat的一些特性
 
iptables:symmetric nat,转化后的外网端口尽量为内网原端口,本端口被占用时,新分配的端口号似乎并无规律(不是累+1的)
 
windows ics/nat:对内网端口(1025-3000)的端口尽量转换为原端口,该端口被占用或者超过3000的端口时,很可能从1025开始分配端口号