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

浅谈计算机网络02 | SDN控制平面

计算机网络控制平面

  • 一、现代计算机网络控制平面概述
    • 1.1 与数据平面、管理平面的关系
    • 1.2 控制平面的发展历程
  • 二、控制平面的关键技术剖析
    • 2.1 网络层协议
      • 2.1.1 OSPF协议
      • 2.1.2 BGP协议
    • 2.2 SDN控制平面技术
      • 2.2.1 SDN架构与原理
      • 2.2.2 OpenFlow协议
      • 2.2.3 SDN控制器

在这里插入图片描述

一、现代计算机网络控制平面概述

控制平面是计算机网络架构中负责管理网络设备通信与数据转发路径的核心部分,通过执行路由决策、网络拓扑管理、流量调控等关键职能,依据网络实时状态制定并执行策略,为网络数据的高效、准确、可靠传输提供保障,满足不同用户和应用场景的多样化需求,在计算机网络中起着无可替代的重要作用。

1.1 与数据平面、管理平面的关系

在计算机网络的架构体系中,控制平面并非孤立存在,而是与数据平面、管理平面紧密协作,共同构建起一个高效、稳定且可靠的网络运行环境。这三个平面相互依存、相互制约,各自承担着独特的功能,却又通过紧密的交互与协同,实现了网络的整体目标。

在这里插入图片描述

控制平面与数据平面之间存在着明确的分工与协作关系。数据平面,犹如网络中的“执行者”,负责实际的数据转发操作,它按照控制平面所制定的规则,将数据包准确无误地从源节点传输至目标节点。而控制平面则扮演着“指挥官”的角色,为数据平面提供精确的转发规则。在传统网络架构中,路由器的控制平面通过运行路由协议,如开放最短路径优先(OSPF)协议,收集网络拓扑信息,并计算出最佳的路由路径。这些路由信息会被转化为转发表项,下发给数据平面。数据平面在接收到数据包后,依据转发表中的规则,迅速做出转发决策,将数据包转发至下一跳节点。在软件定义网络(SDN)架构中,这种分工协作关系体现得更为明显。SDN的控制平面通过南向接口协议,如OpenFlow协议,与数据平面中的交换机进行通信。控制平面能够根据网络的实时状态和用户需求,灵活地生成流表项,并下发给交换机。交换机则严格按照流表中的规则,对数据包进行处理和转发。这种集中式的控制方式,使得控制平面能够更加精准地掌控数据平面的行为,实现对网络流量的精细化调度。

控制平面与管理平面在网络管理过程中协同合作,共同保障网络的稳定运行。管理平面主要负责网络的整体管理与监控工作,包括设备配置管理、性能监测、故障管理以及安全管理等诸多方面。而控制平面则为管理平面提供了关键的网络状态信息和控制能力。管理平面通过与控制平面的交互,能够获取网络的拓扑结构、路由信息以及流量状态等重要数据,从而对网络的运行状况有一个全面且清晰的了解。基于这些信息,管理平面可以制定出合理的网络管理策略,并将这些策略传达给控制平面。控制平面在接收到管理平面的指令后,会对网络进行相应的调整和优化。在网络性能监测方面,管理平面可以设定性能指标的阈值,如带宽利用率、延迟等。当控制平面监测到网络性能指标超出阈值时,会及时将这一情况反馈给管理平面。管理平面则会根据具体情况,指示控制平面采取相应的措施,如调整路由路径、进行流量整形等,以确保网络性能恢复到正常水平。在网络安全管理方面,管理平面制定安全策略,如访问控制列表(ACL)等。控制平面会根据这些策略,在数据平面中实施相应的安全控制措施,阻止非法流量的传输,保障网络的安全。

1.2 控制平面的发展历程

在这里插入图片描述

