73、网络高级应用:隧道机制与虚拟专用网络详解

网络高级应用:隧道机制与虚拟专用网络详解

1. 选择隧道机制

在网络通信中,隧道机制的选择受多种因素驱动,其中源节点和目的节点上实现方式的可用性是重要因素之一。有些应用程序套件要求使用特定的隧道技术,而另一些则相对灵活,但仍要求所有实现中都具备特定的基本隧道方法。

以下是不同隧道机制特性的简要比较:
| 隧道机制 | 安全性 | 流量工程支持 | 多数据流支持 | 信令要求 | 中转节点状态 | 端节点状态 |
| — | — | — | — | — | — | — |
| GRE | 无 | 否 | 是 | 数据链路 | 否 | 否 |
| IP in IP | 无 | 否 | 是 | 数据链路 | 否 | 否 |
| 最小 IP 封装 | 无 | 否 | 是 | 数据链路 | 否 | 否 |
| IPsec | 强 | 否 | 否 | 密钥交换 | 否 | 是 |
| MPLS | 弱 | 是 | 是 | 完整 | 是 | 是 |

所有隧道机制都需要某种形式的端到端信令来确定使用的隧道形式。在某些情况下,这可能只是简单的链路层协议,而在其他情况下,则需要更广泛的信令来建立隧道信息。

2. 虚拟专用网络(VPN)
2.1 什么是 VPN

VPN 的基本组成部分是专用网络。例如办公室网络或大学校园的计算机网络,拥有这些网络的组织通常使用专用资源(如租用线路、光纤、微波链路或简单的拨号电话线)将它们连接起来,从而将专用网络扩展到多个站点。

然而,这些站点之间的专用链路可能很长且成本高昂,而与互联网的连接通常较短且相对便宜。因此,可以用互联网等共享公共资源替代专用长途资源。

例如,在家工作的员工或旅行推销员使用调制解调器访问公司网络时,若直接拨号连接总部可能产生高额长途话费。而互联网服务提供商在大多数城市都有点对点接入点,用户可以以本地通话费用(在美国甚至免费)进行拨号访问。

这种通过公共网络连接专用网络的方式创建了一种看似专用的网络,但实际上在专用网络之间传输的数据会通过公共网络,容易受到拦截、伪造或意外误送。因此,这些网络被称为虚拟专用网络,需要付出大量努力来确保专用站点之间传输数据的完整性。

其连接方式可以用以下 mermaid 流程图表示:

graph LR
    A[公司 A 站点 1] -->|互联网| B[公司 B 站点 1]
    A -->|互联网| C[公司 B 站点 2]
    D[公司 A 站点 2] -->|互联网| B
    D -->|互联网| C
2.2 隧道与专用地址空间

VPN 的一个优势是专用网络内的地址可以保持私有。这使得不同公司可以使用相同的地址空间,每个公司的主机可以拥有相同的地址。

如果专用网络完全独立,使用相同的地址空间不会有问题。但当 IP 数据包从一个公司的一个站点通过互联网发送到另一个站点时,就可能出现混淆和误送的情况。

解决这个问题的一种方法是使用任何形式的 IP 封装进行隧道传输,如 GRE、IP in IP 或数据链路层机制(如第 2 层隧道协议 L2TP)。这可以在互联网上建立隧道,就像图中公司 B 的站点 1 和站点 2 通过虚线表示的隧道连接一样。这个隧道可以看作是一条虚拟线路,一些 VPN 管理技术允许客户将其在互联网上的连接作为模拟线路进行管理。

虽然这种隧道方式可以解决一些 VPN 的安全问题,因为配置正确的互联网边缘路由器可以确保数据包在正确的隧道内传输并交付到正确的远程边缘路由器进行解封装和发送到正确的专用网络,但仅靠隧道本身并不能提供强大的安全模型,因为互联网内的数据包仍然容易被拦截,边缘路由器也可能配置错误。

2.3 使用路由协议的解决方案

