NAT通过共用网关,NAT来维护动态端口实现----穿墙打洞。
在现代用的是IPV4网络,全球的用户越来越多,在IPV4协议里,使用了32位的地址,结果就是一共有4G个不同的地址,当时设计的时候觉得这个地址空间足够大了,不可能用完,但是结果是,现在居然就快消耗空了,所以就必须得想另外一个办法来控制IP地址增长过快,就有人想了一个大家共享一个IP地址,然后用端口和区分不同实际用户的方案,这个就是后来产生的NAT。
NAT集成在路由器里面,NAT维护一个端口表,该端口表为局域网内部对应的局域IP+端口,内部主机向外发数据时,网络数据包通过NAT转换为:公网+端口(NAT转换的端口),每当NAT收到外面的包时,检查端口,然后去查询这个表,找到对应的内网设备的IP和端口。这个端口必须由内网的机器主动来申请,意思是,内网对外访问时,NAT为内网的用户分配不同的端口号(有一个时间,超过时长就会失效,又需要重新申请,如果一直占用,就是永久的端口映射了),具体是什么连接,这个无所谓,所以你UDP和TCP这个自然都是可以的,NAT根本不关心你是什么连接,他只管根据不同端口转发数据。
假如IP地址为202.103.142.29网关下一台主机局域网地址为192.168.123.11,需要访问外部地址为221.10.145.84的主机,在发送数据的时候通过NAT转数据报,假如转换后端口为1212,则数据包为202.103.142.29:1212,这将私网转换