当前位置: 首页 > news >正文

网络层9——虚拟专用网VPN和网络地址转换NAT

目录

 一、为什么有虚拟专用网?

二、如何理解“虚拟专用网”?

三、IP隧道技术实现虚拟专用网

四、网络地址变换


 一、为什么有虚拟专用网?

第一,IPv4只有32位,最多有40亿个全球唯一的IP地址
数量不够,无法保证每一个用户都拥有一个全球唯一的IP地址
而没有IP地址,就意味着无法接入互联网
第二,很多情况下,一台主机主要和本机构内的其他主机进行通信
基于此,主机并没有必须连接互联网的必要

因此,仅在一个内部进行通信的主机,
可以在机构内部进行分配IP地址,该IP地址仅在该机构内有效
于是,一个机构内的主机就不需要申请全球唯一的IP地址
就可以让本机构内的所有主机进行互相通信

可是,有时机构内部的某些主机需要和连接互联网
此时内部分配的IP地址可能会和全球唯一的IP地址重复
引起歧义
如何解决这个问题?
使用专用地址

什么是专用地址?
专用地址只用于本地地址,而不能作为全球地址
对所有的路由器来说,接收到目的地址为网络为专用地址的任何数据一律丢弃
以下是三个专用地址块:
(只要目的地址属于这三个地址块范围内,就是专用地址)

于是,采用上述专用IP地址的互连网就叫做专用互联网 / 本地互联网
世界上可能会存在很多重复的专用IP地址
但是由于专用的IP地址只在本地使用,因此没有问题
因此,专用IP地址也叫做可重用地址

有时一个机构可能很大,分布在很远的不同地方(例如一个非洲,一个南极)
此时,如何通信?
第一,租用专用通道
多个分散的机构可以通过租用电信公司的专用通道,但是贵
第二,通过互联网进行通信
使用互联网作为一个专用网之间的两个不同场所的通信载体
于是,这样的专用网就叫做虚拟专用网VPN
如果数据通过互联网有保密需求,则可以进行加密

二、如何理解“虚拟专用网”?

虚拟专用网并不是一个整体的实际客体
因为多个机构在物理上是分散的
但是,因为对于机构的每一个主机来说,
他们可以对本机构内的所有主机进行畅通无阻的通信
而且无论主机在现实世界的位置
于是,一个机构内的所有主机就好像是在同一个网络内一样
因此,称之为“虚拟专用网”
但是实际上并不存在这样的网络,故名“虚拟”

在计算机网络中,存在很多“虚拟”的概念
例如“虚拟局域网”、“虚拟存储器”、“虚拟专用网”等等
要深刻理解这种逻辑上抽象的技术概念
这对整个计算机的体系认识是都好处的
学习这些知识不能只有知识点的堆砌和拼凑
不能零散,没有组织,不成体系
这样的认识,将很难在思维层次上帮助你构建起一个对计算机世界的整体观

三、IP隧道技术实现虚拟专用网

每一个场所必须保证至少有一个路由器具有全球唯一合法的IP地址
这个接口作为路由器与互联网连接的接口
如图所示:

于是,虚拟专用网的通信分为三种:
一、内部通信,不需要经过互联网
二、跨场所,需经过互联网(重点!!!)
三、外地员工的个人主机连接公司主机

对第二种情况:
第一、专用网内部主机将数据发送给连接的路由器
第二、路由器接到内部数据后发现需经过互联网,加密,加上首部,封装为互联网需要的IP数据报
第三、修改源地址为本路由器的IP地址目的地址为目的专用网连接的路由器的IP地址
第四、目的路由接收到数据后,解包,恢复内部数据报,根据目的地址发送给本路由器连接的网络中的对应主机

对第三种情况:
这种技术叫做远程VPN
感兴趣可自行了解

四、网络地址变换