在早期的传统网络中,路由器控制模式占据主导地位。在这种模式下,每台路由器都独立运行着路由协议,如RIP(路由信息协议)和OSPF(开放最短路径优先)等。这些协议赋予路由器收集周边网络拓扑信息、计算路由路径以及维护转发表的能力。以RIP协议为例,它基于距离向量算法,路由器定期向相邻路由器发送自身的路由表信息,相邻路由器接收到信息后,会根据跳数来更新自己的路由表。每台路由器都如同一个独立的决策者,在各自的小范围内进行路由决策,这种分散式的控制方式在网络规模较小时,能够较为有效地实现网络的连通性。然而,随着网络规模的不断扩张,这种模式的局限性逐渐显现。由于每台路由器都需要独立进行复杂的路由计算和拓扑信息维护,网络的管理成本急剧增加,路由收敛速度也变得极为缓慢。当网络拓扑发生变化时,例如链路故障或新链路的添加,路由器之间需要花费较长时间来同步和更新路由信息,这在一定程度上会导致网络性能的下降,甚至可能引发网络拥塞等问题。

在这里插入图片描述

为了突破传统路由器控制模式的瓶颈,逻辑集中式控制模式应运而生,软件定义网络(SDN)便是这一模式的典型代表。SDN的核心创新在于将网络的控制平面与数据平面进行了彻底分离。在SDN架构中,控制平面被集中到一个或多个控制器上,这些控制器宛如网络的“超级大脑”,负责收集全网的拓扑信息,依据网络的实时状态和用户需求,制定统一的路由策略,并将这些策略以流表的形式下发给数据平面中的交换机。OpenFlow协议作为SDN南向接口的重要协议,为控制器与交换机之间的通信搭建了桥梁。控制器通过OpenFlow协议,能够精确地控制交换机的转发行为,实现对网络流量的灵活调度。当网络中出现流量拥塞时,控制器可以实时感知到拥塞的位置和程度,然后迅速调整流表项,将部分流量引导至其他空闲链路,从而有效地缓解拥塞。这种逻辑集中式控制模式,使得网络的管理变得更加集中化和智能化,网络管理员可以通过控制器对整个网络进行全局把控,大大提高了网络的管理效率和灵活性。

二、控制平面的关键技术剖析

2.1 网络层协议

2.1.1 OSPF协议

开放最短路径优先(OSPF)协议作为一种链路状态路由协议,在自治系统内部的路由选择中发挥着关键作用,具有诸多显著特点。

在这里插入图片描述

区域划分是OSPF协议的一大特色。它将自治系统划分为多个区域,每个区域都有其独特的标识。其中,骨干区域(Area 0)如同网络的主干道,负责连接其他非骨干区域,并在区域之间传递链路状态信息。在一个大型跨国企业的网络中,其分布在全球各地的分支机构可被划分为不同的非骨干区域,而骨干区域则确保了这些区域之间的高效通信。通过区域划分,减少了每个路由器需要维护的链路状态信息数量,从而降低了路由表的规模和复杂度,提高了网络的可管理性和稳定性。当某一非骨干区域内的网络拓扑发生变化时,该区域内的路由器会先在本区域内进行路由计算和更新,只有涉及到区域间通信的信息才会传递到骨干区域,进而减少了对整个网络的影响范围,提高了网络的收敛速度。

链路状态通告(LSA)是OSPF协议的核心机制之一。网络中的每个路由器都会收集其周边链路的状态信息,包括链路的带宽、延迟、可靠性等,并将这些信息封装成LSA,然后通过洪泛的方式在所属区域内进行广播。当一个路由器收到其他路由器发送的LSA时,它会将其更新到自己的链路状态数据库(LSDB)中,从而确保每个路由器都能拥有整个区域的完整拓扑信息。在一个园区网络中,当新增一条链路连接两座建筑物内的路由器时,相关路由器会立即生成包含该链路信息的LSA,并在园区网络所属区域内进行广播,使得其他路由器能够及时知晓网络拓扑的变化。

