计算机网络:网络层 - 虚拟专用网 VPN & 网络地址转换 NAT
- 专用地址与全球地址
- 虚拟专用网 VPN
- 隧道技术
- 网络地址转换 NAT
- 网络地址与端口号转换 NAPT
专用地址与全球地址
考虑到 IP 地址的紧缺,以及某些主机只需要和本机构内部的其他主机进行通信,互联网管理机构将一部分 IP 地址作为专用地址
(private address)供机构内部自行分配使用。
专用地址
只能用于一个机构的内部通信,不能用于和互联网上的主机通信(互联网中的所有路由器对目的地址是专用地址的数据报一律不进行转发)。不同的网络内部,可以使用相同的专用地址。
专用地址
也称为:本地地址
、私网地址
、内网地址
。
与专用地址
相对的是全球地址
,这是互联网主机通信所必须具有的、全球唯一的 IP 地址,必须向互联网的管理机构申请才可以使用。
全球地址
也称为:公用地址
、公网地址
、外网地址
互联网管理机构划分的三个 IPv4 专用地址块如下:
10.0.0.0/8
,即从10.0.0.0
到10.255.255.255
。172.16.0.0/12
,即从172.16.0.0
到172.31.255.255
192.168.0.0/16
,即从192.168.0.0
到192.168.255.255
虚拟专用网 VPN
采用专用 IP 地址的互连网络称为专用网
。如果一个机构有很多部门且分布在世界各地,就可以利用公用的互联网作为此机构各专用网之间的通信载体,形成一个更大的专用网
,这样的专用网称为虚拟专用网 VPN
(Virtual Private Network)。
如图所示,左侧的A
是一个专用网
,右侧的B
也是一个专用网
。它们通过一对路由器R1
和R2
实现通信,从而实现将一个专用网
合并成一个更大的虚拟专用网VPN
。但其实两个专用网
之间通信是经过了因特网的。
隧道技术
虚拟专用网是基于隧道技术实现的,如下图:
主机X
想要给主机Y
发送信息,此时X
将自己的专用地址
作为源地址
,Y
的专用地址
作为目的地址
构建一个报文发送出去。
路由器R1
接收到该报文后,将整个报文作为数据部分,重新封装为一个新的IP数据报
。此时新的数据报源地址
变为R1
的接口的地址125.1.2.3
,目的地址
变为R2
接口的地址194.4.5.6
。由于这两个都是合法的全球地址,可以通过隧道在互联网正常传输。
当R2
收到该报文后,提取出其中的原始数据报,再发往部门B
内部,此时Y
就可以收到该报文了。
以上通信过程,本质还是专用网
与专用网
的通信,那么专用网
能不能和互联网
上的主机通信呢?是可以的,此时就需要网络地址转换 NAT
。
网络地址转换 NAT
专用网内的主机如果想要和互联网上的主机通信,使用得最多的方法是网络地址转换 NAT
(Network Address Translation)。
这种方法需要在专用网
连接到互联网
的路由器上安装 NAT 软件
。装有 NAT 软件的路由器叫做 NAT 路由器
,它至少有一个有效的全球 IP 地址。
所有使用专用地址
的主机在和外界通信时都要在 NAT 路由器
上将其专用地址
转换成全球 IP 地址
才能和互联网通信。
如图所示:
当专用网
的主机想要连接互联网,此时经过NAT 路由器
,路由器会做以下任务:
- 将IP数据报的
源地址
修改为全球IP地址
- 在
NAT转换表
中记录专用地址
与全球IP地址
的映射关系 - 转发该数据报
由于源地址
变成了全球IP
,所以可以正常在互联网传输。
当互联网上的主机回应了该报文,往回发送一个报文,目的地址
为刚刚的源地址
,当报文传送到NAT 路由器
,路由器会做以下任务:
- 查找自己的
NAT转换表
,找到该目的地址
对应的专用地址
- 将IP数据报中的
目的地址
修改为对应的专用地址
- 转发该数据报
此时主机就可以收到回应报文了。
NAT 路由器
具有多少个全球 IP 地址
,就可以同时有几台主机访问互联网。
可以使专用网内较多数量的主机轮流使用 NAT 路由器有限数量的全球 IP 地址。
通过 NAT 路由器的通信必须由专用网内的主机发起,因此专用网内部的主机不能直接充当服务器用。
网络地址与端口号转换 NAPT
NAT
并不能节省全球 IP 地址。为了更加有效地利用 NAT 路由器上的全球 IP 地址,现在常用的 NAT 转换表把运输层的端口号也利用上。
这样就可以使多个专用网主机,共用 NAT 路由器上的一个全球 IP 地址,同时和互联网上的不同主机进行通信。
使用端口号的 NAT 叫做网络地址与端口号转换 NAPT
(Network Address and Port Translation),而不使用端口号的 NAT 就叫做传统的 NAT (traditional NAT)。
如图:
两个专用地址192.168.0.3
和192.168.0.4
被转化为了同一个全球地址172.38.1.5
。但是前者使用了端口号40001
,后者使用了端口号40002
,这样就可以区分两台主机,从而让它们用同一个全球 IP 地址
与互联网通信了。