为什么要进行网络地址转换?
因为考虑到这样一种情况:
一个在专用网内的主机
已经获取了专用玩的IP地址,但是还向和外部的互联网上的主机通信
此时,就需要进行网络地址转换

进行网络地址转换
需在专用网和互联网之间的路由器上安装NAT软件
安装NAT的软件叫做NAT路由器
NAT路由器至少有一个全球IP地址,但也可以有多个

从专用网内部的主机A发送到互联网上的主机B的发送过程:(内网A->外网B)
此时源地址为专用网的主机地址,目的地址为互联网的主机地址
1、路由器C根据NAT路由表,修改数据报的源地址为本路由器的全球唯一IP地址
2、目的主机B收到后,发送回应报文IP数据报
3、回应IP数据报的源地址为B的IP地址,目的地址为路由器C的IP地址
4、路由器C收到回应报文,根据NAT路由表修改目的地址,将路由器IP地址修改为主机A的专用网地址
5、地址转换后,从IP数据报变为数据报,发送给主机A

当NAT路由器有n个全球唯一IP地址时,最多有n台主机接入互联网
一个NAT项目对应一个专用网主机和接口IP地址(这样才可以转换)
同时,通过NAT路由器的通信只能由专用网内部的主机发起
如果外部互联网主机发起的通信,即使能够到达NAT路由器,
但是接下来不知道该发给哪个专用网主机
因此,专用网的主机不能用做服务器
因为服务器需要对请求进行回应

思考:为什么不能由互联网的主机发起通信?
外部主机发送到专用网的请求需要通过NAT路由器的端口映射或者端口转发机制进行处理。
NAT表中的条目只有在内网主机先发起通信时才会建立并允许响应,因为外部主机无法直接访问私有IP。

思考:既然不能由互联网的主机发起通信,可是为什么互联网到内网的回应报文却可以通信呢?
NAT路由器之所以能够将回应报文正确转换并转发,是因为在大多数情况下,NAT操作是“状态感知的”。
也就是说,NAT路由器知道哪些内网主机发起了哪些外部请求,因此它能基于已有的连接和转换记录来正确处理回应报文。
这些记录是基于连接的状态而创建的,因此外部的回应数据包可以通过NAT路由器的地址转换规则,正确地转发给发起请求的内网主机。

相关文章:

网络层9——虚拟专用网VPN和网络地址转换NAT

目录 一、为什么有虚拟专用网? 二、如何理解“虚拟专用网”? 三、IP隧道技术实现虚拟专用网 四、网络地址变换 一、为什么有虚拟专用网? 第一,IPv4只有32位,最多有40亿个全球唯一的IP地址数量不够,无法…...

开源科学工程技术软件介绍 – EDA工具KLayout

link 今天向各位知友介绍的 KLayout是一款由德国团队开发的开源EDA工具。 KLayout是使用C开发的,用户界面基于Qt。它支持Windows、MacOS和Linux操作系统。安装程序可以从下面的网址下载: https://www.klayout.de/build.html KLayout图形用户界面&…...

【网络安全】Cookie SameSite属性

未经许可,不得转载。 文章目录 背景CSRF 攻击SameSite 属性StrictLaxNone背景 为了有效防止 CSRF 攻击并保护用户隐私,Chrome 从 51 版本开始引入了 SameSite 属性,专门用于限制第三方 Cookie 的使用,进而减少安全风险。 CSRF 攻击 跨站请求伪造(CSRF)攻击是指恶意网站…...

Linux 命令 | 每日一学,文本处理三剑客之awk命令实践

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] 0x00 前言简述 描述:前面作者已经介绍了文本处理三剑客中的 grep 与 sed 文本处理工具,今天将介绍其最后一个且非常强大的 awk 文本处理输出工具,它可以非常方便…...

RabbitMQ的工作队列在Spring Boot中实现(详解常⽤的⼯作模式)

