计算机网络:网络层 - 虚拟专用网 VPN 网络地址转换 NAT

计算机网络:网络层 - 虚拟专用网 VPN & 网络地址转换 NAT

    • 专用地址与全球地址
    • 虚拟专用网 VPN
      • 隧道技术
    • 网络地址转换 NAT
      • 网络地址与端口号转换 NAPT


专用地址与全球地址

考虑到 IP 地址的紧缺,以及某些主机只需要和本机构内部的其他主机进行通信,互联网管理机构将一部分 IP 地址作为专用地址(private address)供机构内部自行分配使用。

专用地址只能用于一个机构的内部通信,不能用于和互联网上的主机通信(互联网中的所有路由器对目的地址是专用地址的数据报一律不进行转发)。不同的网络内部,可以使用相同的专用地址

专用地址也称为:本地地址私网地址内网地址

专用地址相对的是全球地址,这是互联网主机通信所必须具有的、全球唯一的 IP 地址,必须向互联网的管理机构申请才可以使用。

全球地址也称为:公用地址公网地址外网地址

互联网管理机构划分的三个 IPv4 专用地址块如下:

  • 10.0.0.0/8,即从 10.0.0.010.255.255.255
  • 172.16.0.0/12,即从 172.16.0.0172.31.255.255
  • 192.168.0.0/16,即从 192.168.0.0192.168.255.255

虚拟专用网 VPN

采用专用 IP 地址的互连网络称为专用网。如果一个机构有很多部门且分布在世界各地,就可以利用公用的互联网作为此机构各专用网之间的通信载体,形成一个更大的专用网,这样的专用网称为虚拟专用网 VPN (Virtual Private Network)。

在这里插入图片描述

如图所示,左侧的A是一个专用网,右侧的B也是一个专用网。它们通过一对路由器R1R2实现通信,从而实现将一个专用网合并成一个更大的虚拟专用网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 路由器,路由器会做以下任务:

  1. 将IP数据报的源地址修改为全球IP地址
  2. NAT转换表中记录专用地址全球IP地址的映射关系
  3. 转发该数据报

由于源地址变成了全球IP,所以可以正常在互联网传输。

当互联网上的主机回应了该报文,往回发送一个报文,目的地址为刚刚的源地址,当报文传送到NAT 路由器,路由器会做以下任务:

  1. 查找自己的NAT转换表,找到该目的地址对应的专用地址
  2. 将IP数据报中的目的地址修改为对应的专用地址
  3. 转发该数据报

此时主机就可以收到回应报文了。

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.3192.168.0.4被转化为了同一个全球地址172.38.1.5。但是前者使用了端口号40001,后者使用了端口号40002,这样就可以区分两台主机,从而让它们用同一个全球 IP 地址与互联网通信了。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/28998.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cbsd创建ubuntu jail 时下载系统慢的问题解决

下载时速度慢 使用cbsd创建ubuntu jail的时候 cbsd jconstruct-tui 提示: no base dir in: /usr/jails/basejail/base_amd64_amd64_jammy Select base sources:0 .. CANCELa .. build b .. extract c .. pkg d .. repo 选了pkg没找到 fetch: https://pkg.convec…

【减法网络】Minusformer:通过逐步学习残差来改进时间序列预测

摘要 本文发现泛在时间序列(TS)预测模型容易出现严重的过拟合。为了解决这个问题,我们采用了一种去冗余的方法来逐步恢复TS的真实值。具体来说,我们引入了一种双流和减法机制,这是一种深度Boosting集成学习方法。通过将信息聚合机制从加法转…

【第16章】Vue实战篇之跨域解决

文章目录 前言一、浏览器跨域二、配置代理1.公共请求2.代理配置 总结 前言 前后端项目分离衍生出浏览器跨域问题,开发之前我们通过配置代理解决这个问题。 一、浏览器跨域 浏览器的跨域问题主要是由于浏览器的同源策略导致的。同源策略是浏览器的一个安全功能&…

OpenGL3.3_C++_Windows(11)

git submodule项目子模块 Git Submodule (子模块的代码并不直接存储在父仓库中,而是通过一个指针来维护)克隆含有子模块的仓库时,使用git管理Git Clone (复制一份完整的Git仓库到本地)若仓库包含子模块&am…

【设计模式-12】代理模式的代码实现及使用场景

 代理模式是一种应用很广发的结构性设计模式,它的设计初衷就是通过引入新的代理对象,在客户端和目标对象之间起到中介的作用,从而实现控制客户端对目标对象的访问,比如增强或者阉割某些能力。 1. 概述 代理模…

《优化接口设计的思路》系列:第1篇—什么是接口缓存

一、缓存的定义: 缓存是一种存储数据的技术,用于提高数据访问的速度和效率。缓存通常存储在内存中,因为内存访问速度远快于磁盘和网络。数据接口通常会使用缓存技术,以降低对后端数据存储和处理的压力,提高系统性能。…

