VPN协议与NAT协议的原理和区别

1.内网IP

IANA保留了三块只能用于专用互联网内部通信的IP地址空间:

前缀 最低地址 最高地址
10/8(A类) 10.0.0.0 10.255.255.255
172.16/12(B类) 172.16.0.0 172.31.255.255
192.168/16(C类) 192.168.0.0 192.168.255.255

2.虚拟专用网络协议VPN

如果一个机构由分散的多个网点构成,为了保证通信的私密性,可以采用“租用专线”的方法实现各网点之间的通信,但这种方式成本较高,因此更多的是采用VPN协议。
虚拟专用网络:利用公共网络(如 Internet)来构建的专用网络技术,保证了VPN中任何两台计算机之间的通信对外界是隐藏的。
VPN协议与NAT协议的原理和区别_第1张图片
搭建VPN网络的机构需要有两种地址:

  • 本地地址:仅在机构内部使用的 IP 地址,可以由本机构自行分配,而不需要向因特网的管理机构申请
  • 全球地址:全球惟一的IP地址,必须向因特网的管理机构申请

VPN工作原理

VPN的实现主要使用了两种基本技术:隧道传输 和 加密技术

  • VPN定义了两个内部网络的路由器之间通过Internet建立的通信隧道,使用IP-in-IP封装后在隧道中转发数据报
  • 为了保证保密性,隧道发送路由器把内网IP数据报加密后,封装为外网IP数据报的数据部分在外网中进行传输
  • 隧道接收路由器收到数据报后,从外网数据报中取出数据部分,将数据报解密,还原成内网数据报,然后转发该数据报

这个过程表示如下:
VPN协议与NAT协议的原理和区别_第2张图片
图中的X和Y即为内网中的两台主机,它们发送和接收的都是内网IP数据报(即源IP为10.1.0.1、目的IP为10.2.0.3或对换)。X的内网IP数据报到达边缘路由器R1后,R1将内网IP数据报进行加密,然后重新封装为外网IP数据报,此时的源IP为125.1.2.3、目的IP为194.4.5.6,外网IP数据报到达R2后,R2从中取出数据部分并进行解密,还原出内网IP数据报,然后将其发送给Y。

3. 网络地址转换协议NAT

大家都知道,我们的电脑使用的都是内网IP,那这些本地编址的专用网络如何访问外网主机呢?VPN协议与NAT协议的原理和区别_第3张图片
网络地址转换 NAT (Network Address Translation)就是用来解决本地编址的内部网络与外网通信的问题:

  • 需要在内网与外网的边缘路由器上安装 NAT 软件,装有 NAT 软件的路由器叫做 NAT路由器,它至少有一个有效的外部全球地址 IPG
  • 所有使用本地地址的主机在和外界通信时都要在 NAT 路由器上将其本地地址转换成 IPG 才能和因特网连接

NAT工作原理

NAT的工作原理原理即进行数据包的地址转换
请求包地址转换:
VPN协议与NAT协议的原理和区别_第4张图片
响应包地址转换:
VPN协议与NAT协议的原理和区别_第5张图片
在以上这种转换模型中可以发现,如果两台内网主机X Y同时请求百度的网站,对于从百度发回来响应,NAT路由器无法确定是对X的响应还是对Y的相应,但它提供了一种地址转换思路,NAT采用的是以下这种更复杂的地址转换方式:
请求包地址转换:
VPN协议与NAT协议的原理和区别_第6张图片
响应包地址转换:
VPN协议与NAT协议的原理和区别_第7张图片
需要说明的是,NAT路由器转发出去的数据包的源端口是路由器生成的NAT端口,并不是内部主机发过来的内部端口(因为两台主机的端口可能一样),如果再有两台内部主机同时访问百度网站,NAT根据响应包的目的端口(注意这里是NAT端口),并查询地址转换表,即可将响应组装成内部IP数据报,并转发到正确的主机。

PS:Nginx的四层反向代理即使用的NAT协议

4.VPN与NAT的区别

可以发现VPN协议和NAT协议都是通过重新构建一个IP首部来实现的,但他们的实现又有区别,VPN是将内部IP数据报加密后打包成外部IP数据报的数据部分,它的主要目的是为了数据的保密性,而NAT是纯进行地址转换,它的目的是为了解决本地编址的内部网络与外网通信的问题。

你可能感兴趣的:(网络编程)