基于第 2 层隧道的 VPN 解决方案存在扩展性问题。如果有 n 个站点参与 VPN,每个隧道模拟一条线路或物理连接,就需要配置和管理 n(n - 1)/2 个连接。另一种方法是提供一个中心节点作为 VPN 所有数据的交换中心,这样可以将连接数减少到 n 个,但中心节点成为单点故障,可能会破坏整个 VPN 的连接。

使用 IP 隧道技术时,虽然隧道的端点是固定的,但隧道的实际路径由互联网内的路由协议决定。这可能会减少核心网络的配置,但每个边缘节点仍需要配置专用目的 IP 地址到隧道的映射,即需要为 VPN 内每个节点的地址配置隧道远端的 IP 地址。

可以通过使用在互联网上运行的路由协议在边缘节点之间交换 VPN 连接信息来优雅地解决这个问题。边缘节点可以通告其他路由器,若要访问某个 VPN 内的一组 IP 地址,应将数据包发送给它。

有两种使用路由协议支持 VPN 的方法:
- 使用单独的路由协议实例 :为每个虚拟路由表使用单独的路由协议实例。像之前一样在提供 VPN 访问的边缘点之间建立隧道,但通过在隧道中运行内部网关协议(IGP)(如 OSPF)可以大大改善这些隧道的配置和管理。每个隧道端点作为一个虚拟接口,IGP 通过它通告其路由信息,隧道在隧道端点之间表现为单跳链路。这样,VPN 内节点的完整可达性信息会分发给参与 VPN 的每个节点,但在核心网络内不可见,也不会发送给不参与 VPN 的节点。
- 使用单个 BGP 实例 :利用单个边界网关协议(BGP)实例为所有 VPN 分发信息。这种方法扩展了 BGP,允许在分发的信息中包含 VPN 标识符,从而可以在所有边缘节点之间交换多个虚拟路由表,轻松建立 VPN 连接。

在这两种情况下,路由协议都用于分发提供 VPN 内节点访问的边缘节点的地址,而 IP 隧道仍然用于在互联网上传输 VPN 数据包。

2.4 安全解决方案

IPsec 是一种旨在通过公共网络安全传输 IP 的隧道协议,它在 VPN 实施中具有很大潜力,因为它提供了从加密、认证到防重放等全套安全功能。IPsec 隧道的一个优点是无连接,且隧道端点无需存储任何协议状态信息(不过需要管理安全信息,如密钥,这些密钥可以自动分发或手动配置)。

然而,IPsec 也存在一些缺点。一方面,它对所有数据进行加密会带来性能损失,但由于 VPN 数据安全通常是必需的,所以无论如何都可能需要某种形式的加密。另一方面,很难从单个 IPsec 隧道中分离数据流,因此可能需要在每对交换数据的 VPN 节点之间建立单独的隧道。

解决第二个问题的方法包括结合使用其他隧道机制。可以将 IPsec 应用于整个隧道(即通过 IPsec 对隧道本身进行隧道传输),或者将多个 IPsec 隧道复用为另一种技术的单个隧道。

2.5 MPLS VPNs

MPLS 可用于在支持 MPLS 的网络中建立隧道。这些隧道可用于在 ATM、帧中继或其他支持 MPLS 的网络中建立第 2 层 VPN。每个隧道在源和目的地之间提供一条虚拟线路,用于连接 VPN 的不同部分。或者,可以将 MPLS 数据包封装在其他隧道机制中,以便在 IP 核心网络中传输。当 MPLS 在 VPN 内使用,或者有许多边缘点各自提供对多个 VPN 的访问,且希望减少网络中的隧道数量时,后一种选择可能特别有用。