⭐ ▶《强化学习的数学原理》(2024春)_西湖大学赵世钰 Ch3 贝尔曼最优公式 【压缩映射定理】

PPT 截取必要信息。 课程网站做习题。总体 MOOC 过一遍 1、视频 学堂在线 习题 2、过 电子书,补充 【下载:本章 PDF 电子书 GitHub 界面链接】 [又看了一遍视频] 3、总体 MOOC 过一遍 习题 学堂在线 课程页面链接 中国大学MOOC 课程页面链接 B 站 视频链…

c++qt合并两张灰度图像

需求:将两张尺寸相同的灰度图像进行合并,合并后的图像,每个像素点灰度值为两张原图对应像素点灰度值之和。若超过255,则最大为255。 方法一: 将图像读取为cv::Mat,再调用opencv的cv::add方法,进…

【ai】初识pytorch

初识PyTorch 大神的例子运行: 【ai】openai-quickstart 配置pycharm工程 简单例子初识一下Pytorch 好像直接点击下载比较慢? 大神的代码 在这个例子中,首先定义一个线性模型,该模型有一个输入特征和一个输出特征。然后定义一个损失函数和一个优化器,接着生成一些简单的线性…

Golang内存模型与分配机制

简述 mheap为堆,堆和进程是一对一的;mcentral(小mheadp),mcahe(GMP的P私有),分配内存顺序由后向前。 在解决这个问题,Golang 在堆 mheap 之上,依次细化粒度&a…

前端构建工具用得好,构建速度提升 10 倍

今天来盘点一下前端构建工具。 Turbopack Turbopack,由Vercel开源,是下一代高性能的JavaScript应用构建工具,目前用于 Next.js 中。Turbopack旨在通过革新JavaScript应用的打包流程来显著提升应用性能,它专注于缩短加载时间&…

Python工具箱系列(五十三)

​​水印 水印是一种常见的图片处理需求。当既需要展示,又需要保护知识产权时,就需要使用文字或者图片来打水印。下面的代码展示了文字水印与图片水印的过程。 ​--javascripttypescriptbashsqljsonhtmlcssccppjavarubypythongorustmarkdown from pat…

游戏找不到steam_api64.dll无法继续执行代码的解决方法

在电脑使用过程中,我们可能会遇到一些错误提示,其中之一就是“steam_api64.dll丢失”。那么,steam_api64.dll到底是干嘛的?为什么会丢失?对电脑有什么具体影响?如何解决这个问题?本文将为您详细…

Python基础教程(九):Lambda 函数

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝&#x1f49…

vivado NODE、PACKAGE_PIN

节点是Xilinx部件上用于路由连接或网络的设备对象。它是一个 WIRE集合,跨越多个瓦片,物理和电气 连接在一起。节点可以连接到单个SITE_, 而是简单地将NETs携带进、携带出或携带穿过站点。节点可以连接到 任何数量的PIP,并且也可以…

基于QT5.12.7的VTK8.2下的VS2015 X64源码编译以及测试

有一段时间没更新博客了,最近在考虑使用VTK作为软件的后处理显示,相比于OSG,VTK在后处理上集成了很多优秀的算法,使用起来比较方便,而且后处理一般不需要太多的交互,所以VTK是一个不错的选择。 之前对VTK了…

【多视图感知】BEVFormer: Learning Bird’s-Eye-View Representation

BEVFormer: Learning Bird’s-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers 论文链接:http://arxiv.org/abs/2203.17270 代码链接:https://github.com/fundamentalvision/BEVFormer 一、摘要 本文提出了一种名为BEVFormer的新框架&am…

智慧班牌系统源码,智慧校园云平台系统,基于小程序原生开发的智慧校园小程序源码

智慧班牌系统,也被称为电子班牌系统,是一款专为学校打造的信息化产品,用于加强学校班级文化建设和班级风采展示。该系统通过整合学校对外宣传、日常互动交流、教师教学办公、课外学习延伸、智能硬件接入等各种服务,为老师、家长、…

数据库原理(数据库设计)——(3)

一、数据库设计概述 1.数据库设计的基本任务和目标 基本任务 根据用户的信息需求、数据库操作需求,设计一个结构合理、使用方便、效率高的数据库。 设计目标 满足用户的应用要求;准确模拟现实世界;能背某个DBMS(数据库管理系统…

使用超声波麦克风阵列预测数控机床刀具磨损

预测性维护是使用传感器数据来推断机器状态,并从这些传感器数据中检测出在故障发生之前存在的缺陷或故障的过程。预测性维护在所有工业领域都是一种日益增长的趋势,包括轴承故障检测、齿轮磨损检测或往复式机器中的活塞磨损等许多其他例子。在预测性维护…