怎样将多个内网ip通过一个外网ip上网,这样可以节约很多ip资源,在ipv6之前是必须的。实现方法应该有很多,下面是一种基于端口映射的方式的nat设备简单描述。
nat设备里面有个表,用于记录内网ip,端口以及外网ip,端口之间的映射关系,如下图
192.168.1.5:300 | 222.23.43.85:400 |
192.168.1.5:301 | 222.23.43.85:401 |
192.168.1.5:302 | 222.23.43.85:402 |
192.168.1.6:300 | 222.23.43.85:403 |
192.168.1.6:301 | 222.23.43.85:404 |
192.168.1.6:302 | 222.23.43.85:405 |
192.168.1.6:303 | 222.23.43.85:406 |
192.168.1.7:300 | 222.23.43.85:407 |
假设有一个ip包发往百度服务器:
源地址源端口:192.168.1.5:300
目的地址目的端口:220.181.111.148:80(百度服务器)
经过nat设备之后的ip包:
源地址源端口:222.23.43.85:400
目的地址目的端口:220.181.111.148:80(百度服务器)
注意:目的地址是不会改变的,一直到在网络上找到百度的服务器和对应的端口,另外,源地址的ip,转换为外网ip后也不会改变的。
就这样,数据包被修改了,包括ip和端口号。路由器是工作在网络层的,所以它是根本不可能改变端口号的。那么就断定路由器就不是nat设备?不是的,其实,现在路由器很发达的,很多路由器都支持多种模式,包括nat。
以上只是nat的一种基本方式,也是比较有效的一种模式,当然还有其他方式,比如,内外网ip的一一映射,动态ip
等。