上文着重介绍RabbitMQ 七种工作模式介绍RabbitMQ 七种工作模式介绍_rabbitmq 工作模式-CSDN博客 本篇讲解如何在Spring环境下进⾏RabbitMQ的开发.(只演⽰部分常⽤的⼯作模式) 目录 引⼊依赖 一.工作队列模式 二.Publish/Subscribe(发布订阅模式) …...

【web前端笔记】vue3 + vite的前端项目中,使用import.meta.glob()方法实现全局注册组件的通用代码

目录 1.1、如何读取所有文件 1.2、通用代码 1.3、在main.js引入 这篇文章介绍一下,在vue3和vite搭建的项目中,如何将【src/components】目录下所有的【*.vue】文件,当做一个组件全局注册到Vue对象里面。 1.1、如何读取所有文件 在vue3和vite搭建的项目里面,它给我们提…...

保险行业建立知识管理系统:提高效率和安全性的策略

在保险行业,知识管理系统(KMS)的建立对于提高工作效率和保障数据安全性至关重要。保险公司需要在复杂的生态系统中航行,这个生态系统由不断发展的法规、错综复杂的保单和投保人不断变化的需求所定义。以下是一些关键策略&#xff…...

小程序如何完成订阅

小程序如何完成订阅 参考相关文档实践问题处理授权弹窗不再触发引导用户重新授权 参考相关文档 微信小程序实现订阅消息推送的实现步骤 发送订阅消息 小程序订阅消息(用户通过弹窗订阅)开发指南 实践 我们需要先选这一个模板,具体流程参考…...

JS学习日记(jQuery库)

前言 今天先更新jQuery库的介绍,它是一个用来帮助快速开发的工具 介绍 jQuery是一个快速,小型且功能丰富的JavaScript库,jQuery设计宗旨是“write less,do more”,即倡导写更少的代码,做更多的事&#xf…...

Uni-APP+Vue3+鸿蒙 开发菜鸟流程

参考文档 文档中心 运行和发行 | uni-app官网 AppGallery Connect DCloud开发者中心 环境要求 Vue3jdk 17 Java Downloads | Oracle 中国 【鸿蒙开发工具内置jdk17,本地不使用17会报jdk版本不一致问题】 开发工具 HBuilderDevEco Studio【目前只下载这一个就…...

Linux的基本用法

Linux的基本用法涵盖多个方面,包括用户登录、系统操作、文件和目录管理、系统工具使用等。以下是对Linux基本用法的详细介绍: 一、用户登录与系统操作 用户登录 普通用户登录:选择用户名并输入密码。超级用户(root)登…...

如何找出爬取网站的来源IP呢?

1.背景 最近网站数据库性能很不稳定,查询性能在某段时间很慢,服务器CPU也很高,平常时间很低,感觉被爬虫恶意搞了,因此我分析了一下最近的nginx访问日志 2.方法 找出访问量最大20个ip [root100 nginx]# cat liuhaih…...

Java爬虫(Jsoup)详解

文章目录 Java爬虫(Jsoup)详解一、引言二、Jsoup 快速入门1、Jsoup 简介1.1、添加依赖 2、解析 HTML 文档2.1、解析 HTML 字符串2.2、从 URL 加载 Document2.3、解析 body 片断 三、数据抽取1、使用 DOM 方法遍历文档3.1、获取元素 2、使用选择器语法查找…...

力扣周赛:第424场周赛

👨‍🎓作者简介:爱好技术和算法的研究生 🌌上期文章:力扣周赛:第422场周赛 📚订阅专栏:力扣周赛 希望文章对你们有所帮助 第一道题模拟题,第二道题经典拆分数组/线段树都…...

预处理(1)(手绘)

大家好,今天给大家分享一下编译器预处理阶段,那么我们来看看。 上面是一些预处理阶段的知识,那么明天给大家讲讲宏吧。 今天分享就到这里,谢谢大家!!...

利用OpenAI进行测试需求分析——从电商网站需求到测试用例的生成

