专题二十四:虚拟专用网络

一、VPN简介

VPN(Virtual Personal Network)即虚拟专用网,泛指通过VPN技术在公用网络上构建的虚拟专用网络。VPN用户在此虚拟网络中传输私网流量,在不改变网络现状的情况下实现安全、可靠的连接。其主要功能是在公用网络上建立专用网络,通过对数据包的加密和数据包目标地址的转换实现远程访问。

1.1VPN按照建设单位分类:

1.2VPN按照组网方式分类:

Client-to-Site VPN:即客户端与企业内网之间通过VPN隧道建立连接,客户端一般是个人计算机。此场景可以使用以下几种VPN技术实现:SSL、L2TP和L2TP over IPsec;

Site-to-Site VPN:即两个局域网之间通过VPN隧道建立连接,部署的设备通常为路由器或者防火墙、VPN网关。此场景可以使用以下几种VPN技术实现:IPSec、L2TP、L2TP over IPSec、GRE over IPSec和BGP/MPLS IP VPN 。

1.3VPN按照工作层次分类:

(1)应用层:SSL VPN

(2)网络层:IPSEC VPN 、GRE VPN、MPLS VPN

(3)数据链路层:L2TP VPN、PPTP VPN

【考点解析】熟悉各层次VPN的类型,一般出现在选择题中。

二、VPN关键技术

身份认证、数据加密和认证技术可以有效保证VPN网络与数据的安全性:

身份认证:可用于部署了远程接入VPN的场景,VPN网关对用户的身份进行认证,保证接入网络的都是合法用户而非恶意用户。也可以用于VPN网关之间对对方身份的认证。

数据加密:将明文通过加密变成密文,使得数据即使被黑客截获,黑客也无法获取其中的信息。

数据验证:通过数据验证技术对报文的完整性和真伪进行检查,丢弃被伪造和被篡改的报文。

2.1 隧道技术

隧道技术是 VPN 的基本技术,类似于点到点连接技术。它的基本过程就是在数据进入源 VPN 网关后,将数据“封装”后通过公网传输到目的 VPN 网关后再对数据“解封装”。“封装/解封装”过程本身就可以为原始报文提供安全防护功能,所以被封装的数据包在互联网上传递时所经过的逻辑路径被称为“隧道”。不同的VPN 技术封装/解封装的过程完全不同,具体封装过程在每个协议中详细介绍。

VPN技术的基本原理是利用隧道(Tunnel)技术,对传输报文进行封装,利用VPN骨干网建立专用数据传输通道,实现报文的安全传输。

位于隧道两端的VPN网关,通过对原始报文的“封装”和“解封装”,建立一个点到点的虚拟通信隧道。

2.2身份认证技术

主要用于移动办公的用户远程接入的情况。通过对用户的身份进行认证,确保接入内部网络的用户是合法用户,而非恶意用户。

不同的 VPN 技术能提供的用户身份认证方法不同:

GRE 不支持身份认证技术。

L2TP:依赖 PPP 提供的认证(比如 CHAP、PAP、EAP)。接入用户的用户名和密码本地认证也可以通过 RADIUS 服务器认证。认证通过以后再给用户分配内部的IP 地址,通过此 IP 地址对用户进行授权和管理。

IPSec:通过 IKEv2 拨号时,支持进行 EAP 认证。接入用户的用户名和密码可以本地认证可以通过 RADIUS 服务器认证。认证通过以后再给用户分配内部的 IP 地址,通过此 IP 地址对用户进行授权和管理。另外 IPSec 还支持数据源认证,在下面的数据验证技术里进行说明。

SSL VPN:支持本地认证、证书认证和服务器认证。主要是对服务器进行身份认证,确认 Web 网页的合法性。

2.3加密技术

加密技术就是把能读懂的报文变成无法读懂的报文,也就是把明文变成密文,这样即便是有黑客获取了报文也无法知道其真实含义。加密对象有数据报文和协议报文之分,能够实现协议报文和数据报文都加密的协议安全系数更高。

GRE 和 L2TP 协议本身不提供加密技术,所以通常结合 IPSec 协议一起使用,使用 IPSec 的加密技术。

