我们了解了和网络基本传输原理,知道网络其实是由各种设备(如:交换机、路由器、防火墙等)连接在一起的,电脑终端呢是需要分配一个IP地址的。那么理论上我们只要给每台需要连接网络的设备分配一个IP地址,大家就可以互相连接到一起了。起初发明IP地址的时候是定义为一个32位的地址了,就是2的32次方个IP地址可以利用,当初并没有考虑这世界上会有这么多终端设备需要连接。导致这IP地址完全够用啊,那怎么办,这个时候就有了私有IP地址和公有IP地址的概念。

私有IP地址(private address)也叫专用地址,它们不会在互联网上使用,只具有本地意义。因特网分配编号委员会(IANA)保留了3块IP地址做为私有IP地址:

  • A类私有地址:10.0.0.0/8,范围是:10.0.0.0~10.255.255.255
  • B类私有地址:172.16.0.0/12,范围是:172.16.0.0~172.31.255.255
  • C类私有地址:192.168.0.0/16,范围是:192.168.0.0~192.168.255.255

就是说这类IP地址是只能是在内部局域网中使用的,不能在互联网上使用,所以我们在查看自己电脑IP的时候大多都是以192.168.X.X开头的私有IP地址了。那么如果局域网中的设备需要访问互联网,就必须要用公网IP地址进行访问了,这个时候就有了NAT技术。网络地址转换NAT(Network Address Translation)是将一个IP地址转换为另一个IP地址的过程。

NAT主要用于实现内部网络(使用私有IP地址)访问外部网络(使用公有IP地址)的功能。当内网的主机要访问外网时,通过NAT技术可以将其私网IP地址转换为公网IP地址,可以实现多个私网用户共用一个公网IP地址来访问外部网络,这样既可保证网络互通,又节省了公网IP地址。NAT除了解决IP地址短缺的问题,还有两个好处:

  • 有效避免来自外网的攻击,可以很大程度上提高网络安全性。
  • 控制内网主机访问外网,同时也可以控制外网主机访问内网,解决了内网和外网不能互通的问题。

NAT主要有三种类型:

1.Basic NAT

Basic NAT方式属于一对一的地址转换,在这种方式下只转换IP地址,而不处理TCP/UDP协议的端口号,一个公网IP地址不能同时被多个私网用户使用。

Basic NAT实现过程如下:

  1. Router收到内网侧Host发送的访问公网侧Server的报文,其源IP地址为10.1.1.100。
  2. Router从地址池中选取一个空闲的公网IP地址,建立与内网侧报文源IP地址间的NAT转换表项(正反向),并依据查找正向NAT表项的结果将报文转换后向公网侧发送,其源IP地址是162.105.178.65,目的IP地址是211.100.7.34。
  3. Router收到公网侧的回应报文后,根据其目的IP地址查找反向NAT表项,并依据查表结果将报文转换后向私网侧发送,其源IP地址是211.100.7.34,目的IP地址是10.1.1.100。

由于Basic NAT这种一对一的转换方式并未实现公网地址的复用,不能有效解决IP地址短缺的问题,因此在实际应用中并不常用。

2.NAPT

除了一对一的NAT转换方式外,网络地址端口转换NAPT(Network Address Port Translation)可以实现并发的地址转换。它允许多个内部地址映射到同一个公有地址上,因此也可以称为“多对一地址转换”或地址复用。NAPT方式属于多对一的地址转换,它通过使用“IP地址+端口号”的形式进行转换,使多个私网用户可共用一个公网IP地址访问外网。

NAPT实现过程如下:

  1. Router收到内网侧Host发送的访问公网侧Server的报文。比如收到Host A报文的源地址是10.1.1.100,端口号1025。
  2. Router从地址池中选取一对空闲的“公网IP地址+端口号”,建立与内网侧报文“源IP地址+源端口号”间的NAPT转换表项(正反向),并依据查找正向NAPT表项的结果将报文转换后向公网侧发送。比如Host A的报文经Router转换后的报文源地址为162.105.178.65,端口号16384。
  3. Router收到公网侧的回应报文后,根据其“目的IP地址+目的端口号”查找反向NAPT表项,并依据查表结果将报文转换后向私网侧发送。比如Server回应Host A的报文经Router转换后,目的地址为10.1.1.100,端口号1025。

3.NAT Server

NAT具有屏蔽内部主机的作用,但有时内网需要向外网提供服务,比如提供WWW服务或者FTP服务。这种情况下需要内网的服务器不被屏蔽,外网用户可以随时访问内网服务器。NAT Server可以很好地解决这个问题,当外网用户访问内网服务器时,它通过事先配置好的“公网IP地址+端口号”与“私网IP地址+端口号”间的映射关系,将服务器的“公网IP地址+端口号”根据映射关系替换成对应的“私网IP地址+端口号”。

NAT Server的地址转换过程如下:

  1. 在Router上配置NAT Server的转换表项。
  2. Router收到公网用户发起的访问请求,设备根据该请求的“目的IP209.102.1.68+端口号80”查找NAT Server转换表项,找出对应的“私网IP192.168.1.68+端口号80”,然后用查找结果替换报文的“目的IP+端口号”。
  3. Router收到内网服务器的回应报文后,根据该回应报文的“源IP地址192.168.1.68+源端口号80”查找NAT Server转换表项,找出对应的“公网IP209.102.1.68+端口号80”,然后用查找结果替换报文的“源IP地址+源端口号”。

以上就是NAT技术的基本原理了,可以说这是路由器的一个基本功能,这就不难理解我们在家里如果上网就需要买个家用路由器了,从技术上理解就是路由器具有NAT功能,可以把局域网中的多台终端设备的私有IP转换成公网IP从而访问互联网了。