TCP/IP决定任何两台主机通信都需要IP地址。而目前由于IP4地址已经不够用,很多主机都没有固定的IP地址。常见的情况是我们接入运营商的网络,运营商在大的网络中给我们分配一个IP地址。然后我们接入一个路由器,自己再搭建自己的子网。运营商分配给我们的都有可能不是Internet网上的唯一地址,有可能是局域网的地址。而我们路由器分配给我们的192.168.*.*的地址更加是局域网地址。
问题来了,如果我的主机要与baidu的服务器通信,它是怎么知道我的,因为我的IP地址是内网地址啊。
这里就会用到NAT技术,就是将整个局域网的IP地址映射到一个外网地址上。比如运营商有一个外网IP,113.88.176.8。
这个外网ip对应的内网有N台192.168.*.*的设备。假设我的主机ip为192.168.0.119.
我访问baidu经过的路由如下:
C:\Users\gxw5>tracert www.baidu.com
通过最多 30 个跃点跟踪
到 www.a.shifen.com [180.97.33.108] 的路由:
1 <1 毫秒 <1 毫秒 <1 毫秒 192.168.0.1
2 8 ms 4 ms 3 ms 113.88.176.1
3 6 ms 3 ms 2 ms 113.106.43.105
4 * * * 请求超时。
5 3 ms 2 ms 2 ms 183.56.65.78
6 26 ms 26 ms 33 ms 202.97.47.165
7 35 ms 35 ms 35 ms 202.102.69.114
8 * * * 请求超时。
9 28 ms 27 ms 32 ms 180.97.32.2
10 * * * 请求超时。
11 * 27 ms 29 ms 180.97.33.108
明显经过网关192.168.0.1之后我的数据包的ip地址变为了113.88.176.8。
这是路由器使用NAT技术将我的数据包做了改动。
路由器实现了我的主机的映射,有一种方式是端口NAT映射。用不同的端口来区分内网中的不同主机。
等百度返回数据时,根据端口来确定这个数据包时是网中的哪一台机器请求的。