IPSec:支持数据报文和协议报文加密。IPSec 一般采用对称密钥算法加密数据。对称加密算法采用相同的密钥加密和解密数据。

采用对称密钥加密的示意图:

 

SSL VPN:支持数据报文和协议报文加密。SSL VPN 采用公钥体制进行加密。公钥体制加密跟对称密钥加密的差别在于加密和解密的所用的密钥是不同的密钥。采用公钥进行加密,私钥进行解密。公钥和私钥一一对应。

2.4数据验证技术

数据验证技术就是对收到的报文进行验货。对于伪造的、被篡改的数据进行丢弃。那么验证是如何实现的呢?它采用一种称为“摘要”的技术。“摘要”技术主要采用HASH 函数将一段长的报文通过函数变换,映射为一段短的报文。在收发两端都对报文进行验证,只有摘要一致的报文才被认可。

GRE:本身只提供简单的校验和验证和关键字验证,但可结合 IPSec 协议一起使用,使用 IPSec 的数据验证技术。

L2TP:本身不提供数据验证技术,但可结合 IPSec 协议一起使用,使用 IPSec 的数据验证技术。

IPSec:支持对数据进行完整性验证和数据源验证。在 IPSec 中验证和加密通常一起使用,对加密后的报文 HMAC(Keyed-Hash Message Authentication Code)生成摘要,提供数据的安全性。HMAC 利用 Hash 函数,以一个对称密钥和一个数据包作为输入,生成一个固定长度的输出,这个输出被称为完整性校验值 ICV(Integrity Check Value)。由于在 Hash 运算时包含了密钥,即使用户同时修改了数据和摘要也可以被识别出来。

 

SSL VPN:支持对数据进行完整性验证和数据源验证。SSL VPN 采用公钥体制,利用Hash 算法生成摘要,再用私钥加密摘要生成数字签名。利用公钥进行解密。利用公钥和私钥的一一的关系可以对数据源进行认证。

2.5 GRE、L2TP、IPSec 和 SSL VPN 常用的安全技术和使用的场景

VPN

用户身份认证

数据加密和验证

备注

GRE

不支持

支持简单的关键字验证、检验和验证

可以结合IPSec使用,利用IPSec的数据加密和验证特性。

L2TP

支持基于PPP的CHAP、PAP、EAP认证

不支持

IPSec

支持

支持

支持预共享秘钥验证或证书认证;支持IKEv2的EAP认证。

SSL

支持

支持

支持用户名/密码或证书认证。

MPLS

不支持

不支持

一般运行在专用的VPN骨干网络。

三、L2TP /PPTP VPN

L2TP(Layer Two Tunneling Protocol,二层隧道协议) 是VPDN(虚拟专用拨号网络)技术的一种,专门用来进行第二层数据的通道传送,该技术主要应用在远程办公场景中为出差员工远程访问企业内网资源提供接入服务。

L2TP组网架构中包括LAC(L2TP Access Concentrator,L2TP访问集中器)和LNS(L2TP Network Server,L2TP网络服务器)

PPTP(Point to Point Tunneling Protocol),即点对点隧道协议,是对端对端协议(PPP)的一种扩展,可以使远程用户拨入ISP、通过直接连接Internet或者其他网络安全地访问企业网。

【考点解析】目前这两类VPN在实际网络中很少应用,熟悉其工作层次。

四、BGP/MPLS IP VPN

MPLS VPN简介

MPLS是一种利用标签(Label)进行转发的技术、现主要用于VPN、流量工程、QoS等场景。MPLS  VPN网络一般由运营商搭建,用户购买VPN服务来实现用户网络之间的路由传递、数据互通等。MPLS VPN使用BGP在运营商骨干网(IP网络)上发布VPN路由,使用MPLS在运营商骨干网上转发VPN报文。

BGP/MPLS IP VPN又被简称为MPLS VPN,是一种常见的L3VPN技术。

MPLS VPN网络架构由CE、PE、P组成:

CE(Customer Edge):CE代表客户边缘设备,是位于客户网络和服务提供商网络之间的设备,CE感知不到VPN的存在也不需要支持MPLS,与PE设备一般通过OSPF、静态路由等路由协议互联。

