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

VPN协议是如何工作的

VPN,全名 Virtual Private Network,虚拟专用网,就是利用开放的公众网络,建立专用数据传输通道,将远程的分支机构、移动办公人员等连接起来。

VPN 通过隧道技术在公众网络上仿真一条点到点的专线,是通过利用一种协议来传输另外一种协议的技术,这里面涉及三种协议:乘客协议、隧道协议和承载协议。

Psec VPN。这是基于 IP 协议的安全隧道协议,为了保证在公网上面信息的安全,因而采取了一定的机制保证安全性。

1、私密性,防止信息泄露给未经授权的个人,通过加密把数据从明文变成无法读懂的密文,从而确保数据的私密性。

2、完整性,数据没有被非法篡改,通过对数据进行 hash 运算,产生类似于指纹的数据摘要,以保证数据的完整性。

3、真实性,数据确实是由特定的对端发出,通过身份认证可以保证数据的真实性。

在这个协议簇里面,有两种协议,这两种协议的区别在于封装网络包的格式不一样。

  • 一种协议称为 AH(Authentication Header),只能进行数据摘要 ,不能实现数据加密。还有
  • 一种 ESP(Encapsulating Security Payload),能够进行数据加密和数据摘要。

这个协议簇还包含两大组件,一个用于 VPN 的双方要进行对称密钥的交换的 IKE 组件,另一个是 VPN 的双方要对连接进行维护的 SA(Security Association)组件。

IPsec VPN 的建立过程

第一个阶段,建立 IKE 自己的 SA。这个 SA 用来维护一个通过身份认证和安全保护的通道,为第二个阶段提供服务。在这个阶段,通过 DH(Diffie-Hellman)算法计算出一个对称密钥 K。

DH 算法是一个比较巧妙的算法。客户端和服务端约定两个公开的质数 p 和 q,然后客户端随机产生一个数 a 作为自己的私钥,服务端随机产生一个 b 作为自己的私钥,客户端可以根据 p、q 和 a 计算出公钥 A,服务端根据 p、q 和 b 计算出公钥 B,然后双方交换公钥 A 和 B。

到此客户端和服务端可以根据已有的信息,各自独立算出相同的结果 K,就是对称密钥。但是这个过程,对称密钥从来没有在通道上传输过,只传输了生成密钥的材料,通过这些材料,截获的人是无法算出的。

有了这个对称密钥 K,接下来是第二个阶段,建立 IPsec SA。在这个 SA 里面,双方会生成一个随机的对称密钥 M,由 K 加密传给对方,然后使用 M 进行双方接下来通信的数据。对称密钥 M 是有过期时间的,会过一段时间,重新生成一次,从而防止被破解。

多协议标签交换(MPLS,Multi-Protocol Label Switching)。MPLS 的格式如图所示,在原始的 IP 头之外,多了 MPLS 的头,里面可以打标签。

有了标签,还需要设备认这个标签,并且能够根据这个标签转发,这种能够转发标签的路由器称为标签交换路由器(LSR,Label Switching Router)。

这种路由器会有两个表格,一个就是传统的 FIB,也即路由表,另一个就是 LFIB,标签转发表。有了这两个表,既可以进行普通的路由转发,也可以进行基于标签的转发。

在 MPLS VPN 中,网络中的路由器分成以下几类:

  • PE(Provider Edge):运营商网络与客户网络相连的边缘网络设备;
  • CE(Customer Edge):客户网络与 PE 相连接的边缘设备;
  • P(Provider):这里特指运营商网络中除 PE 之外的其他运营商网络设备。

VPN 报文转发采用两层标签方式:

  • 第一层(外层)标签在骨干网内部进行交换,指示从 PE 到对端 PE 的一条 LSP。VPN 报文利用这层标签,可以沿 LSP 到达对端 PE;
  • 第二层(内层)标签在从对端 PE 到达 CE 时使用,在 PE 上,通过查找 VRF 表项,指示报文应被送到哪个 VPN 用户,或者更具体一些,到达哪一个 CE。这样,对端 PE 根据内层标签可以找到转发报文的接口。

此文章为9月Day22学习笔记,内容来源于极客时间《趣谈网络协议》,推荐该课程。

相关文章:

VPN协议是如何工作的

VPN,全名 Virtual Private Network,虚拟专用网,就是利用开放的公众网络,建立专用数据传输通道,将远程的分支机构、移动办公人员等连接起来。 VPN 通过隧道技术在公众网络上仿真一条点到点的专线,是通过利用…...