快速收敛是OSPF协议的重要优势。由于每个路由器都持有完整的区域拓扑信息,当网络拓扑发生变化时,如链路故障或新增链路,路由器能够迅速感知到这一变化,并基于Dijkstra算法重新计算最短路径。在一个数据中心网络中,若某条服务器与交换机之间的链路出现故障,运行OSPF协议的路由器能够在极短的时间内重新计算路由,将流量切换到其他可用链路,确保数据的不间断传输,大大提高了网络的可靠性和稳定性。

2.1.2 BGP协议

BGP的主要作用是在不同自治系统的边界路由器之间交换路由信息,从而构建起全球范围内的互联网路由网络。在互联网的架构中,各个互联网服务提供商(ISP)都拥有自己的自治系统,BGP使得这些自治系统能够相互通信,实现数据的跨网络传输。当一个用户在国内访问国外的网站时,数据需要经过多个不同ISP的自治系统,BGP协议负责在这些自治系统的边界路由器之间传递路由信息,确保数据能够准确无误地到达目标网站所在的网络。

路由信息通告是BGP的核心功能之一。BGP通过建立TCP连接,在边界路由器之间交换BGP路由更新消息。这些消息包含了目的网络的可达性信息以及相关的路径属性。当一个自治系统发现了一条新的到达某目的网络的路径时,它会将该信息封装在BGP路由更新消息中,并发送给与之相邻的自治系统的边界路由器。在一个跨国企业的网络中,其位于不同国家的分支机构通过不同的ISP接入互联网。当其中一个分支机构的网络发生变化,发现了一条新的更优的访问总部网络的路径时,该分支机构所在自治系统的边界路由器会将这条新路径的信息通过BGP路由更新消息发送给相邻自治系统的边界路由器,从而实现路由信息的传播。

在这里插入图片描述

路径属性是BGP协议的重要组成部分,它为路由决策提供了丰富的信息。常见的路径属性包括起源(Origin)、自治系统路径(AS - Path)、下一跳(Next - Hop)、MED(Multi - Exit - Discriminator)等。起源属性用于标识路由信息的来源,是通过IGP(内部网关协议)发现的,还是通过EGP(外部网关协议)学习到的,亦或是通过其他方式引入的。自治系统路径属性记录了路由信息经过的所有自治系统的编号,这使得路由器能够避免路由环路的产生。下一跳属性则指定了数据包在转发到目的网络时的下一个路由器的地址。MED属性用于在多个自治系统向同一个目的网络提供多条路径时,影响相邻自治系统的路由选择,通常数值越小表示路径越优。在一个复杂的网络环境中,当存在多个自治系统都可以到达某一目的网络时,路由器会根据这些路径属性进行综合判断,选择最优的路径进行数据转发。

策略路由是BGP协议的一大优势,它允许网络管理员根据特定的策略来控制路由的选择和流量的转发。网络管理员可以根据业务需求、网络拓扑结构以及与其他自治系统的商业合作关系等因素,制定灵活的路由策略。在一个企业网络中,为了确保关键业务的服务质量,网络管理员可以配置BGP策略,使得关键业务的流量优先通过与某一ISP建立的高速链路进行传输,而普通业务流量则可以通过其他链路进行转发。这样可以有效地保障关键业务的带宽需求和低延迟要求,提高业务的可靠性和用户体验。

2.2 SDN控制平面技术

2.2.1 SDN架构与原理

软件定义网络(SDN)作为网络领域的创新架构,其核心特性在于控制平面与数据平面的清晰分离,这种独特的设计理念为网络带来了前所未有的灵活性与可编程性。

SDN将控制平面从网络设备中剥离出来,集中到一个或多个控制器上。这些控制器宛如网络的“智慧大脑”,掌控着全局的网络信息,负责收集网络拓扑、链路状态以及流量统计等关键数据。通过对这些信息的深度分析与整合,控制器能够依据网络的实时需求,制定出精准的转发策略。在一个大型数据中心网络中,当多台服务器同时面临大量数据请求时,SDN控制器可以实时感知各服务器的负载情况以及网络链路的带宽使用状态,然后根据预先设定的规则,合理调配网络流量,将请求分配到负载相对较低且链路带宽充足的服务器上,确保数据的高效传输。

