本文引用图片均来自 高军: 计算机网络
VPN
假设某公司两个部门分别位于北京和上海,两个部门各自形成一个局域网,两个局域网之间需要能够互相通信。实现通信最简单的方法是租用
电信运营商的专线联通两个局域网,但是需要高额的费用
为了解决通信和费用问题,人们提出了VPN(Virtual Private Network)
技术,VPN工作流程如下:
两个部门各自有一个拥有公网IP地址
的路由器用以联通公用因特网
- 部门A的主机发送数据到部门B时首先生成
内部IP数据报
发送给路由器R1,其首部的源地址和目的地址分别是位于两个局域网中的私有地址(由于路由器不转发
私有地址的数据报因此这类数据报被称为内部IP数据报) - 路由器R1将内部数据报
加密
并封装进IP数据报中
,其首部的源地址和目的地址分别为自身公网IP地址
和部门B路由器R2的公网IP地址
- 加密后的数据报在公网上经过数个路由器的转发后到达路由器R2
- R2收到数据报首先将其
解密
还原成内部数据报,然后根据内部数据报的目的IP地址转发给相应的主机
数据报的加密保证了数据在公网上流通时的安全性
,R1和R2之间从逻辑上看
就像存在一条点对点的链路,VPN以公用因特网为信息通道实现了专用线路的效果
VPN可大致分为以下几类:
- 内联网VPN:同一机构内的不同网络所构成的VPN
- 外联网VPN:机构的VPN运行某些外部机构参与进来
- 远程接入VPN:只要接入因特网并运行特定的VPN软件即可接入机构的VPN
NAT
NAT(Network Address Translation)
的提出是为了缓解
IPv4地址耗尽的问题,能使局域网内的主机共享少量的公网IP地址
来访问因特网
实现了NAT的路由器称为NAT路由器
,它有一小批
公网IP。当局域网中的主机想要访问因特网上的主机(服务器)时,主机照常发出IP数据报,源地址为自身的私有网络地址
,目的地址填目标主机公网地址。NAT路由器收到数据报后就从所拥有的公网IP中选择一个
替换数据报中的源地址,然后记录
公网IP和源主机私有地址的关联,最后转发数据报。当路由器接收到响应报文时只需根据目的地址查表
找到对应的私有地址,然后将目的地址改为私有地址并将数据报转发给局域网中的主机
以上基于IP
的方案缺点比较明显,假设NAT路由器有N个公网IP
,那么局域网中最多同时有N台主机
可以访问因特网。为此,人们提出了基于IP+端口
的NAT方案,称为NAPT(Netword Address and Port Translation)
实现了NAPT的路由器称为NAPT路由器
,其工作流程和NAT路由器一样,只不过NAPT路由器把地址和端口
结合在一起写入记录中。另外,由于可以基于端口做区分,所以NAPT只需一个外网
地址就可以实现多个局域网主机同时访问因特网
值得一提的是,使用了NAT的局域网想要访问因特网必须主动
发起通信,因为主动发起通信后NAT路由器中才有私有地址和公网地址的对应记录,如果因特网上的主机先发起通信,NAT路由器就找不到其想要访问的局域网主机
当然,如果确实有外网主机先发起通信的需求也可以通过内网穿透等技术来实现通信
参考文献
- 【1】高军: 计算机网络