在软件测试工程师的日常工作中,需求分析是测试工作中的关键步骤。需求文档决定了测试覆盖的范围和测试策略,而测试用例的编写往往依赖于需求的准确理解。传统手工分析需求耗时长,尤其在面对大量需求和复杂逻辑时容易遗漏细节。本文将以电商网…...

深入探索:Scrapy深度爬取策略与实践

标题:深入探索:Scrapy深度爬取策略与实践 引言 在数据驱动的时代,深度爬取成为了获取丰富信息的重要手段。Scrapy,作为一个强大的Python爬虫框架,提供了多种工具和设置来帮助我们实现深度爬取。本文将详细介绍如何在…...

《生成式 AI》课程 第3講:訓練不了人工智慧嗎?你可以訓練你自己

资料来自李宏毅老师《生成式 AI》课程,如有侵权请通知下线 Introduction to Generative AI 2024 Spring 摘要 这一系列的作业是为 2024 年春季的《生成式 AI》课程设计的,共包含十个作业。每个作业都对应一个具体的主题,例如真假难辨的世界…...

如何编译 Cesium 源码

如何编译 Cesium 源码 Cesium 是一个开源的 JavaScript 库,用于构建 3D 地球和地图应用程序。它提供了一套强大的 API 和工具,使开发者能够创建丰富的地理空间应用。本文将指导您如何从 GitHub 下载 Cesium 源码,并在本地进行编译。 TilesB…...

前端开发设计模式——责任链模式

目录 一、定义和特点 1. 定义 2. 特点 二、实现方式 定义抽象处理者(Handler)类 创建具体处理者(ConcreteHandler)类 构建责任链 以下是一个用 JavaScript 实现的示例: 三、应用场景 1. 表单验证 2. 请求处…...

JavaWeb--MySQL

1. MySQL概述 首先来了解一下什么是数据库。 数据库:英文为 DataBase,简称DB,它是存储和管理数据的仓库。 像我们日常访问的电商网站京东,企业内部的管理系统OA、ERP、CRM这类的系统,以及大家每天都会刷的头条、抖音…...

Python | Leetcode Python题解之第564题数组嵌套

题目&#xff1a; 题解&#xff1a; class Solution:def arrayNesting(self, nums: List[int]) -> int:ans, n 0, len(nums)for i in range(n):cnt 0while nums[i] < n:num nums[i]nums[i] ni numcnt 1ans max(ans, cnt)return ans...

Spring Boot教程之Spring Boot简介

Spring Boot 简介 接下来一段时间&#xff0c;我会持续发布并完成Spring Boot教程 Spring 被广泛用于创建可扩展的应用程序。对于 Web 应用程序&#xff0c;Spring 提供了 Spring MVC&#xff0c;它是 Spring 的一个广泛使用的模块&#xff0c;用于创建可扩展的 Web 应用程序。…...

Qwen2-VL:发票数据提取、视频聊天和使用 PDF 的多模态 RAG 的实践指南

概述 随着人工智能技术的迅猛发展&#xff0c;多模态模型在各类应用场景中展现出强大的潜力和广泛的适用性。Qwen2-VL 作为最新一代的多模态大模型&#xff0c;融合了视觉与语言处理能力&#xff0c;旨在提升复杂任务的执行效率和准确性。本指南聚焦于 Qwen2-VL 在三个关键领域…...

【安全科普】NUMA防火墙诞生记

一、我为啥姓“NUMA” 随着网络流量和数据包处理需求的指数增长&#xff0c;曾经的我面对“高性能、高吞吐、低延迟”的要求&#xff0c;逐渐变得心有余而力不足。 多CPU技术应运而生&#xff0c;SMP&#xff08;对称多处理&#xff09;和NUMA&#xff08;非一致性内存访问&a…...

机器学习day2-特征工程