以下是不同 VPN 技术的比较表格:
| 技术类型 | 客户设备是否需知晓 VPN | 客户设备是否需为 VPN 配置 | 网络设备是否需知晓 VPN | 提供商边缘可扩展性 | 数据安全性 | 网络流量工程 |
| — | — | — | — | — | — | — |
| 第 2 层隧道 | 是 | 是 | 否 | 好 | 基于硬件完整性有一定安全性 | 否 |
| IP 隧道 | 若 CE 管理隧道则是,若 PE 拥有隧道则否 | 若 CE 管理隧道则是,若 PE 拥有隧道则否 | 若 CE 管理隧道则否,若 PE 拥有隧道则是 | 若 CE 管理隧道为中等,若 PE 拥有隧道则差 | 好 | 采用 DiffServ 有限支持 |
| IPsec | 是 | 是 | 否 | 中等 | 无 | 否 |
| MPLS | 否 | 否 | 是 | 差 | 基于硬件完整性有一定安全性 | 是 |
| 虚拟路由器 | 否 | 否 | 是 | 中等 | 无 | 采用 DiffServ 有限支持 |
| BGP | 否 | 否 | 是 | 中等 | 无 | 采用 DiffServ 有限支持 |
| BGP/MPLS | 否 | 否 | 是 | 中等 | 基于硬件完整性有一定安全性 | 是 |

RFC 2547 中描述了一种结合使用 BGP 和 MPLS 的混合 VPN 解决方案,并且 IETF 正在进一步开发该方案。这种解决方案具有可扩展性和灵活性。BGP 用于通告哪些边缘节点提供对哪些 VPN 的访问、每个边缘节点处每个 VPN 中地址的可达性信息,以及用于标识目标 VPN 的 MPLS 标签。在核心网络中传输的数据包会被赋予一个 MPLS 标签,使接收方能够立即区分应将数据交付给哪个 VPN。数据包在穿越核心网络时可能会被封装在 IP、GRE、IPsec 或 MPLS 隧道中。

2.6 光 VPN

光 VPN 是一个新的概念,涉及通过光核心自动提供数据服务。在这种情况下,连接在一起的网络可能是服务提供商整个网络的一部分。提供光连接的核心网络有时被称为服务提供商的服务提供商。

例如,GMPLS 可用于建立光 VPN,并且可以将核心网络视为一个在接入接口之间交换数据的单个虚拟交换机。

2.7 选择 VPN 技术

目前,VPN 是互联网中增长最快的领域之一。前面介绍的解决方案只是一些流行的方法,市场上可能有比销售支持 VPN 设备的供应商更多的方法。关于哪种解决方案能提供最佳连接性、安全性、易维护性和快速配置的争论,很大程度上受到供应商提供的实现方式的影响,而不一定基于实际情况。

选择 VPN 技术时,最重要的因素之一是其在经过验证和测试的设备中的可用性。以下是构建 VPN 时一些重要的考虑因素以及哪种解决方案在每个特性上表现最强的总结:
- 可扩展性 :这是一个备受争议的话题,涉及需要多少额外配置、需要交换多少额外的路由或信令信息。这也影响到维护 VPN 的责任归属问题,因为服务提供商的客户希望购买 VPN 服务而无需自行配置设备,但又不相信服务提供商能保护其数据不被误送或被黑客攻击。许多隧道解决方案可以由客户边缘(CE)设备或提供商边缘(PE)设备实现,这进一步增加了选择的多样性。
- 数据安全性 :不同的 VPN 技术在数据安全方面表现不同,如 IPsec 提供较强的安全功能,而一些技术则依赖于硬件的完整性来提供一定的安全性。
- 易维护性 :使用路由协议的解决方案可以在一定程度上简化配置和管理,但不同的方法在维护的难易程度上也有所差异。
- 配置速度 :一些解决方案可以更快速地建立 VPN 连接,满足不同用户的需求。

3. 移动 IP

如今的计算机比以往更小、更便携。曾经需要一整个空调机房的处理能力,现在可以轻松携带并在任何地方使用。同时,与互联网的连接变得更加容易和多样化。用户可以在办公室断开计算机连接,然后在同一办公室的其他地方或其他地点重新连接。连接可以通过以太网等既定网络技术、拨号线路或无线网络实现。在无线网络的情况下,即使用户在连接过程中,连接点也可能发生变化。

移动 IP 就是为了适应这种计算机的移动性而产生的技术,它允许移动设备在不同网络之间移动时保持其 IP 地址不变,从而确保通信的连续性。当移动设备从一个网络移动到另一个网络时,它会向家乡代理注册新的转交地址,家乡代理会将发往移动设备家乡地址的数据包转发到新的转交地址。

移动 IP 的工作流程可以用以下 mermaid 流程图表示:

