30.什么是NAT?NAT有哪几种?和端口映射有什么区别?

私有地址:
10.0.0.0-10.255.255.255;
172.16.0.0-172.31.255.255;
192.168.0.0-192.168.255.255。

NAT的简单示意图
在这里插入图片描述

静态NAT

如果一个内部主机唯一占用一个公网IP,这种方式被称为一对一模型。此种方式下,转换上层协议就是不必要的,因为一个公网IP就能唯一对应一个内部主机。显然,这种方式对节约公网IP没有太大意义,主要是为了实现一些特殊的组网需求。比如用户希望隐藏内部主机的真实IP,或者实现两个IP地址重叠网络的通信。

动态NAT

它能够将未注册的IP地址(私有地址)映射到注册IP地址池(公网地址)中的一个地址。不像使用静态NAT那样,你无需静态地配置路由器,使其将每个内部地址映射到一个外部地址,但必须有足够的公有因特网IP地址,让连接到因特网的主机都能够同时发送和接收分组。

NAT重载PAT

NAT重载也是动态NAT,它利用源端口将多个私网ip地址映射到一个公网ip地址(多对一)。那么,它的独特之处何在呢?它也被称为端口地址特换(PAT)。通过使用PAT(NAT重载),只需使用一个公网ip地址,就可将数千名用户连接到因特网。其核心之处就在于利用端口号实现公网和私网的转换。

面对私网内部数量庞大的主机,如果NAT只进行IP地址的简单替换,就会产生一个问题:当有多个内部主机去访问同一个服务器时,从返回的信息不足以区分响应应该转发到哪个内部主机。

此时,需要NAT设备根据传输层信息或其他上层协议去区分不同的会话,并且可能要对上层协议的标识进行转换,比如TCP或UDP端口号。这样NAT网关就可以将不同的内部连接访问映射到同一公网IP的不同传输层端口,通过这种方式实现公网IP的复用和解复用。这种方式也被称为端口转换PAT、NAPT或IP伪装;但更多时候直接被称为NAT,因为它是最典型的一种应用模式。

举例说明PAT的过程

客户端172.18.250.6和百度服务器202.108.22.5通信,172.18.250.6发送数据时,先转换为219.155.6.240:1723(任意>1024的随机端口),然后再利用这个身份发送数据给百度服务器,然后百度服务器回应数据并发送给219.155.6.240:1723,NAT网关检查自己的关联表,意识到这是自己地私网中172.18.250.6的数据包,然后把这个数据发送给客户端

**

PAT和端口映射的区别

**

原理介绍

PAT介绍:

从原理上面来说,我们通常所说的nat实际上已经不是传统的1对1(1个外网地址对应1个内网地址)及多对多(多个外网地址动态对应多个内网地址)的模式了,通常来说是1对多(1个外网地址的多个端口对应多个内网地址),例如外网地址200.201.30.41这个外网地址的1025~65535的端口对应192.168.0.0/16的地址块,即多个内网ip服用一个ip地址进行internet的连接,也就是pat技术。
通常所说的nat是对网络层的ip地址进行的操作,也就是三层的技术。

端口映射:

而端口映射与pat有一定类似的地方,他是将内网ip的固定的端口映射到防火墙的外网ip地址的固定端口上,并由防火墙代理发布出去。这是四层的技术。

两者比较:

端口映射与pat的相似的地方在于,它们都是基于传输层的端口进行的转换,而不同的地方在于,pat对于端口的使用是空闲随机的,而端口映射的端口映射则是固定的。

配置角度介绍

NAT介绍

从配置的角度来看,对于nat,只需要定义一个公网ip地址,再定义一个内部的地址池,则转换的过程是自动进行了(当然也可以根据需求定义更多的细节,如源地址、目的地址、双向地址转换等等)。对于端口映射,则要制定内部的ip地址,端口号,映射的外网的ip地址,端口号。
举例来说,在某个网络的防火墙上有两个公网地址,200.201.30.41,200.201.70.71(举例),定义了两个nat,分别是
200.201.30.41——>192.168.0.0/16
200.201.70.71——>172.168.0.0/16
则内网中,所有192.168.0.0网段的用户上网时显示的公网ip都是200.201.30.41,同理,172.168.0.0/16的公网ip是200.201.70.71,因为内网用户复用了外网ip的随机端口来进行internet的访问,这个端口的使用是随机的。
对于nat,每一个访问的建立,都会在防火墙上留下记录,比如192.168.1.50的12345端口复用了200.201.30.41的54321端口进行对新浪的访问,则防火墙会有一个对应的表:200.201.30.41:54321<——>192.168.1.50:12345,当数据返回时,仍然会按照这个连接,将数据返回给内网主机192.168.1.50;当连接结束时,会释放200.201.30.41:54321的端口,这时,54321号端口又可以给其他的连接请求使用。这是对于nat的情况。

端口映射

而对于端口映射的情况则不同,例如内网的web服务器的ip地址为172.168.1.10,web服务需要向外网发布,这时,就需要进行端口映射,在防火墙上建立固定的端口映射表172.168.1.10:80<——>200.201.70.71:80,这个映射是固定的。

这样,在外网的用户访问该web服务器的时候,访问的就是外网200.201.70.71这ip地址。访问时使用http://200.201.70.71即可访问到172.168.1.10:80的web服务器(实际上是http://200.201.70.71:80,由于http协议默认使用80端口,所以可以省略)。这时,200.201.70.71的80端口就被占用了,也就是不能再被其他的内部地址使用,虽然这里的80端口是保留端口,但是原理是一样的。

在做端口映射的时候,可以将内部地址端口映射为外部地址相同的端口,也可以映射为不同的端口,如内网有另外一台web服务器172.168.1.20需要向外网发布,但是200.201.70.71的80端口已经被172.168.1.10的80端口占用了,这时,可以使用其他的任何未被占用的端口(非保留端口),如建立以下的映射:172.168.1.20:80<——>200.201.70.71:8080,这时,访问http://200.201.70.71:8080即可访问到172.168.1.20发布的web服务,只是这个时候必须指定访问8080端口,否则会访问到172.168.1.10发布的web服务。而由于8080端口已经被端口映射的服务占用了,所以nat时,是不会使用该端口了(端口映射的优先级较高)。

注意:映射的外网ip地址的端口可以随意指定,但是内部的要使用的服务端口必须固定,如要发布web服务的172.168.1.10服务器必须使用80地址,如果使用3389端口,就变成了远程连接。

你可能感兴趣的:(网络基础&每日分享✍,NAT技术,端口映射与NAT的区别)