NAT、V*N、隧道技术

一、NAT介绍

Network Address Translation,NAT,网络地址转换

私有IP地址

IPv4的地址危机,地址有限,所以划了一些私有地址/专用地址供机构内网使用,这些地址只能和机构内部主机通信,不能和公网上的其他主机通信。

NAT技术

虽然私有地址的提出解决了地址短缺问题,但是分配的私有地址并不能直接与公网IP进行通信,因此这时候就需要用到NAT技术,即将私有地址转换成公网IP地址,通过转换后的IP与其他公网IP进行通信。使用NAT技术需要在专用网连接到互联网的路由器上安装NAT软件,安装了NAT软件的路由器称为NAT路由器。

可以看到NAT技术打破了互联网的连通性,隐藏了专用网IP的真实地址。随着IPv6的推进,不再存在IP地址短缺的问题,NAT技术也将没有使用场景。
在这里插入图片描述

NAT存在的问题与NAPT的提出

NAT只能实现专用网主机向公网主机传送数据的单向通信,因为当公网主机向专用网主机发送数据包时,在数据达到NAT路由器时,不知道该将路由器接口的公网IP转换成哪个私有IP。简单的来说,私有IP到NAT路由器的公网IP是一个多对一的映射。

为了实现专用网主机和公网主机的双向通信,NAPT(Network Address and Port Translation)技术被提出。简单地来说,要实现公网主机到专用网主机的通信,需要建立公网IP到各个私有IP的映射。相比NAT,NAPT在建立映射关系的过程中加入了运输层端口(port)的概念,采用端口作为映射的标签,解决了NAT的问题。需要说明的是,NAT路由器转发出去的数据包的源端口是路由器生成的NAT端口,并不是内部主机发过来的内部端口(因为两台主机的端口可能一样),如果再有两台内部主机同时访问百度网站,NAT根据响应包的目的端口(注意这里是NAT端口),并查询地址转换表,即可将响应组装成内部IP数据报,并转发到正确的主机。
在这里插入图片描述
在这里插入图片描述

二、V*N介绍

Virtual Private Network, 虚拟专用网络
Virtual:虚拟的,在计算机网络的相关名词中,Virtual很常见,Virtual Local Network(VLAN),又如虚拟端口,在trunk link等中都有广泛应用。我个人理解的虚拟也即逻辑上的概念,并非物理存在,而是建立在物理连接上的虚拟、逻辑概念。因此,虚拟专用网络没有自己的物理专线,而是建立在已有公网上的逻辑概念上的网络。
Private:私人的,专用的,是为某些机构提供的仅供其内部通信使用的专用网络,这个词决定了该种网络需要具有保密性
通过对以上两个名词的解释,我想读者大概可以窥见该网络的形式和提出意义:虚拟专用网络,即利用公共网络(如 Internet)来构建的专用网络技术,保证了VPN中任何两台计算机之间的通信对外界是隐藏的。

V*N使用技术

上面提到了V*N有两大特点:

  1. 虚拟
  2. 专用、私密

这两大特点也决定了其所使用的技术:

  1. 隧道传输
  2. 加密技术
    在这里插入图片描述

隧道技术

隧道技术将数据进行封装成新的包后传送出去,达到目的地之后再进行解包,利用隧道技术可以在公网上搭建一条逻辑路径,实现逻辑上直通的点对点链路。
隧道是由隧道协议建立的,常见的隧道协议分为二层协议和三层协议。第二层隧道协议是先把各种网络协议封装到PPP中,再把整个数据包装入其中。第三层隧道协议是把各种网络协议直接装入隧道协议中,形成的数据包依靠第三层协议进行传输。

除了构建虚拟专用网络,采用隧道技术还可以传输不同协议的数据帧或包。

以GRE为例,要了解其工作原理,请想像一下汽车和渡轮之间的区别。汽车在陆地上行驶,而渡轮在水上行驶。汽车通常不能在水上行驶,但是可以将汽车装载到渡轮上。在这个类比当中,地形类型好比是支持某些路由协议的网络,而车辆则好比是数据包。GRE 是一种将一种类型的数据包装载到另一种类型的数据包中的方式,以便第一个数据包可以穿越它通常无法穿越的网络,就像一种类型的运输工具(汽车)被装载到到另一种类型的运输工具(渡轮)上,以便穿越原本无法行驶的地形。例如,假设一家公司需要在位于两个不同办公室的局域网(LAN)之间建立连接。两个 LAN 都使用最新版本的 互联网协议 IPv6。但是,为了从一个办公网络到达另一个办公网络,流量必须通过一个由第三方管理的网络 — 该网络有些过时,仅支持较旧的 IPv4 协议。借助 GRE,该公司可以将 IPv6 数据包封装在 IPv4 数据包中,然后便可通过此网络传输流量。回到那个类比,IPv6 数据包是汽车,IPv4 数据包是渡轮,而第三方网络则是水。

使用GRE还可以克服IGP协议的一些局限性。

例如,RIP路由协议是一种距离矢量路由协议,最大跳数为15。如果网络直径超过15,设备将无法通信。这种情况下,可以使用GRE技术在两个网络节点之间搭建隧道,隐藏它们之间的跳数,扩大网络的工作范围。

常见的隧道协议有:
IP in IP (Protocol 4): IP in IPv4/IPv6
SIT/IPv6 (Protocol 41): IPv6 in IPv4/IPv6
GRE (Protocol 47): Generic Routing Encapsulation (通用路由协议)
GRE仅进行封装,没有加密功能
https://blog.csdn.net/taozpwater/article/details/9774123?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-9774123-blog-124812126.pc_relevant_multi_platform_whitelistv3&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-9774123-blog-124812126.pc_relevant_multi_platform_whitelistv3&utm_relevant_index=1
OpenVN (UDP port 1194): Openvn
SSTP (TCP port 443): Secure Socket Tunneling Protocol
IPSec (Protocol 50 and 51):Internet Protocol Security
L2TP (Protocol 115): Layer 2 Tunneling Protocol
VXLAN (UDP port 4789): Virtual Extensible Local Area Network.

基于底层的PPP(点对点传输协议)来实现建立专属网络的功能。过程大概是这个样子的

vpn client利用PPTP在系统内建立一个虚拟网卡
计算机网络通讯客户端(例如:浏览器,微信什么的)借用系统接口将需要发送的数据封装成IP包,源地址为虚拟网卡地址。目标地址为期望访问的地址,比如说google.com。
虚拟网卡拿到IP包之后,PPTP驱动会按照PPP协议对IP包的完整内容包装到payload里面(这就是隧道技术)用一层新的IP头包裹,并将这个新包的目标地址设置为VPNServer。
VPNserver收到这个包之后将payload内容拿出来,并按照IP协议再解析一边,拿到原始的目标地址,代为发送到google.com
收到google的回复,server将数据封装到IP包里面,再按照PPP协议分装,添加新的IP头发送到原始的虚拟网卡。
虚拟网卡将数据交由客户端处理

MPLS 也类似一种隧道技术,LDP(标签分发协议)就是其对应的隧道协议。

NAT和V*N的区分

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

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值