c++::作用域符解析

1)当存在具有相同名称的局部变量时,要访问全局变量 2)在类之外定义函数。 class A { } void A::func(){ }A a;a.func();3)访问一个类的静态变量 class A { static int b; } A::b; 4) 如果两个命名空间中都存在一个具有相同名称的类…...

【电源专题】什么是充电芯片的Shipping Mode(船运模式)

现在越来越多电子产品小型化,手持化,这样就需要电池来为产品供电。但电池供电造成的另一个难题就是产品的续航能力的强与弱。 如果想提升续航能力,有一种方法是提高电池容量。如果电池体积没有变化的情况下,可能使用了新型材料、高级技术来增加电池容量,但这势必会增加电池…...

WebGL笔记: 2D和WebGL坐标系对比和不同的画图方式, 程序对象通信,顶点着色器,片元着色器

WebGL 坐标系 canvas2d画布和webgl画布使用的坐标系都是二维直角坐标系,但它们坐标原点、y 轴的坐标方向,坐标基底都不一样canvas2d 坐标系的原点在左上角, x轴朝右,y轴朝下1个单位的宽就是一个像素的宽,1个单位的高就是一个像素…...

【php经典算法】冒泡排序,冒泡排序原理,冒泡排序执行逻辑,执行过程,执行结果 代码

冒泡排序原理 每次比较两个相邻的元素,将较大的元素交换至右端 冒泡排序执行过程输出效果 冒泡排序实现思路 每次冒泡排序操作都会将相邻的两个元素进行比较,看是否满足大小关系要求,如果不满足,就交换这两个相邻元素的次序&…...

多模块和分布式项目

一、什么是多模块项目 多模块项目是一种软件项目组织结构,其中一个大型项目被分成多个独立的子模块或子项目。每个子模块通常具有自己的功能、目录结构和开发周期,但它们可以协同工作以构建一个完整的应用程序。这种项目结构有助于提高代码的可维护性、…...

AI视频剪辑:批量智剪技巧大揭秘

对于许多内容创作者来说,视频剪辑是一项必不可少的技能。然而,传统的视频剪辑方法需要耗费大量的时间和精力。如今,有一种全新的剪辑方式正在改变这一现状,那就是批量AI智剪。这种智能化的剪辑方式能够让你在短时间内轻松剪辑大量…...

vue项目实现地址自动识别功能

1、安装第三方依赖 npm install address-parse 2、在需要使用的页面引入 import AddressParse from address-parse; 3、在页面上写入静态的html代码&#xff0c;可以输入地址&#xff0c;加上识别的输入框&#xff1b; <div class"auto_address"><van-…...

基于springboot财务管理系统springboot006

大家好✌&#xff01;我是CZ淡陌。一名专注以理论为基础实战为主的技术博主&#xff0c;将再这里为大家分享优质的实战项目&#xff0c;本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路…...

C语言-扫雷游戏的实现

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…...

七天学会C语言-第七天(结构体)

1.定义结构体 例 1&#xff1a;把一个学生的信息(包括学号、姓名、性别、住址等 4 项信息) 放在一个结构体变量中&#xff0c;然后输出这个学生的信息。 #include <stdio.h>struct Student {int student_id;char name[30];char gender;char address[60]; };int main() …...

《深度学习工业缺陷检测》专栏介绍 CSDN独家改进实战

&#x1f4a1;&#x1f4a1;&#x1f4a1;深度学习工业缺陷检测 1&#xff09;提供工业小缺陷检测性能提升方案&#xff0c;满足部署条件&#xff1b; 2&#xff09;针对缺陷样品少等难点&#xff0c;引入无监督检测&#xff1b; 3&#xff09;深度学习 C、C#部署方案&#…...

unity 实现双击物体让其隐藏,单击物体让其显示

unity 实现双击物体让其隐藏&#xff0c;单击物体让其显示 private float tapThreshold 0.25f; private float tapTimer 0.0f; private bool tap false; private void Update() { if (Input.GetMouseButtonDown(0)) { if (Time.time < this.tapTimer this.tapThreshold)…...