PE(Provider Edge):运营商边缘设备,与CE直接相连,在MPLS网络中,对VPN的所有处理都在PE设备上。

P(Provider):运营商网络中的骨干路由器,不直接与CE相连,具备MPLS转发能力,不维护VPN信息。

五、GRE VPN

Generic Routing Encapsulation,简称GRE,是一种三层VPN封装技术。GRE可以对某些网络层协议(如IPXApple Talk、IP等)的报文进行封装,使封装后的报文能够在另一种网络中(如IPv4)传输,从而解决了跨越多种网络的报文传输问题。

GRE网络封装技术,基本的构成要素都可以分为三个部分:乘客协议、封装协议、传输协议。

【考点解析】熟悉GRE的三个协议,一般出现在选择题中,GRE目前一般配合IPSec组合使用。

六、IPsec VPN

IPSec(IP Security) VPN一般部署在企业出口设备之间,通过加密与验证等方式,实现了数据来源验证、数据加密、数据完整性保证和抗重放等功能。

 

  • 数据来源验证:接收方验证发送方身份是否合法。

  • 数据加密:发送方对数据进行加密,以密文的形式在Internet上传送,接收方对接收的加密数据进行解密后处理或直接转发。

  • 数据完整性:接收方对接收的数据进行验证,以判定报文是否被篡改。

  • 抗重放:接收方拒绝旧的或重复的数据包,防止恶意用户通过重复发送捕获到的数据包所进行的攻击。

IPSec不是一个单独的协议,它给出了IP网络上数据安全的一整套体系结构,包括AH(Authentication Header)、ESP(Encapsulating Security Payload)、IKE(Internet Key Exchange)等协议。

IPSec SA建立原理:以IKE密钥交换方式为例子:

  • 密钥交换生成IKE加密、验证密钥,通过ISAKMP消息传输,接、发方协商要求一致,协商成功建立IKE SA

  • IKE SA保护下进行IPSec安全协议,IPSec加密、验证算法等参数的协商

  • 协商成功后这样一对IPSec SA就建立成功了(以上的协商都统称为SA协商)

  • 之后当IPSec定义的保护流进行传输时,进行安全协议的协商并对数据通过安全协议加密

IPSec协议框架

IPSec协议框架主要包含IKE、AH、ESP三个标准协议。

IKE:网络密钥交换协议,有两个版本IKEv1和IKEv2,实现通信双方的密钥协商。

IPSec通过验证头AH和封装安全载荷ESP两个协议实现IP报文的保护。

AH:协议号51,主要提供数据源验证、数据完整性校验和防重放功能,不能提供加密功能

ESP:协议号50,主要提供加密、数据源验证、数据完整性校验和防重放功能;

IPSec数据封装方式有传输模式隧道模式两种。

6.1 安全联盟 SA

IPSec对等体

运行IPSec协议的两个端点称为IPSec对等体。

基本概念

SA是通信对等体间对某些要素的约定。

SA定义了IPSec对等体间将使用的安全协议、数据封装模式、验证算法、加密算法、密钥、SA生存周期等参数。

IPSec安全传输数据的前提是在IPSec对等体之间成功建立安全联盟。

 

SA建立方式

项目

手工方式建立SA

IKE自动协商方式建立SA

SPI生成方式

手工配置SPI

SPI随机生成

SA参数生成方式

手工建立SA所需的全部参数(加密、验证密钥等)

建立SA的参数由DH算法生成

SA生存周期

永久存在

生存周期由双方配置的生存周期参数控制

1)IPSec SA的建立是单向的,并且其SA的个数还与安全协议有关

2)当只使用AHESP来保护两个对等体之间的流量,则对等体之间就有两个SA,每个方向上一个。

3)如果对等体同时使用了AHESP,那么对等体之间就需要四个SA,每个方向上两个,分别对应AHESP

SA唯一标识符

通过以下三元组来进行唯一标识:

1)安全参数索引SPI

 SPI是一个32位比特的数值,指向一张安全关联表指针。封装在AHESP头部中。

2)目的IP地址

目前仅允许单播地址,是SA的目的端点地址

3)安全协议号

标识是AH还是ESP

6.2安全协议

IPSec使用两种IP传输层的安全协议对传输报文进行封装来提供认证、加密等安全服务。