四.特征工程 1.概念 一般使用pandas来进行数据清洗和数据处理、使用sklearn来进行特征工程 将任意数据&#xff08;文本或图像等&#xff09;转换为数字特征&#xff0c;对特征进行相关的处理 步骤&#xff1a;1.特征提取&#xff1b;2.无量纲化&#xff08;预处理&#xf…...

Python数据分析NumPy和pandas(三十五、时间序列数据基础)

时间序列数据是许多不同领域的结构化数据的重要形式&#xff0c;例如金融、经济、生态学、神经科学和物理学。在许多时间点重复记录的任何内容都会形成一个时间序列。许多时间序列是固定频率的&#xff0c;也就是说&#xff0c;数据点根据某些规则定期出现&#xff0c;例如每 1…...

Python 小高考篇(6)常见错误及排查

目录 TypeError拼接字符串和数字错误示范正确示范 数字、字符串当成函数错误示范 给函数传入未被定义过的参数错误示范 传入的参数个数不正确错误示范 字符串相乘错误示范正确示范 量取整数的长度错误示范正确示范 格式化字符串时占位符个数不正确错误示范 给复数比较大小错误示…...

k8s上部署redis高可用集群

介绍&#xff1a; Redis Cluster通过分片&#xff08;sharding&#xff09;来实现数据的分布式存储&#xff0c;每个master节点都负责一部分数据槽&#xff08;slot&#xff09;。 当一个master节点出现故障时&#xff0c;Redis Cluster能够自动将故障节点的数据槽转移到其他健…...

C++的类和对象

在C中&#xff0c;类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;是面向对象编程&#xff08;OOP&#xff09;的核心概念。以下是它们的详细介绍&#xff1a; 1. 类&#xff08;Class&#xff09; 定义&#xff1a; 类是用来定义一个新的数据类型&…...

有趣的网站之家/南宁seo公司

LoadBalanced public interface ServiceInstanceChooser {// 根据传入的serviceId从LoadBalancer中挑选一个对应的ServiceInstance。ServiceInstance choose(String serviceId); }public interface LoadBalancerClient extends ServiceInstanceChooser {// 逻辑同choose&#x…...

网站后台管理系统怎么做的/百度快照怎么发布

加入工程名字叫做某某智能仪器项目&#xff0c;IntIns 项目&#xff0c;要使用LibQQt作为基础开发套件。 约束 LibQQt要求使用分别的独立的多个工程&#xff0c;管理QQt的编译和App的编译。 - 创建app工程&#xff0c;在IntIns目录。不表。 - 与IntIns同目录&#xff0c;创…...

d84 wordpress/seo优化需要多少钱

HiveServer 简介 今天我们学习一下Hive 架构中的重要一员HiveServer2或者是HiveServer1,HiveServer2使得其他语言访问Hive 成为了可能,其他语言通过连接HiveServer2服务提供的接口进而访问Hive,HiveServer2还引入了一个客户端,那就是大名鼎鼎的BeeLine,BeeLine 是一个通过J…...

江苏建设造价信息网站/淘宝运营培训班去哪里学

如何在Linux系统上获取命令的帮助信息&#xff0c;描述man文档的章节的划分在Linux操作系统上操作时&#xff0c;遇到不会&#xff08;或不熟悉&#xff09;的命令时可利用一下六中方法获取命令帮助&#xff1a;1、help Command适用于内部命令举例&#xff1a;命令如下:# type …...

建筑工地常用模板种类/黄山seo

java链接数据库打印输出中文显示乱码 打印结果出现中文乱码&#xff0c;经过一番百度&#xff0c;原来是数据库也要指定编码格式...

商城版网站制作/万能软文模板

D3DSURFACE_DESC D3DSURFACE_DESC Desc; tex->GetLevelDesc( 0, &Desc ); Width Desc.Width; Height Desc.Height; 转载于:https://www.cnblogs.com/lancidie/archive/2011/03/16/1985788.html...