代码随想录二刷day35

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣860. 柠檬水找零二、力扣406. 根据身高重建队列三、力扣452. 用最少数量的箭引爆气球 前言 一、力扣860. 柠檬水找零 class Solution {public boolean…...

第九章 常用服务器的搭建

第九章 常用服务器的搭建 1.配置FTP服务器 1.1.FTP简介 ​ FTP&#xff08;File Transfer Protocol&#xff0c;文件传送协议&#xff09;是TCP/IP网络上两台计算机间传送文件的协议&#xff0c;FTP是在TCP/IP网络和Internet上最早使用的协议之一&#xff0c;它属于网络协议…...

数据结构_复杂度讲解(附带例题详解)

文章目录 前言什么是数据结构&#xff1f;什么是算法&#xff1f;一. 算法的时间复杂度和空间复杂度1.1 算法效率1.2 如何衡量一个算法好坏 二. 时间复杂度2.1 时间复杂度概念例题一例题一分析 实例一实例一分析 三. 空间复杂度实例实例问题解析 四. 常见复杂度对比五. 常见时间…...

学习MLPERF

测试基准与标准 | BenchCouncil 其中涉及AI的有如下&#xff1a; AI (1) AIBench Training AIBench 培训采用平衡的 AI 基准测试方法&#xff0c;考虑全面性、代表性、可负担性和可移植性。该方法广泛调查人工智能任务和模型&#xff0c;并在最大程度上涵盖了算法级、系统级…...

openEuler-20.03 LTS管理用户和用户组

openEuler-20.03 LTS 管理用户和用户组的官方文档&#xff0c;在这里。补充一下关于如何在 openeuler 上创建启用 sudo 新用户&#xff08;无需修改服务器 /etc/sudoers 文件&#xff09;的一个小知识点。 创建启用 sudo 新用户 该 sudo 命令提供了一种向普通用户授予管理员特权…...

什么是读写锁

读写锁 读写锁有3 种状态&#xff1a;读模式下的加锁状态、写模式下的加锁状态和不加锁状态&#xff0c;一次只有一个线程可以占有写模式的读写锁&#xff0c;但是可以有多个线程同时占有读模式的读写锁。因此可知&#xff0c;读写锁比互斥锁具有更高的并行性&#xff01; 读…...

低代码助力企业数字化转型

在当今这个数字化快速发展的时代&#xff0c;企业面临的竞争越来越激烈&#xff0c;数字化转型已成为企业发展的必经之路。低代码平台作为一种新型的开发工具&#xff0c;正在逐渐成为企业数字化转型的重要助力。本文将从数字化转型背景、低代码平台介绍、低代码平台的应用、低…...

Linux 作业

一. 题目 二.作业内容 第一题&#xff1a; 因老师要求上传安装后远程连接XShell截图&#xff0c;如下&#xff1a; 制作yum缓存&#xff1a;[rootRHEL8 ~]# yum makecache 安装gcc&#xff1a;[rootRHEL8 ~]# yum install gcc -y 制作快照&#xff1a;快照&#xff0c;初始 s…...

【数据分享】2005-2022年全国民航机场客货吞吐量和起降架次数据

机场是一个城市对外联系的重要渠道&#xff0c;机场的旅客吞吐量和货物吞吐量是体现一个城市对外联系程度的重要指标。 本次我们给大家分享的是2005-2022年我国民航机场的旅客吞吐量、货邮吞吐量、起降架次数据。数据格式为Excel和Shp两种格式。数据坐标为WGS1984。原始数据来…...

清华博士面试的准备(已通过)

内修&#xff08;30%&#xff09; 不管如何 任何人都不能影响你的心态。因为冷静、理性&#xff0c;才能处理好95%以上的问题。剩下的5%我可以不拥有。不能既要、又要、还要。尊重客观规律。放下我执。 价值导向、解决问题为导向。 允许一切事情的发生&#xff0c;是我们最大的…...

requests爬虫详解

Requests 安装 pip install requests 示例 from fake_useragent import UserAgent import requestsdef cra1_1(): url http://xx/front/website/findAllTypes headers {User-Agent: UserAgent().chrome} resp requests.get(url, headersheaders) result resp.json()i…...

oracle的正则表达式(regular expression)

当前&#xff0c;正则表达式已经在很多软件中得到广泛的应用&#xff0c;包括Linux, Unix&#xff0c;HP等操作系统&#xff0c;PHP&#xff0c;C#&#xff0c;Java等开发环境&#xff0c;ORACLE则在10G中推出了自己的正则表达式。 Oracle 10g正则表达式提高了SQL灵活性&#…...

sh脚本 单独可以执行,放到crontab中不执行(定时清空redis)

1.原因&#xff1a; 执行环境的不同 2.解决办法&#xff1a; 添加环境变量 PATH/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH 3. 完整示例&#xff1a; #!/bin/shPATH/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:…...

mysql 半同步复制模式使用详解

目录 一、前言 二、mysql主从架构简介 2.1 mysql主从复制架构概述 2.2 为什么使用主从架构 2.2.1 提高数据可用性 2.2.2 提高数据可靠性 2.2.3 提升数据读写性能 2.3 主从架构原理 2.4 主从架构扩展 2.4.1 双机热备&#xff08;AB复制&#xff09; 2.4.2 级联复制 2…...

以太坊代币标准ERC20、ERC721

两个概念 ERC(Ethereum Request for Comment) 以太坊意见征集稿EIP(Ethereum Improvement Proposals)以太坊改进提案 ERC和EIP用于使得以太坊更加完善&#xff1b;在ERC中提出了很多标准&#xff0c;用的最多的标准就是它的Token标准; 有哪些标准详细见https://eips.ethereum…...

编写基于冒泡排序算法的qsort函数

目录 1.简单认识冒泡排序 2.进入正文分析如何实现函数 3.1比较两个相邻元素的大小 3.2比较两个相邻元素大小后要换函数 4.my_qsort函数&#xff1a; 5.总结&#xff1a; 1.简单认识冒泡排序 冒泡排序的步骤如下&#xff1a; 比较相邻的两个元素&#xff0c;如果第一个元素比…...

有什么推荐使用的企业上网行为管理软件?

在当今信息化社会&#xff0c;企业的上网行为管理越来越重要。企业上网行为软件是一种能够监控和管理企业员工上网行为的工具&#xff0c;它可以帮助企业更好地管理网络资源&#xff0c;提高工作效率&#xff0c;保护企业信息安全&#xff0c;并符合相关的法律法规。本文将深入…...

发布网站需要备案/网络营销个人感悟小结

8.24 8.25 8.26 前言 我只是讨厌被人使唤——所谓“任性”有钱人是规则的制定者女人总是做的傻事——与钱有关的傻事&#xff1a; “我们低估了自己”男人迷路了&#xff0c;又不问路&#xff0c;我们却还跟着他如果得到某件东西的代价是丢掉我们的自尊、自信和自我价值&…...

买模板做网站/百度网站大全首页

这问题我会先自我介绍一下,我是十五年工作经验的程序员,但很不好意思,今年(2020年)二月份才接触linux,到现在为止(2020年11月),已经在公司内部的布署了多套linux下的应用与解决方案,并负责这些服务器的运维,我觉得我有资格回答你的问题.以下是我的回答:1.安装linux,不推荐使用虚…...

做打鱼网站犯法不/刚刚济南发通知

一、final关键字的基本用法 1、修饰类 当用final修饰一个类时&#xff0c;表明这个类不能被继承。注意&#xff1a; final类中的成员变量可以根据需要设为final&#xff0c; final类中的所有成员方法都会被隐式地指定为final方法。 2、修饰方法 下面这段话摘自《Java编程思想》…...

dw怎么做别人可以看的网站/黄页网推广服务

Mysql-5.7.20 升级 mysql-8.0.14-1 操作前建议先查阅以下网页初步了解Mysql版本升级信息 https://blog.csdn.net/u012946310/article/details/81880050 一、查看环境信息 cat /etc/redhat-release mysql -V 二、备份数据库 &#xff08;-A 参数是备份全部数据库的数据和结构&…...

做网站站主需要什么条件/南宁seo推广公司

概念 RAM&#xff08;random access memory&#xff09;即随机存储内存&#xff0c;这种存储器在断电时将丢失其存储内容&#xff0c;故主要用于存储短时间使用的程序。ROM&#xff08;Read-Only Memory&#xff09;即只读内存&#xff0c;是一种只能读出事先所存数据的固态半导…...

东营网站制作团队/网络营销策划的方法

在学习完了SQL注入的原理、SQL注入的类型后那么可以说SQL注入已经大致了解了&#xff0c;但事实是现实中开发人员不可能让你这么简单就攻击到数据库&#xff0c;他们一般会对已输入或可输入的数据做一定限制&#xff0c;这篇文章我主要对SQL注入中代码或者waf过滤的绕过做一次总…...