AH和ESP协议类型比较

AH:报头验证协议

在每一个数据包的标准IP报头后面添加一个AH报文头

 

Next Header:下一个头部,长度为8位。使用IP协议ID来标识IP负载。例如,值6表示TCP

Payload Len:负载长度,长度为8位,用于指示AH长度减,单位是32位。这里因为AH也是一个IPv6扩展头,根据RFC2460规定,所有IPv6扩展头必须把负载长度值减去一个64位

Reserved:保留,长度16位,为将来保留,现必须设置为0。

SPI安全参数索引 :与目标地址及安全协议(AHESP)组合使用,以确保通信的正确安全关联。接收方使用该值确定数据包使用哪一安全(SA)关联标识。

Sequence Number Field序列号 :为该数据包提供抗重播保护。序列号是 32 位、递增的数字(从 1 开始),它表示通过通信的安全关联所发送的数据包数。在快速模式安全关联的生存期内序列号不能重复。接收方将检查该字段,以确认使用该数字的安全关联数据包还没有被接收过。如果一个已经被接收,则数据包被拒绝。

Authentication Data身份验证数据 :包含完整性校验值 (ICV),也称为消息身份验证码,用于验证消息身份验证与完整性。接收方计算 ICV值并对照发送方计算的值校验它,以验证完整性。ICV是通过IP报头、AH报头与IP负载来计算的。为兼容性考虑,AH强制实现HMAC-MD5-96HMAC-SHA-1-96两种验证算法。

ESP:封装安全载荷协议

在每一个数据包的标准IP报头后面添加一个ESP报文头,并在数据包后面增加一个ESP尾部

 

SPI安全索引:唯一标识IPSec安全联盟

序列号:唯一标识每个数据包,用于防重放功击

负载数据:包含原始IP报文中可变长度数据内容

填充字段:用于增加ESP报文头的位数、无特殊含义

Pad Lengin:填充长度,给出前面填充字段的长度。置0代表无填充

Authentication Data:认证数据,包含数据完整性校验值ICV,用于接收方进行完整性校验。长度为32比特的整数

Next Header:下一头部,标识ESP报文头后面的下一个负载类型

传输模式下,为被保护的上层协议(TCP或者UDP)的编号

隧道模式下,为IP协议的编号

AH协议和ESP协议比较

安全特性

AH

ESP

协议号

51

50

数据完整性校验

支持(验证整个IP报文)

支持(不验证IP头)

数据源验证

支持

支持

数据加密

支持

防报文重播攻击

有限支持

支持

IPSec NAT-T(NAT穿越)

支持

报文封装模式

主要分为传输模式和隧道模式,将AH或者ESP的相关字段插入到原始IP报文中,以实现对报文的认证和加密。

注意:

AH-ESP封装 :先根据ESP协议对报文进行封装,再根据AH协议进行封装

  • 传输模式

AH头或ESP头被插入到IP头与传输层协议之间

由于未添加额外的IP头,所以原始报文中的IP地址在加密后的报文中可见

源目IP可能是私网地址(因为传输模式不对源目IP做任何操作)