在这里插入图片描述

集中式控制是SDN架构的一大显著优势。借助集中式的控制器,网络管理员能够从全局视角对整个网络进行统一管理和灵活配置。这意味着管理员只需在控制器上进行操作,便可轻松实现对网络拓扑的动态调整、路由策略的优化以及流量的精细化调度,无需再像传统网络那样,逐个对网络设备进行繁琐的配置。当网络中需要新增一个子网时,管理员只需在SDN控制器上进行简单的配置操作,控制器便能自动将相关的配置信息下发到数据平面的交换机上,实现子网的快速接入和网络的无缝扩展。这种集中式控制方式大大提高了网络管理的效率,降低了管理成本,使得网络能够更加迅速地响应业务需求的变化。

开放接口是SDN架构的另一大亮点。SDN通过定义标准化的南向接口和北向接口,为网络的可编程性提供了有力支持。南向接口,如OpenFlow协议,实现了控制器与数据平面设备之间的通信,使得控制器能够对交换机等设备进行精确的控制,灵活地定义数据包的转发规则。而北向接口则为上层应用与控制器之间的交互搭建了桥梁,开发者可以利用北向接口提供的API,根据不同的业务需求,开发出各种定制化的网络应用程序。在智能交通系统中,开发者可以基于SDN的北向接口,开发出专门用于交通流量监测与调控的应用程序。该程序可以实时获取道路上的车辆流量信息,并将这些信息传递给SDN控制器。控制器根据这些信息,通过南向接口对网络中的交换机进行控制,调整网络流量的转发路径,确保交通数据的实时、准确传输,从而实现对交通流量的智能调控。

2.2.2 OpenFlow协议

OpenFlow协议在SDN架构中占据着核心地位,它作为SDN南向接口的关键协议,肩负着控制器与数据平面设备之间通信的重任,为实现SDN的创新理念提供了坚实的技术支撑。

流表是OpenFlow协议的核心数据结构,它犹如数据平面设备的“行动指南”,决定了数据包的转发路径和处理方式。流表由一系列的流表项组成,每个流表项都包含了精确的匹配字段和相应的动作。匹配字段涵盖了数据包的多个关键属性,如源IP地址、目的IP地址、源端口、目的端口、协议类型等。当数据平面设备接收到一个数据包时,会依据流表中的匹配字段,对数据包进行逐一匹配。在一个企业网络中,若流表中存在一条流表项,其匹配字段设置为源IP地址为192.168.1.0/24,目的IP地址为10.0.0.0/8,协议类型为TCP,动作设置为将数据包转发到端口3。当设备接收到一个源IP地址为192.168.1.5,目的IP地址为10.0.0.10,协议类型为TCP的数据包时,便会与该流表项成功匹配,并按照动作指示,将数据包转发到端口3。

动作则定义了设备在匹配到数据包后应执行的具体操作,常见的动作包括转发到指定端口、丢弃数据包、修改数据包的某些字段等。除了上述简单的转发动作外,还可以进行更为复杂的操作。在网络安全防护场景中,可以设置流表项,当匹配到来自特定恶意IP地址的数据包时,将其直接丢弃,从而有效阻止恶意流量的入侵;或者对数据包的源IP地址进行修改,实现网络地址转换(NAT)功能,隐藏内部网络的真实IP地址,增强网络的安全性。

OpenFlow协议支持多种消息类型,这些消息在控制器与数据平面设备之间传递着丰富的信息,确保了双方的高效通信和协同工作。其中,配置消息用于控制器对数据平面设备的基本配置,如设置设备的端口状态、流表的最大容量等。在网络部署初期,控制器可以通过配置消息,将数据平面交换机的某个端口设置为开启状态,并设置其流表最大容量为1000条流表项,以满足网络的基本运行需求。状态消息用于设备向控制器汇报自身的运行状态,包括端口的流量统计信息、流表的使用情况等。交换机可以定期向控制器发送状态消息,汇报其各个端口的实时流量,以便控制器及时了解网络的流量分布情况,为后续的流量调度提供依据。