graph LR
    A[移动设备] -->|注册转交地址| B[家乡代理]
    C[对应节点] -->|发送数据包到家乡地址| B
    B -->|转发数据包到转交地址| A

综上所述,无论是隧道机制、VPN 技术还是移动 IP,都在不断发展和完善,以满足日益增长的网络需求和用户对网络性能、安全性、移动性等方面的要求。在实际应用中,需要根据具体的需求和场景选择合适的技术和解决方案。

内容概要:本文详细介绍了MySQL中InnoDB存储引擎的逻辑存储结构及其表分区技术。InnoDB的逻辑存储单元由高到低依次为表空间、段、区、页和行,其中表空间包括系统表空间、独立表空间、通用表空间、Undo表空间和临时表空间,每种表空间具有不同的用途和管理方式。文章进一步讲解了表分区的概念类型,包括RANGE、LIST、HASH、KEY以及多字段COLUMNS分区,阐述了分区的优势如提升查询性能、便于数据维护、支持跨物理设备存储等,并列举了实际SQL操作示例,帮助理解分区表的创建、修改、删除及重组等操作。同时指出了分区的限制条件,如最大分区数量、主键约束要求等。; 适合人群:具备一定MySQL数据库基础,从事数据库开发、运维或架构设计的技术人员,尤其是工作中涉及大数据量表管理性能优化的1-3年经验研发人员。; 使用场景及目标:①深入理解InnoDB存储机制,优化数据库物理结构设计;②掌握表分区技术,应用于海量数据存储高效查询场景,如日志系统、订单系统的时间分区设计;③通过分区实现数据归档、快速删除历史数据、提升查询性能等运维目标; 阅读建议:学习时应结合MySQL实际环境动手实践文中提供的SQL命令,重点关注表空间管理和分区策略的选择,理解其对性能和维护的影响,并注意分区使用中的限制条件以避免设计失误。
【采用BPSK或GMSK的Turbo码】MSK、GMSK调制二比特差分解调、turbo+BPSK、turbo+GMSK研究(Matlab代码实现)【采用BPSK或GMSK的Turbo码】MSK、GMS内容概要:本文主要介绍了采用BPSK或GMSK调制方式的Turbo码相关技术研究,重点涵盖GMSK调制下的二比特差分解调方法、Turbo码BPSK/GMSK调制相结合的系统性能分析,并提供了完整的Matlab代码实现方案。研究内容包括调制解调原理、编码结构设计、误码率仿真及系统优化等关键环节,旨在通过仿真手段验证所提出方案的有效性和可靠性,帮助研究人员深入理解现代数字通信系统中的关键技术和其实现方法。; 适合人群:具备一定通信原理和Matlab编程基础,从事无线通信、信号处理、编码理论等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握GMSK调制Turbo码结合的系统设计仿真方法;②学习二比特差分解调算法在实际通信系统中的应用;③通过Matlab代码实现提升对数字调制解调和信道编码技术的理解实践能力;④为相关课题研究、毕业设计或工程项目提供参考和技术支持。; 阅读建议:建议读者结合文中提供的Matlab代码逐模块运行调试,对照通信系统基本原理深入理解各环节功能,重点关注调制解调过程Turbo译码的协同工作机制,并尝试修改参数以观察系统性能变化,从而达到理论实践相结合的学习效果。
源码下载地址: https://pan.quark.cn/s/7958f591353c 在Java应用程序的开发过程中,尤其是针对SpringBoot项目的构建,IntelliJ IDEA(简称IDEA)被广泛地采纳为一个极为流行的集成开发平台。本文将系统性地阐述如何在IDEA环境中部署并执行一个SpringBoot项目,涵盖了必要的环境搭建、Maven的配置、JDK环境的设定以及数据库的设置等关键环节。在进行后续操作前,请确认已经安装了以下基础组件: 1. IDEA:作为一个专门用于Java应用程序开发的集成开发环境,它提供了丰富的功能选项和强大的代码辅助能力。 2. JDK1.8:由于SpringBoot项目通常基于Java 8版本或更新版本进行开发,因此需要在计算机系统中安装对应的JDK版本。 3. MySQL8.0:如果项目需求中涉及到MySQL数据库的使用,请确保该数据库已经安装并处于运行状态。 4. Maven:作为项目的构建工具,它负责管理和构建SpringBoot项目。 **步骤一:Maven的配置** 1. **未配置Maven的情况**:当系统内部没有预先配置Maven时,IDEA将采用其内置的Maven版本来进行构建工作。用户可以直接利用IDEA自带的默认配置。 2. **已配置Maven的情况**:对于拥有个人Maven配置的用户,需要在IDEA中进行相应的设置。通过访问`File` > `Settings` > `Build, Execution, Deployment` > `Build Tools` > `Maven`菜单路径,用户可以在`Maven home directory`字段中指定本地Maven安装的路径。此外,还需确保`...
源码链接: https://pan.quark.cn/s/a4b39357ea24 在Linux操作系统,特别是服务器部署场景下,网络连接的不可靠性或缺失是常见问题,因此,进行离线模式下的软件安装变得尤为关键。本文将系统阐述在CentOS虚拟平台上如何实现wget工具及其相关组件的脱网安装。 首先,让我们对wget的功能特性有一个清晰的认识。wget作为一款功能全面的网络数据获取软件,支持通过HTTP、HTTPS以及FTP等传输协议执行文件下载操作,并且具备在用户中断连接后自动续传的功能,特别适用于在终端操作界面中完成文件获取任务。值得注意的是,wget程序的有效运行可能需要依赖特定的系统库和其他辅助工具,因此在部署过程中必须确认这些前置条件已经得到满足。 在执行wget的离线安装作业前,需要在具备网络连接的条件下预先准备一个集成所有必要组件的归档文件。该归档通常包含了wget的安装程序以及其运行所需的所有支持库。根据所提供的文件清单信息,识别到存在一个命名为“wget_offline_dependencies”的压缩文档,此文件应包含所有必需的元素。 接下来,将遵循以下操作流程开展离线安装工作: 1. **配置安装环境**:保证CentOS虚拟机的操作系统版本是最新的,以避免因系统组件版本陈旧而引发的兼容性障碍。执行`sudo yum update`(适用于CentOS 7及更早版本)或`sudo dnf update`(适用于CentOS 8及后续版本)指令来更新系统组件。 2. **传输离线安装包**:将“wget_offline_dependencies”压缩文件从网络可用的设备传输至CentOS虚拟机。可以使用U盘存储设备、网络文件服务或其他个人偏...
已经博主授权,源码转载自 https://pan.quark.cn/s/653d18f4b516 个人归纳了电子学会Python一级考试的要点及常见错误点,有需求的用户请在评论区留言。考试内容范围: 一、明确Python存在多种开发平台,精通Python原配的IDLE开发平台,能够开展程序编写、调试及分析工作,需具备借助Python开发平台进行程序设计的实践能力: (1)认识Python常用的几种编程平台:IDLE、Visual Studio Code、JupyterNotebook; (2)熟练IDLE的操作步骤,能够启动IDLE,能够创建文档、储存文档;(3)熟练运用IDLE进行编程,能够修改文档、执行文档等操作;(4)熟悉IDLE的两种开发途径,能够在不同途径间进行切换; (5)明确Python的版本标识以及当前最普遍应用的Python版本。 二、掌握Python程序编写的基础方法: (1)掌握“输入、处理、输出”程序编写流程; (2)熟练Python的基本格式,编写代码时会恰当的使用空格缩进、注释、字符串界定; (3)掌握变量基础概念,能够运用变量,并且掌握变量命名的规范和保留字等基础语法规格; (4)理解字符串、数值型变量,能够对变量类型进行转换; (5)掌握并熟练编写含有数值类型需求的程序。 Python作为教育及考核领域内广泛使用的高级程序设计语言,特别适合初学者学习入门。电子学会的Python一级考核主要检测考生对Python基础知识的掌握程度及应用水平。以下是一些关键的要点: 1. **开发平台**:考生应认识到Python的多种编程平台,如IDLE(Python自带的集成开发平台)、Visual Studio Code和Jupyter Notebook...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值