计算机网络 (11) 网络层-虚拟专用网VPN与网络地址转换NAT

317 阅读4分钟

本文引用图片均来自 高军: 计算机网络

VPN

假设某公司两个部门分别位于北京和上海,两个部门各自形成一个局域网,两个局域网之间需要能够互相通信。实现通信最简单的方法是租用电信运营商的专线联通两个局域网,但是需要高额的费用

image.png

为了解决通信和费用问题,人们提出了VPN(Virtual Private Network)技术,VPN工作流程如下:

两个部门各自有一个拥有公网IP地址的路由器用以联通公用因特网

  1. 部门A的主机发送数据到部门B时首先生成内部IP数据报发送给路由器R1,其首部的源地址和目的地址分别是位于两个局域网中的私有地址(由于路由器不转发私有地址的数据报因此这类数据报被称为内部IP数据报)
  2. 路由器R1将内部数据报加密并封装进IP数据报中,其首部的源地址和目的地址分别为自身公网IP地址和部门B路由器R2的公网IP地址
  3. 加密后的数据报在公网上经过数个路由器的转发后到达路由器R2
  4. R2收到数据报首先将其解密还原成内部数据报,然后根据内部数据报的目的IP地址转发给相应的主机
image.png

数据报的加密保证了数据在公网上流通时的安全性,R1和R2之间从逻辑上看就像存在一条点对点的链路,VPN以公用因特网为信息通道实现了专用线路的效果

VPN可大致分为以下几类:

  1. 内联网VPN:同一机构内的不同网络所构成的VPN
  2. 外联网VPN:机构的VPN运行某些外部机构参与进来
  3. 远程接入VPN:只要接入因特网并运行特定的VPN软件即可接入机构的VPN

NAT

NAT(Network Address Translation)的提出是为了缓解IPv4地址耗尽的问题,能使局域网内的主机共享少量的公网IP地址来访问因特网

实现了NAT的路由器称为NAT路由器,它有一小批公网IP。当局域网中的主机想要访问因特网上的主机(服务器)时,主机照常发出IP数据报,源地址为自身的私有网络地址,目的地址填目标主机公网地址。NAT路由器收到数据报后就从所拥有的公网IP中选择一个替换数据报中的源地址,然后记录公网IP和源主机私有地址的关联,最后转发数据报。当路由器接收到响应报文时只需根据目的地址查表找到对应的私有地址,然后将目的地址改为私有地址并将数据报转发给局域网中的主机

image.png image.png

以上基于IP的方案缺点比较明显,假设NAT路由器有N个公网IP,那么局域网中最多同时有N台主机可以访问因特网。为此,人们提出了基于IP+端口的NAT方案,称为NAPT(Netword Address and Port Translation)

实现了NAPT的路由器称为NAPT路由器,其工作流程和NAT路由器一样,只不过NAPT路由器把地址和端口结合在一起写入记录中。另外,由于可以基于端口做区分,所以NAPT只需一个外网地址就可以实现多个局域网主机同时访问因特网

image.png

值得一提的是,使用了NAT的局域网想要访问因特网必须主动发起通信,因为主动发起通信后NAT路由器中才有私有地址和公网地址的对应记录,如果因特网上的主机先发起通信,NAT路由器就找不到其想要访问的局域网主机

当然,如果确实有外网主机先发起通信的需求也可以通过内网穿透等技术来实现通信

参考文献