以前一直迷惑的问题:NAT是一种解决IP不够的好方法,通过特殊设备(路由器或防火墙)将内部的非法IP地址转换为合法的可路由的IP地址,虽然可以成功向外面发送数据包,但是当外面的数据包到达NAT转换设备时,转换设备怎么知道是发给哪个内部主机的呢?因为端口号只能区别一台主机上运行的软件,但是可能很多主机上使用着相同的端口号。
实际上:一直都错误的理解了NAT,以为它只是转换IP地址而已,事实上它还必须将内部主机的发送的数据包的端口号也修改为唯一可区别主机的端口号,当数据包从外部到达时,才知道发送给那台内部主机,同时还应该转换端口号以区别特定内部主机上的应用程序。