一般用于VPN嵌套的情况(可以避免重复封装IP地址,例如L2TP over IPSecGRE over IPSec

 

 

  • 封装模式

AH头或ESP头被插到IP头(旧IP头)之前,另外在AH头或ESP头前再生成一个新的IP`头

由于添加额外的IP头,所以原始报文中的IP地址在加密后的报文中不可见

一般用于私网与私网互访没有VPN嵌套的情况

 

 

6.3加解密、验证算法

加解密--IPSec采用对称加密算法进行数据加密和解密

 

验证——加密后的报文通过HMAC生成数字签名,将数字签名填写在ICV字段(AH头或ESP头部中的认证字段)中发送过去

 

【考点解析】IPsec协议是考试中VPN技术重点,主要考察选择题或者案例题的填空,常考的AH不具备加密功能,传输模式区别等。

七、SSL VPN

SSL VPN是轻量级的远程接入方案,主要应用于移动办公用户远程接入公司内网等场景。市面上很多安全厂商都生产VPN网关,不过基于目前零信任概念的兴起,SDP软件定义边界网关正在逐步替代SSL VPN。

SSL封装位于传输层和应用层协议之间,为高层协议提供数据封装、压缩和加密等功能。

SSL(Security Socket Layer)安全套接字协议主要包括记录协议、告警协议、握手协议

记录协议:建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。

告警协议:用来传递SSL相关警告,标识什么事时候发生了措施需要终止会话等。

握手协议(重点):建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

【考点分析】SSL VPN主要考察应用场景和SSL协议,比如哪个协议不是SSL协议内容等。

八、IPSec的配置

8.1 配置参数以及思路

8.2 手工方式IPSec的配置

配置思路:
采用如下思路配置采用手工方式建立IPSec隧道:
配置接口的IP地址和到对端的静态路由,保证两端路由可达。
配置ACL,以定义需要IPSec保护的数据流。
配置IPSec安全提议,定义IPSec的保护方法。
配置安全策略,并引用ACL和IPSec安全提议,确定对何种数据流采取何种保护方法。
在接口上应用安全策略组,使接口具有IPSec的保护功能。
操作步骤
分别在RouterA和RouterB上配置接口的IP地址和到对端的静态路由
# 在RouterA上配置接口的IP地址。

<Huawei> system-view
[Huawei] sysname RouterA
[RouterA] interface gigabitethernet 1/0/0
[RouterA-GigabitEthernet1/0/0] ip address 1.1.1.1 255.255.255.0
[RouterA-GigabitEthernet1/0/0] quit
[RouterA] interface gigabitethernet 2/0/0
[RouterA-GigabitEthernet2/0/0] ip address 10.1.1.1 255.255.255.0
[RouterA-GigabitEthernet2/0/0] quit

# 在RouterA上配置到对端的静态路由,此处假设到对端的下一跳地址为1.1.1.2。

[RouterA] ip route-static 2.1.1.0 255.255.255.0 1.1.1.2
[RouterA] ip route-static 10.1.2.0 255.255.255.0 1.1.1.2


# 在RouterB上配置接口的IP地址。

<Huawei> system-view
[Huawei] sysname RouterB
[RouterB] interface gigabitethernet 1/0/0 
[RouterB-GigabitEthernet1/0/0] ip address 2.1.1.1 255.255.255.0
[RouterB-GigabitEthernet1/0/0] quit
[RouterB] interface gigabitethernet 2/0/0
[RouterB-GigabitEthernet2/0/0] ip address 10.1.2.1 255.255.255.0
[RouterB-GigabitEthernet2/0/0] quit

# 在RouterB上配置到对端的静态路由,此处假设到对端下一跳地址为2.1.1.2。

[RouterB] ip route-static 1.1.1.0 255.255.255.0 2.1.1.2
[RouterB] ip route-static 10.1.1.0 255.255.255.0 2.1.1.2

分别在RouterA和RouterB上配置ACL,定义各自要保护的数据流
# 在RouterA上配置ACL,定义由子网10.1.1.0/24去子网10.1.2.0/24的数据流。

[RouterA] acl number 3101
[RouterA-acl-adv-3101] rule permit ip source 10.1.1.0 0.0.0.255 destination 10.1.2.0 0.0.0.255 

   //匹配源10.1.1.0/24网段,目的10.1.2.0/24网段的流量

[RouterA-acl-adv-3101] quit

# 在RouterB上配置ACL,定义由子网10.1.2.0/24去子网10.1.1.0/24的数据流。

[RouterB] acl number 3101
[RouterB-acl-adv-3101] rule permit ip source 10.1.2.0 0.0.0.255 destination 10.1.1.0 0.0.0.255
[RouterB-acl-adv-3101] quit


分别在RouterA和RouterB上创建IPSec安全提议
# 在RouterA上配置IPSec安全提议。

[RouterA] ipsec proposal tran1 //创建名称为tran1的ipsec提议
[RouterA-ipsec-proposal-tran1] esp authentication-algorithm sha2-256   //配置esp认证算法sha2-256
[RouterA-ipsec-proposal-tran1] esp encryption-algorithm aes-128         //配置esp加密算法aes-128
[RouterA-ipsec-proposal-tran1] quit

# 在RouterB上配置IPSec安全提议。

[RouterB] ipsec proposal tran1
[RouterB-ipsec-proposal-tran1] esp authentication-algorithm sha2-256
[RouterB-ipsec-proposal-tran1] esp encryption-algorithm aes-128
[RouterB-ipsec-proposal-tran1] quit

此时分别在RouterA和RouterB上执行display ipsec proposal会显示所配置的信息。
分别在RouterA和RouterB上创建安全策略
# 在RouterA上配置手工方式安全策略。

[RouterA] ipsec policy map1 10 manual   //配置ipsec策略为map1,手动方式,序号为10
[RouterA-ipsec-policy-manual-map1-10] security acl 3101      //引用acl3101
[RouterA-ipsec-policy-manual-map1-10] proposal tran1        //采用tran1的ispec提议
[RouterA-ipsec-policy-manual-map1-10] tunnel remote 2.1.1.1   //隧道本地地址2.1.1.1
[RouterA-ipsec-policy-manual-map1-10] tunnel local 1.1.1.1       //隧道对端地址1.1.1.1
[RouterA-ipsec-policy-manual-map1-10] sa spi outbound esp 12345   //出方向sa编号12345
[RouterA-ipsec-policy-manual-map1-10] sa spi inbound esp 54321    //入方向sa编号54321
[RouterA-ipsec-policy-manual-map1-10] sa string-key outbound esp cipher  ruankao  //密钥为ruankao
[RouterA-ipsec-policy-manual-map1-10] sa string-key inbound esp cipher  ruankao  //密钥为ruankao
[RouterA-ipsec-policy-manual-map1-10] quit

# 在RouterB上配置手工方式安全策略。

[RouterB] ipsec policy use1 10 manual
[RouterB-ipsec-policy-manual-use1-10] security acl 3101
[RouterB-ipsec-policy-manual-use1-10] proposal tran1
[RouterB-ipsec-policy-manual-use1-10] tunnel remote 1.1.1.1
[RouterB-ipsec-policy-manual-use1-10] tunnel local 2.1.1.1
[RouterB-ipsec-policy-manual-use1-10] sa spi outbound esp 54321
[RouterB-ipsec-policy-manual-use1-10] sa spi inbound esp 12345
[RouterB-ipsec-policy-manual-use1-10] sa string-key outbound esp cipher ruankao
[RouterB-ipsec-policy-manual-use1-10] sa string-key inbound esp cipher ruankao
[RouterB-ipsec-policy-manual-use1-10] quit

分别在RouterA和RouterB的接口上引用各自的安全策略,使接口具有IPSec的保护功能
# 在RouterA的接口上引用安全策略组。

[RouterA] interface gigabitethernet 1/0/0
[RouterA-GigabitEthernet1/0/0] ipsec policy map1  //应用策略为map1
[RouterA-GigabitEthernet1/0/0] quit

# 在RouterB的接口上引用安全策略组。

[RouterB] interface gigabitethernet 1/0/0
[RouterB-GigabitEthernet1/0/0] ipsec policy use1
[RouterB-GigabitEthernet1/0/0] quit

检查配置结果
# 配置成功后,在主机PC A上执行ping操作仍然可以ping通主机PC B,执行命令display ipsec statistics可以查看数据包的统计信息。
# 分别在RouterA和RouterB上执行display ipsec sa会显示所配置的信息

九、软考真题

2021年5月网络工程师:

通常使用()为IP数据报文进行加密。

A.IPSec    B.PP2P

C.HTTPS  D.TLS

【解析】IP位于网络层,选择三层的VPN加密协议,选择IPSec。

2020年11月网络规划设计师:

能够增强和提高网际层安全的协议是()

A.IPSec  B.L2TP

C.TLS     D.PPTP

【解析】网际层是TCP/IP协议叫法,实际对应网络层,选下那个中IPSec工作在网络层,TLS应用在应用层,L2TP和PPTP是二层VPN协议。

2022年11月网络规划设计师:

下列隧道技术中本身自带加密功能的是()

A.GRE            B.L2TP

C.MPLS-VPN  D.IPSec

【解析】IPSec可以通过ESP实现数据加密。

IPSec的两个基本协议是AH和ESP,下面不属于AH协议的是()

A.数据保密性     B抵抗重放攻击

C.数据源认证     D.数据完整性认证

【解析】数据保密性是ESP的功能,AH不具备数据保密性,常考。

 

 

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

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

相关文章

Milvus(12):分析器

1 分析器概述 在文本处理中&#xff0c;分析器是将原始文本转换为结构化可搜索格式的关键组件。每个分析器通常由两个核心部件组成&#xff1a;标记器和过滤器。它们共同将输入文本转换为标记&#xff0c;完善这些标记&#xff0c;并为高效索引和检索做好准备。 在 Milvus 中&a…

Power Query精通指南1:查询结构设计、数据类型、数据导入与迁移(平面文件、Excel、Web)

文章目录 零、Power Query简介0.1 Power Query 主要功能0.2 Power Query 的优势0.3 Power Query 组件 一、Power Query数据处理基本流程1.1 前期准备1.2 提取1.3 转换1.3.1 Power Query 编辑器界面1.3.2 默认转换1.3.3 自定义转换 1.4 加载1.4.1 自动检测数据类型1.4.2 重命名查…

WebRTC 服务器之Janus概述和环境搭建

1 概述 Janus 是由 Meetecho 开发的通用 WebRTC 服务器&#xff0c;它为构建 WebRTC 应用程序提供了一个模块化框架。服务器目标&#xff1a;Janus WebRTC 网关被设计为轻量级、通用的 WebRTC 服务器&#xff0c;除了实现以下方法外&#xff0c;它本身不提供任何功能&#xff1…

19:常见的Halcon数据格式

遍历文件夹与文件选择 1&#xff09;遍历文件夹&#xff1a; list_files( : : Directory, Options : Files) Directory&#xff1a;目录&#xff08;文件夹路径&#xff09; Options&#xff1a;选项 files 指定搜索的格式为文件 directories 指定搜索的格式为文件夹 re…

QML图像提供器 (Image Provider)

QML 中的图像提供器是一种自定义图像加载机制&#xff0c;允许你从非文件源&#xff08;如数据库、网络或程序生成的内容&#xff09;提供图像数据。 主要类型 QQuickImageProvider - 基础图像提供器 QPixmapImageProvider - 提供 QPixmap 图像 QImageImageProvider - 提供 …

计算机视觉与深度学习 | 双目立体匹配算法理论+Opencv实践+matlab实践

双目立体匹配 一、双目立体匹配算法理论与OpenCV、matlab实践一、双目立体匹配理论二、OpenCV实践三、优化建议四、算法对比与适用场景二、双目立体匹配算法理论及Matlab实践指南一、双目立体匹配理论二、Matlab实践步骤三、算法对比与优化建议四、完整流程示例五、常见问题与解…

AI国学智慧语录视频,条条视频10W+播放量

家人们&#xff01;图书类带货玩法真的非常多&#xff0c;之前也分享过蛮多&#xff0c;例如情感语录、育儿教育、爆款图书金句类、AI历史人物解说类等等。 本期继续来分享一个对于普通人来说&#xff0c;上手相当简单&#xff0c;容易起号&#xff0c;可作为长线深耕的AI带货…

echart图表使用

2、接口编写 该部分代码定义了UserController控制器类&#xff0c;用于处理与用户相关的请求。包含一个用于跳转页面的方法和一个返回用户详细数据&#xff08;以 JSON 格式呈现&#xff09;的接口。前者负责将用户导航至指定页面&#xff0c;后者通过构建ChartVO对象并填充数…

Android短信监控技术实现:合法合规的远程采集方案

一年经验的全栈程序员&#xff0c;目前头发健在&#xff0c;但不知道能撑多久。 该项目已成功部署并稳定运行于企业生产环境&#xff0c;如需个性化定制方案&#xff0c;欢迎联系作者进行深度合作。 文章目录 前言 一、页面设计 1.页面显示 2.代码实现 二、具体代码实现 1.添加…

前端跨域问题怎么在后端解决

目录 简单的解决方法&#xff1a; 添加配置类&#xff1a; 为什么会跨域 1. 什么是源 2. URL结构 3. 同源不同源举&#x1f330; 同源例子 不同源例子 4. 浏览器为什么需要同源策略 5. 常规前端请求跨域 简单的解决方法&#xff1a; 添加配置类&#xff1a; packag…

【中间件】brpc_基础_execution_queue

execution_queue 源码 1 简介 execution_queue.h 是 Apache BRPC 中实现 高性能异步任务执行队列 的核心组件&#xff0c;主要用于在用户态线程&#xff08;bthread&#xff09;中实现任务的 异步提交、有序执行和高效调度。 该模块通过解耦任务提交与执行过程&#xff0c;提…

java学习之数据结构:一、数组

主要是对数组所有的东西进行总结&#xff0c;整理 适合小白~ 目录 1.什么是数组 1.1数组定义 1.2数组创建 1&#xff09;静态创建 2&#xff09;动态创建 1.3数组遍历 1&#xff09;for和while遍历 2&#xff09;foreach遍历 2.数组越界问题及解决 2.1数组越界问题 2…

[Survey]SAM2 for Image and Video Segmentation: A Comprehensive Survey

BaseInfo TitleSAM2 for Image and Video Segmentation: A Comprehensive SurveyAdresshttps://arxiv.org/abs/2503.12781Journal/Time2503Author四川大学&#xff0c;北京大学 1. Introduction 图像分割专注于识别单个图像中的目标、边界或纹理&#xff0c;而视频分割则将这…

用Maven定位和解决依赖冲突

用Maven定位和解决依赖冲突 一、依赖冲突的常见表现二、定位冲突依赖的4种方法2.1 使用Maven命令分析依赖树2.2 使用IDE可视化工具2.3 使用Maven Enforcer插件2.4 运行时分析 三、解决依赖冲突的5种方案3.1 排除特定传递依赖3.2 统一指定版本&#xff08;推荐&#xff09;3.3 使…

穿越数据森林与网络迷宫:树与图上动态规划实战指南

在 C 算法的浩瀚宇宙中&#xff0c;树与图就像是神秘的迷宫和茂密的森林&#xff0c;充满了未知与挑战。而动态规划则是我们探索其中的神奇罗盘&#xff0c;帮助我们找到最优路径。今天&#xff0c;就让我们一起深入这片神秘领域&#xff0c;揭开树与图上动态规划的神秘面纱&am…

UDP / TCP 协议

目录 一、前言&#xff1a; 数据封装与分用&#xff1a; 二、网络协议分层模型&#xff1a; 三、UDP / TCP 协议 UDP 协议&#xff1a; 1、UDP 协议段格式&#xff1a; 2、UDP 的特点&#xff1a; TCP 协议&#xff1a; 1、TCP 协议段格式&#xff1a; 2、TCP 协议的十…

Python 实现的运筹优化系统数学建模详解(动态规划模型)

相关代码链接&#xff1a;https://download.csdn.net/download/heikediguoshinib/90713747?spm1001.2014.3001.5503 一、引言 在计算机科学与数学建模的广阔领域中&#xff0c;算法如同精密的齿轮&#xff0c;推动着问题的解决与系统的运行。当面对复杂的优化问题时&…

langfuse本地安装

目录 安装命令项目准备用openai测试 安装命令 本地&#xff08;docker compose&#xff09;&#xff1a;使用 Docker Compose 在你的机器上于 5 分钟内运行 Langfuse。 # 获取最新的 Langfuse 仓库副本 git clone https://github.com/langfuse/langfuse.git cd langfuse# 运行 …

每天学一个 Linux 命令(35):dos2unix

每天学一个 Linux 命令(35):dos2unix 命令简介 dos2unix 是一个用于将 Windows/DOS 格式的文本文件转换为 Unix/Linux 格式的实用工具。它主要处理行尾符的转换(将 CRLF 转换为 LF),同时也能处理编码问题和字符集转换。这个命令在跨平台文件共享、代码迁移和系统管理场…

第6章 Python 基本数据类型详解(int, float, bool, str)细节补充

文章目录 Python 基本数据类型深入解析(int, float, bool, str)一、整型(int)的底层机制二、浮点型(float)的陷阱与解决方案三、布尔型(bool)的底层本质四、字符串(str)的不可变性与优化五、类型间的隐式转换与陷阱六、性能优化与工具总结:关键细节与最佳实践Python…