在这里插入图片描述

在实际的网络通信过程中,当数据平面设备接收到一个数据包,且在本地流表中未找到匹配的流表项时,会通过Packet - In消息将数据包发送给控制器。控制器在接收到Packet - In消息后,会根据网络的全局信息和预先设定的策略,为该数据包计算出最佳的转发路径,并生成相应的流表项。然后,控制器通过Flow - Mod消息将这些流表项下发到数据平面设备,设备在接收到Flow - Mod消息后,将新的流表项添加到本地流表中。当下一次接收到相同类型的数据包时,便可以直接依据本地流表中的流表项进行转发,无需再向控制器发送Packet - In消息,从而提高了数据包的转发效率。

2.2.3 SDN控制器

SDN控制器作为SDN架构的核心组件,犹如网络的“指挥中枢”,肩负着众多关键功能,对网络的稳定运行和高效管理起着决定性作用。

网络拓扑管理是SDN控制器的重要职责之一。控制器通过与数据平面设备进行持续的通信,能够实时收集网络中的拓扑信息,包括设备的连接关系、链路的状态等。在此基础上,控制器能够构建出一幅精确、实时的网络拓扑图。在一个复杂的园区网络中,当新的交换机接入网络或者现有链路的状态发生变化时,SDN控制器能够迅速感知到这些变化,并及时更新网络拓扑图。这种实时的拓扑管理能力,使得控制器能够全面了解网络的结构,为后续的路由计算和流量调度提供了准确的基础信息。

路由计算是SDN控制器的核心功能之一。基于所掌握的网络拓扑信息,控制器能够运用先进的路由算法,如最短路径算法、流量工程算法等,为数据包计算出最优的传输路径。在一个大型数据中心网络中,当有多条链路可供选择时,控制器可以根据链路的带宽、延迟、拥塞程度等因素,综合运用路由算法,计算出一条既能满足数据传输需求,又能优化网络资源利用的最佳路径。通过这种精确的路由计算,能够确保数据在网络中高效、稳定地传输,避免因路由选择不当导致的网络拥塞和性能下降。

流表下发是SDN控制器实现对数据平面设备控制的关键手段。控制器在完成路由计算后,会将计算得到的路由信息转化为流表项,并通过南向接口协议(如OpenFlow协议)将这些流表项下发到相应的数据平面设备。在一个企业网络中,当控制器计算出某个部门的数据包需要通过特定的路径进行转发时,它会生成包含该转发路径信息的流表项,并将其下发到相关的交换机上。交换机在接收到流表项后,会按照流表的指示对数据包进行转发,从而实现控制器对网络流量的精确控制。

相关文章:

浅谈计算机网络02 | SDN控制平面

计算机网络控制平面 一、现代计算机网络控制平面概述1.1 与数据平面、管理平面的关系1.2 控制平面的发展历程 二、控制平面的关键技术剖析2.1 网络层协议2.1.1 OSPF协议2.1.2 BGP协议 2.2 SDN控制平面技术2.2.1 SDN架构与原理2.2.2 OpenFlow协议2.2.3 SDN控制器 一、现代计算机…...

在 QNAP NAS中使用 Container Station 运行 Docker 的完整指南

QNAP 为用户提供了一个名为 Container Station 的应用,它在 QNAP NAS 上将 Docker 和 LXC 结合在一起,通过图形化界面,让用户更轻松地在 NAS 上管理容器。本文将带你一步步了解如何在 QNAP NAS 上安装和使用 Container Station,以…...

XML在线格式化 - 加菲工具

