我们家里经常会有路由器,只要交点钱向服务商申请个账号,密码,再登上路由器的配置网页,设置PPPoE,输入账号密码,这样就差不多可以上网了。路由器会产生一个局域网,通常路由器的IP为192.168.1.1,一个局域网最多可以连接250几台电脑,可以设置路由器的地址池的起始地址。当我们连上局域网后,打开命令提示符(cmd),输入ipconfig,就可以知道自己电脑的IP了,例如192.168.1.2等。但是为什么别人家的电脑IP也可能是相同的IP吗?不是不能出现两个相同的IP?
其实啊,为了解决IPV4的匮乏,技术人员们想出了NAT技术,也就是网络地址转换的技术,它可以提供在专用地址和全球地址之间的互相映射,同时支持虚拟专用网络。这个技术允许一个站点的内部通信使用一组准用地址,而与世界其他地方进行通信时有使用另一组(至少有一个)全球英特网地址。这个站点必须仅有一条道全球因特网的连接,而且这条通路通过一个运行NAT软件功能的路由器。简明点说就是,每个全球IP地址都可以拓展到250多个局域网地址,大大缓解了IP匮乏的问题。这个机制的实现全靠带NAT软件的路由器。比如说该路由器连接地址为200.24.5.8的全球IP地址,路由器内的主机的地址可以从192.168.1.0~192.168.1.255,要实现局域网内部的主机与外网之间的通信,要做地址转换的工作。当要局域网内的主机要发数据到外网的某服务器时,很明显,主机发送的数据包的目的IP地址就是该服务器的IP,源IP地址是主机的局域网IP地址(如192,168.1.2),数据包经过路由器,路由器将数据包的源IP地址改为路由器的全球IP地址(200.24.5.8),再将数据包发送给服务器。但是,服务器收到数据包之后,只知道发送给他的IP地址是200.24.5.8,要发数据包回去,怎么知道给哪台主机呢?这就要引进端口的概念了,主机发送给服务器时,与路由器建立一个端口地址,路由器会将端口的地址发给服务器,服务器虽然不能根据源IP地址识别给哪台主机发送数据包,但是可以通过端口识别。对于服务器来说,该局域网内的主机的IP地址都是相同的(专用网络是透明),根据端口就可以区别不同的主机。
实际生活中,不仅只有一级NAT技术,还有两级NAT技术,或者更多。我们定义了有4组专用网络,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16,根据这4组专用网络地址,可以实现多级地址转换。就那我学校来说吧,我们实验室的路由器内的IP池是从192.168.1.2~192.168.254,路由器的外网IP是172.16.169.154,很明显也是个专用IP,也不是全球IP,说明我学校的网络至少有两级的地址转换。也许我们学校也就分到一个全球IP地址,通过几级的地址转换,才有学校那么多地址。甚至学校连一个全球IP也没有,学校的IP可能也是某个全球IP地址转换过来的,具体的我也不清楚