XML在线格式化 打开网站 加菲工具 选择“XML 在线格式化” 输入XML,点击左上角的“格式化”按钮 得到格式化后的结果...

大数据学习(34)-mapreduce详解

&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦&#x1f91…...

代码合并冲突解决push不上去的问题

环境:【IntelliJ IDEA】 【Gerrit】 1、错误信息 代码合并,迭代1合并到迭代2,解决冲突后,依然push不上去,报错信息如下: remote: Processing changes: refs: 1 remote: Processing changes: refs…...

万字长文介绍ARINC 653,以及在综合模块化航空电子设备(IMA)中的作用

文章目录 一、引言二、ARINC 653背景三、整体系统架构四、应用/执行(APEX)接口五、ARINC 653 RTOS内部机制六、健康监测功能七、软件应用八、ARINC 653现状九、总结 一、引言 在现代航空领域,综合模块化航空电子设备(IMA&#xf…...

MySQL 与 Redis 数据一致性 2

1. 强一致还是最终一致?2. 先写 MySQL 还是先写Redis?case 1 3. 缓存(Redis)更新还是清除?更新策略更新策略会有数据不一致问题?数据不一致的概率与影响如果使用监听binlog更新数据还会出现数据不一致问题?binlog的消费问题 使用消息队列行不行?其他方案总结: 数据不一致…...

MySQL程序之:使用类似URI的字符串或键值对连接到服务器

本节介绍使用类似URI的连接字符串或键值对来指定如何为MySQLShell等客户端建立到MySQL服务器的连接。 以下MySQL客户端支持使用类似URI的连接字符串或键值对连接到MySQL服务器: MySQL Shell实现X DevAPI的MySQL连接器 本节记录了所有有效的类似URI的字符串和键值…...

Docker私有仓库管理工具Registry

Docker私有仓库管理工具Registry 1 介绍 Registry是私有Docker仓库管理工具,Registry没有可视化管理页面和完备的管理策略。可借助Harbor、docker-registry-browser完成可视化和管理。Harbor是由VMware开发的企业级Docker registry服务。docker-registry-browser是…...

若依前后端分离项目部署(使用docker)

文章目录 一、搭建后端1.1 搭建流程:1.2 后端零件:1.2.1 mysql容器创建:1.2.2 redis容器创建:1.2.3 Dockerfile内容:1.2.4 构建项目镜像:1.2.5 创建后端容器: 二、前端搭建:2.1 搭建流程&#x…...

Unity2021.3.13崩溃的一种情况

如果出现如下的报错,可能是软件冲突的原因。自己的原因是使用f.lux这款软件似乎和Unity相互冲突,出现下面报错。 错误信息如上图...

Temp123

MapDB:的持久化机制,以及源码分析和摘取 1、spark streaming--struct streaming 基于 时间间隔 攒批 2、kafka-connect-hdfs 控制 flush.size 和 interval.ms控制 攒批 - 完全自研 攒批机制 - 使用 embeded 版 https://lxblog.com/qianwen/share?shar…...

春秋杯-WEB

SSTI 可以看到主页那里有个登录测试之后为ssti {{4*4}} fenjing梭哈即可得到payload {{((g.pop.__globals__.__builtins__.__import__(os)).popen(cat flag)).read()}}file_copy 看到题目名字为file_copy, 当输入路径时会返回目标文件的大小, 通…...

JavaEE:多线程初阶

JavaEE:多线程初阶 一、线程的原理和进程与线程之间的关系1. 线程的原理线程的基本概念线程的生命周期线程的调度线程的并发与并行 2. 进程与线程的关系进程(Process)线程与进程的关系进程和线程的对比线程的优势线程的缺点 3. 总结 二、多线…...

Linux之文件系统前世今生(一)

Linux在线1 Linux在线2 一、 基本概念 1.1 块(Block) 在计算机存储之图解机械硬盘这篇文章中我们提到过,磁盘读写的最小单位是扇区,也就是 512 Byte;很明显,每次读写的效率非常低。 为了提高IO效率&…...

当设置dialog中有el-table时,并设置el-table区域的滚动,看到el-table中多了一条横线

问题:当设置dialog中有el-table时,并设置el-table区域的滚动,看到el-table中多了一条横线; 原因:el-table有一个before的伪元素作为表格的下边框下,初始的时候已设置,在滚动的时候并没有重新设置…...

Windows远程桌面网关出现重大漏洞

微软披露了其Windows远程桌面网关(RD Gateway)中的一个重大漏洞,该漏洞可能允许攻击者利用竞争条件,导致拒绝服务(DoS)攻击。该漏洞被标识为CVE-2025-21225,已在2025年1月的补丁星期二更新中得到…...

vue 前端优化性能优化方法

1.列表使用唯一 key v-for"item in activeList" :key"item.id"原因是不使用 key 或者列表的 index 作为 key 的时候,每个元素对应的位置关系都是 index,直接导致我们插入的元素到后面的全部元素,对应的位置关系都发生了变…...

docker-compose部署kafka 3.3.1 kraft

一、服务器: 节点1:10.1.1.165 节点2:10.1.1.164 节点3:10.1.1.169二、添加环境地址解析 vim /etc/hosts kafka1 10.1.1.165 kafka2 10.1.1.164 kafka3 10.1.1.169三、节点配置 节点1 version: "3" services:kafka1:image: bitnami/kafka:3.3.1contain…...

【Python】第二弹---深入理解编程基础:从常量、变量到注释的全面解析

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】【MySQL】【Python】 目录 1、常量和表达式 2、变量和类型 2.1、变量是什么 2.2、变量的语法 2.3、变量的类型 2.4、动态类型特…...

python打卡day49

知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、👨‍🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨‍&#x1f…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...

高防服务器价格高原因分析

高防服务器的价格较高,主要是由于其特殊的防御机制、硬件配置、运营维护等多方面的综合成本。以下从技术、资源和服务三个维度详细解析高防服务器昂贵的原因: 一、硬件与技术投入 大带宽需求 DDoS攻击通过占用大量带宽资源瘫痪目标服务器,因此…...

SQL注入篇-sqlmap的配置和使用

在之前的皮卡丘靶场第五期SQL注入的内容中我们谈到了sqlmap,但是由于很多朋友看不了解命令行格式,所以是纯手动获取数据库信息的 接下来我们就用sqlmap来进行皮卡丘靶场的sql注入学习,链接:https://wwhc.lanzoue.com/ifJY32ybh6vc…...

Python的__call__ 方法

在 Python 中,__call__ 是一个特殊的魔术方法(magic method),它允许一个类的实例像函数一样被调用。当你在一个对象后面加上 () 并执行时(例如 obj()),Python 会自动调用该对象的 __call__ 方法…...

Java多线程实现之Runnable接口深度解析

Java多线程实现之Runnable接口深度解析 一、Runnable接口概述1.1 接口定义1.2 与Thread类的关系1.3 使用Runnable接口的优势 二、Runnable接口的基本实现方式2.1 传统方式实现Runnable接口2.2 使用匿名内部类实现Runnable接口2.3 使用Lambda表达式实现Runnable接口 三、Runnabl…...

使用python进行图像处理—图像滤波(5)

图像滤波是图像处理中最基本和最重要的操作之一。它的目的是在空间域上修改图像的像素值,以达到平滑(去噪)、锐化、边缘检测等效果。滤波通常通过卷积操作实现。 5.1卷积(Convolution)原理 卷积是滤波的核心。它是一种数学运算,…...

Qt/C++学习系列之列表使用记录

Qt/C学习系列之列表使用记录 前言列表的初始化界面初始化设置名称获取简单设置 单元格存储总结 前言 列表的使用主要基于QTableWidget控件,同步使用QTableWidgetItem进行单元格的设置,最后可以使用QAxObject进行单元格的数据读出将数据进行存储。接下来…...