DDos系列攻击原理与防御原理

news2024/11/25 3:30:31

七层防御体系

静态过滤

命中黑名单

  • 对确定是攻击的流量直接加入黑名单(源地址命中黑名单直接丢弃,缺乏机动性和扩展性)

畸形报文过滤

畸形报文攻击

  • TCP包含多个标记位,排列组合有规律

• 现象:TCP标记位全为1

  • 报文被分片后,重组计算无法进行
  • 攻击者使用源地址为127.0.0.0网段的地址,对攻击主机发起流量,被攻击主机对127.0.0.0回应报文,导致某些系统处理127.0.0.0的地址会出错,导致系统访问缓慢。

扫描窥探报文过滤

扫描窥探攻击

  • 探测网络中存在的某些主机的IP地址以及开放的端口号,为进一步的攻击提供前提条件
  • 防御手段:监控某个目的主机在单位时间内端口和地址变化的阈值。

源合法认证检测机制

虚假源流量

  • 通过大量伪造的地址去想被攻击主机发起流量

基于会话检测机制

异常连接威胁

  • 报文在交互过程中,某些标记不符合协议工作机制的报文进行拦截
  • 防范手段:检测报文序列号、确认号等信息从而判断是否是异常连接。

特征识别过滤

具有明显攻击特征的流量

  • 针对操作系统或者应用程序的漏洞流量进行丢弃,需要防火墙能对协议特征进行识别。

流量整形

突发流量

DDoS攻击防范技术

1、首包丢弃

有些攻击是不断变换源IP地址或者源端口号发送攻击报文,通过首包丢弃,可以有效拦截这部分流量。首包丢弃与源认证结合使用,防止虚假源攻击。

处理过程:(根据三元组实现)

(1)、开启首包丢弃功能后,SYN、TCP、DNS、UDP、ICMP各类流量超过阈值后,设备会丢弃报文首包。

(2)、基于三元组(源IP地址、源端口和协议)来匹配报文,并通过报文的时间间隔来判断首包。

(3)、当报文没有匹配到任何二元组时,认为该报文是首包,将其丢弃。

(4)、当报文匹配到某三元组,则计算该报文与匹配该三元组的上一个报文到达的时间间隔。

(5)、如果时间间隔低于设定的下限,或者高于设定的上限,则认为是首包,将其丢弃:如果时间间隔落在配置的上限和下限之间,则认为是后续包,将其放行。

2、阻断和限流

通过服务学习或经验发现网络中根本没有某种服务或某种服务流量很小,则可以分别采用阻断和限流方法来防御攻击。

(1)阻断:在自定义服务策略中表示将匹配自定义服务的报文全部丢O弃;在默认防御策略中表示将自定义服务以外的此协议报文全部丢弃。

(2)限流:在自定义服务策略中表示将匹配自定义服务的报文限制在0阌值内,丢弃超过闽值的部分报文;在默认防御策略中表示将自定义服务以外的此协议报文限制在阈值内,丢弃超过阈值的部分报文。

3、静态指纹过滤

通过配置静态指纹,对命中指纹的报文进行相应的处理,从而对攻击流量进行防御。

(1)、TCP/UDP/自定义服务可基于载荷(即报文的数据段)提取指纹。

(2)、DNS报文针对域名提取指纹。

(3)、HTTP报文针对通用资源标识符URI(Uniform Resource Identifier)提取指纹。

  • TCP源检测技术能探测访问者是否是真实可用的源,UDP不包含三次握手,基于UDP的DDoS攻击需要使用“指纹”来实现防范,UDP的DDoS报文载荷内容相对固定
  • DNS协议的流量重要又特殊,工作在两种传输层协议之上(既可以用TCP又可以用UDP),通常就是根据DNS行为来做防御处理

基于TCP的DDoS攻击

TCP正常建立连接和断开连接的过程

• 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。

(1)第一次握手:建立连接时,客户端发送SYN包(SYN=J)到服务器,并进入SYN SENT状 态,等待服务器确认。

(2)第二次握手:服务器收到SYN包,必须发出ACK包(ACK=J+1)来确认客户端的SYN包,同时自己也发送一个SYN包(SYN=K),即SYN-ACK包,此时服务器进入SYN RCVD状态。

(3)第三次握手:客户端收到服务器的SYN-ACK包,向服务器发送确认包ACK(ACK=K+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。如果服务器发出的SYN-ACK包异常,客户端会发送一个RST包给服务器,服务器重新回到LSTEN监听状态。

• TCP采用四次握手来关闭一个连接。第一次握手:客户端发送FIN包(FIN=M)到服务器,表示客户端没有数据要向服务器发送了,同时进入FIN WAIT 1状态,等待服务器确认。第二次握手:服务器收到FIN包,必须发送ACK包(ACK=M+1)来确认客户端的FIN包,但服务器数据还没传完,所以不发送FIN包,此时服务器进入LAST WAIT状态。第三次握手:当服务器没有数据要向客户端发送时,服务器发送FIN包(FIN=N)到客户端,并进入LAST ACK状态,等待客户端最终确认。第四次握手:客户端收到FIN包,发出ACK包(ACK=N+1)来确认服务器的FIN包,进入TIME WAIT状态,等待连接完全断掉。此包发送完毕,服务器进入CLOSED状态完成四次握手,双方连接断开。

  • TCP的确认机制+1规律太好找,容易被伪造,就进行了一个伪随机的确认,每一次发送的序列号+这一个报文的PDU,就是下一次发送报文的序列号,只能建立会话的这两台主机才能找到这个规律。

4、SYN Flood攻击(TCP握手第一个报文)

  • 攻击者会大量伪造源地址是假的(第一次SYN攻击),如果没有抗DDos设备,服务器回第二个握手连接,这个时候服务器会缓存大量的TCP半开连接(消耗服务器资源)
  • 防御机制:基于传输层协议的源合法性验证技术

• 利用TCP协议原理,针对TCP类Flood进行检测和防御。用户进行TCP连接,清洗设备回应经过构造的SYN-ACK报文,通过用户的反应来判断此用户是否正常。主要用于来回路径不一致的情况下。

• 只是抗DDos设备把流量抗下来了,链路带宽还是会受到影响的,DDos只能是把危害降到最低,不能完全解决。

5、SYN-ACK Flood攻击(TCP握手第二个报文)

  • 被攻击对象接收大量SYN-ACK,会检查自己会话表,是自己哪个会话响应报文,这个查会话表对服务器性能有影响。
  • 防御机制:清洗设备基于目的地址对SYN-ACK报文速率进行统计,当SYN-ACK报文速率超过阈值时,启动源认证防御

6、ACK Flood攻击(TCP握手第三个报文)

  • 如果端系统在收到一个ACK报文时,如果目的端口未开放,那么端系统会直接向源IP发送RST报文。如果端系统的相关端口是对外开放的,那么其在收到ACK报文时,首先会检查这个ACK报文是否属于TCP连接表中的一个已有连接(这个过程会对端系统主机CPU资源造成一定的消耗),如果是的话,则正常处理如果不属于任何一个已有连接,那么端系统会向源IP发送RST报文

  • 攻击原理:攻击者利用僵尸网络发送大量的ACK报文,冲击网络带宽,造成网络链拥塞;同时被攻击服务器接收到攻击报文后需要检查会话以确认报文是否属于某个会话,如果攻击报文数量庞大,服务器处理性能耗尽,从而拒绝正常服务。
  • 防御原理:
  • (1)、当ACK报文速率超过阈值时,启动会话检查。
  • (2)、如果清洗设备检查到ACK报文没有命中会话,则有两种处理模式:  
    • 1)、“严格模式”:直路部署组网中建议采用”严格模式”。如果清洗设备没有检查到已经建立的会话,直接丢弃报文。
    •  2)、“基本模式”:旁路部署动态引流时,对于引流前已经建立的会话,清洗设备上会检查不到会话,此时建议采用“基本模式”,即当连续一段时间内ACK报文速率超过阈值时,启"基本模式动会话检查,设备会先让几个ACK报文通过,建立会话,然后对会话进行检查确定是否丢弃报文。
  • (3)、如果清洗设备检查到ACK报文命中会话,则检查会活创建原因。
  • (4)、如果会话是由SYN或SYN-ACK报文创建的,则允许该报文通过。
  • (5)、如果会话是由其他报文创建的(例如ACK报文),则查看报文检查结果,列号正确的报文允许通过,不正确的报文则被丢弃。
  • (6)、载荷检查是清洗设备对ACK报文的载荷进行检查,如果载荷内容全一致(载荷内容全为1等),则丢弃该报文。
  • (7)、只有启用了"会话检查”,才能启用”载荷检查”,对会话检查通过的报文进行载荷检查。

7、FIN/RST Flood攻击(存在故意捣乱行为)

  • FIN断开TCP连接RST进行TCP重连
  • 攻击原理

  • 防御FIN/RST攻击的方法就是进行会话检查

防御原理:当FIN/RST报文速率超过阈值时,启动会话检查。

(1)、如果清洗设备检查到FIN/RST报文没有命中会话,直接丢弃报文。

(2)、如果清洗设备检查到FIN/RST报文命中会话,则检查会话创建原因。

(3)、如果会话是由SYN或SYN-ACK报文创建的,则允许该报文通过。

(4)、如果会话是由其他报文创建的(例如ACK报文),则查看报文检查结果,序列号正确的报文允许通过,不正确的报文则被丢弃。

基于UDP的DDoS攻击

8、UDP Flood关联TCP类服务攻击

  • 当UDP流量与TCP类服务有关联时,通过防御TCP类服务来防御UDP Flood。
  • 攻击原理:攻击者通过僵尸网络向目标服务器发起大重的UDP报文,这种UDP报文通常为大包且速率非常快,从而造成服务器资源耗尽,无法响应正常的请求,严重时会导致链路拥塞。
  • 防御原理

• 针对TCP流量进行源检测,源认证通过后,后续这个源地址发送的UDP报文进行放行。

  • 很多流量都是由手机端发起的,手机端应用先用TCP做身份验证后再用UDP交互数据。

• UDP与TCP流量关联

9、载荷检查和指纹学习

  • 使用载荷检查和指纹学习方法防御具有规律的UDPFlood攻击。
  • 大多数UDP的DDoS载荷比较固定单一
  • 攻击原理攻击者通过僵尸网络向目标服务器发起大量的UDP报文,这种UDP报文通常为大包且速率非常快,从而造成服务器资源耗尽,无法响应正常的请求,严重时会导致链路拥塞。
  • 防御原理:

  • (1)、载荷检查:当UDP流量超过阈值时,会触发载荷检查。如果UDP报文数据段内容完全一样,例如数据段内容都为1,则会被认为是攻击而丢弃报文。
  • (2)、指纹学习:当UDP流显超过阈值时,会触发指纹学习,指纹由清洗设备动态学习生成,将攻击报文的一段显著特征学习为指纹后,匹配指纹的报文会被丢弃。
  • UDP包通常比较大,速度比较快,可以针对UDP报文做限速,一个服务器既能支持TCP服务又支持UDP服务,TCP和UDP其中一个过多都会影响另一方。

基于DNS的DDoS攻击

DNS交互过程

  • 1、客户端访问某个域名,发送DNS请求信息(带有解析的域名信息)。
  • 2、本地DNS服务器收到请求后,先在自己缓存中找对应IP地址:  
    • 1)、本地缓存有的话直接回应解析过程就完毕了。
    • 2)、本地缓存没有的话,缓存服务器就不是对应域的解析服务器(不负责对请求域名做解析),DNS服务器会向上级授权服务器为用户提交域名解析请求。授权服务器有的话会针对缓存服务器回应DNS请求,缓存服务器会记录这个域名的DNS信息,把应答结果告诉用户。

• 这个过程会发生很多攻击比如:1、客户端发起大量乱七八糟的域名解析请求,缓存服务器本地没有就会都丢给授权服务器。

  • DNS是互联网中很重要的基础服务
  • 如果DNS受到了DDoS,无法进行域名解析,客户端就无法访问域名的业务。

当用户上网访问某个网站时,会向DNS缓存服务器发出该网站的域名,以请求其IP地址,当DNS缓存服务器查找不到该域名与IP地址对应关系时,它会向授权DNS服务器发出域名查询请求,为了减少Interet上DNS的通信量,DNS缓存服务器会将查询到的域名和IP地址对应关系存体在自己的本地缓存中。后续再有主机清求该域名时,DNS缓存服务器会直接用缓存区中的记录信息回应,直到该记录老化,被删除。

1、缓存服务器比较常见的攻击包括:

(1)、DNS Request Flood攻击

(2)、DNS Reply Flood攻击

(3)、未知域名攻击

(4)、DNS缓存投毒攻击

(5)、异常DNS报文攻击

2、授权服务器比较常见的攻击包括:

(1)、DNS Request Flood攻击

(2)、未知域名攻击

(3)、DNS缓存投毒攻击

10、DNS Request Flood攻击

  • 攻击原理:。针对缓存服务器攻击。针对授权服务器攻击DNS Request Flood攻击源可能是虚假源,也可能是真实源针对不同类型的攻击源,采取的防御方式也不同。
  • DNS这种协议,工作可以基于TCP也可以基于UDP。TCP:可以判断是真实还是虚假。UDP:不太好判断是真实还是虚假。

• 使用UDP的场景

• 默认情况下解析DNS是用UDP解析,UDP解析速度快,效率高。DNS本身报文也小。

• DNS主辅同步技术,避免DNS单点失效,主DNS和辅DNS进行数据库同步的时候使用TCP。

  • 针对虚假源攻击防御

• 基本模式:抗DDoS设备让客户端和自己使用TCP进行解析,发TCP的RST让客户端与真实DNS服务器进行重连使用“基本模式”

• 这样正常客户端会使用TCP和DNS服务器建立会话,会导致DNS服务器维护大量会话,消耗资源。

• 增强模式:抗DDoS设备将真实客户端的TCP报文转发给DNS服务器的时候使用UDP报文方式进行,DNS服务器发UDP的应答给抗DDoS,抗DDoS的设备相当于做了代理(TCP和UDP之间代理)。

• 这样的话缓存都让抗DDoS设备抗下来了。

  • 针对真实源攻击防御

• 针对真实源攻击:如果是真实源攻击,经过上述防御过程后,通过的DNS报文还很大,则可以继续采用以下方式进行防御:

1、DNS请求报文限速

        (1)、指定域名限速

        (2)、源IP限速

2、Anti-DDoS设备还支持对异常DNS报文的检查,根据预定义的规则分别从以下三个方面进行检测:

        (1)、DNS报文的格式

        (2)、DNS报文的长度

        (3)、DNS报文的TTL

HTTP&HTTPS类报文攻击防御

HTTP类型报文攻击与防御

  • 防御HTTP Flood攻击的方法包括源认证、目的IP的URI检测和指纹学习。
  • 攻击原理:攻击者通过代理或僵尸向目标服务器发起大量的HTTP报文,请求涉及数据库操作的URI或其它消耗系统资源的URI,造成服务器资源耗尽,无法响应正常请求。
  • 防御原理:
  • (1)、HTTP Flood源认证
  • (2)、目的IP的URI检测
  • (3)、指纹学习

11、HTTP慢速攻击

  • 攻击原理:HTTP慢速攻击是利用HTTP现有合法机制,在建立了与HTTP服务器的连接后尽量长时间保持该连接,不释放,达到对HTTP服务器的攻击。

• (1)、HTTP愠速攻击是利用HTTP现有合法机制,在建立了与HTTP服务器的连接后,尽是长时间保持该连接,不释放,达到对HTTP服务器的攻击。常见的攻击有两种:   

         1)、S1ow POST:攻击者发送Post报文向服务器清求提交数据,将总报文长度设置为一个很大的数值,但是在随后的数据发送中,每次只发送很小的报文,这样导致服务器端一直等待攻击者发送数据。    

        2)、Slow headers:攻击者通过GET或者POST向服务器建立连接,但是HTTP头字段不发送结束符,之后发送其他字段进行保活。服务器会一直等待头信息中结束符而导致连接始终被占用。

  • 防御原理:
  • (1)、针对HTTP慢速攻击的特点,Anti-DDoS设备对每秒钟HTTP并发连接数进行检查,当每秒钟HTTP并发连接数超过设定值时,会触发HTTP报文检查,检查出以下任意一种情况,都认定受到HTTP慢速连接攻击,则将该源IP地址判定为攻击源,加入动态黑名单,同时断开此IP地址与HTTP服务器的连接。
  • (2)、连续多个HTTP POST报文的总长度都很大,但是其HTTP载荷长度都很小。
  • (3)、连续多个HTTP GET/POST报文的报文头都没有结束标识。
  • HTTP能建立起来的一定源IP是真实的。

HTTPS类型报文攻击与防御

  • 通过源认证方法来防御HTTPS Flood攻击。
  • 攻击原理:攻击者通过代理、僵尸网络或者直接向目标服务器发起大量的HTTPS连接,造成服务器资源耗尽,无法响应正常的请求。
  • 防御原理:通过源认证对HTTPS攻击进行防御,清洗设备基于目的地址对HTTPS请求报文速率进行统计,当HTTPS请求速率超过阈值时,启动源认证防御。

12、SSL DoS攻击

  • 通过源认证和SSL防御结合防御SSL DoS攻击。
  • 攻击原理SSL握手的过程中,在协商加密算法时服务器CPU的开销是客户端开销的15倍左右。攻击者利用这一特点,在一个TCP连接中不停地快速重新协商。
  • 防御原理:
  • (1)、清洗设备基于目的地址对HTTPS请求报文速率进行统计,当HTTPS请求速率超过阈值时,启动源认证防御和SSL防御:    
    • 1)、源认证  
    • 2)、SSL防御

• SSL防御:在检查周期内,如果某个源IP地址到目的IP地址的协商次数超过最大值,则将此会话标记为异常会话,在异常会活检查周期内,如果异常会话数超过最大值时,判定该源IP地址异常,将该源IP地址加入黑名单。

DDoS的流量不能百分百防御,设备存在漏判误判的情况。

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

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

相关文章

day72Html

常用标签: 分类: 块级标签:独立成行 行级标签:不独立成行,同一行可放多个行级标 注意网页显示时,忽略空白字符,(回车符,空格,tab制表符) 一)块级标签&#xf…

[数据结构]插入和希尔排序

一、插入排序 插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排…

基于SpringBoot和Vue的在线视频教育平台的设计与实现

今天要和大家聊的是一款基于SpringBoot和Vue的在线视频教育平台的设计与实现 !!! 有需要的小伙伴可以通过文章末尾名片咨询我哦!!! 💕💕作者:李同学 💕&…

Win10 搭建FTP存储服务器站点【超详细教程】

目录 第一步:打开控制面板>程序 第二步:win10左下角搜索IIS并打开 第三步:右键网站,选择添加FTP站点 第四步:添加FTP站点名称 第五步:添加IP地址和端口 第六步:身份验证与授权信息 第…

cleanmymac有必要买吗?cleanmymac免费使用

在使用mac时,小编遇到了运行内存不足、硬盘空间不足的情况。遇到这种情况,我们可以借助经典的电脑深度清理软件——CleanMyMac X,清理不常用的软件和系统垃圾,非常好用!不过,有许多网友发现CleanMyMac X有免…

Ubuntu下使用vscode进行C/C++开发:进阶篇

在vscode上进行C/C++开发的进阶需求: 1) 编写及调试源码时,可进行断点调试、可跨文件及文件夹进行函数调用。 2) 可生成库及自动提取对应的头文件和库文件。 3) 可基于当前工程资源一键点击验证所提取的库文件的正确性。 4) 可结合find_package实现方便的调用。 对于第一…

最小可行产品需要最小可行架构——可持续架构(三)

前言 最小可行产品(MVP)的概念可以帮助团队专注于尽快交付他们认为对客户最有价值的东西,以便在投入大量时间和资源之前迅速、廉价地评估产品的市场规模。MVP不仅需要考虑产品的市场可行性,还需要考虑其技术可行性,以…

腾讯云4核8g服务器多少钱?2024轻量和CVM收费价格表

2024年腾讯云4核8G服务器租用优惠价格:轻量应用服务器4核8G12M带宽646元15个月,CVM云服务器S5实例优惠价格1437.24元买一年送3个月,腾讯云4核8G服务器活动页面 txybk.com/go/txy 活动链接打开如下图: 腾讯云4核8G服务器优惠价格 轻…

C语言 C6031:返回值被忽略:“scanf“ 问题解决

我们在代码中 直接使用 scanf 就会出现这个错误 在最上面 加上 #define _CRT_SECURE_NO_WARNINGS//禁用安全函数警告 #pragma warning(disable:6031)//禁用 6031 的安全警告即可正常运行

安全的内网通讯软件,WorkPlus定制化 IM/办公门户解决方案

如今处于数字化转型的“加速期”,政企正经历着一场数字化迭代升级的时代浪潮。而不少企业都已具备了数字化管理的意识,数字化应用场景也在全面推开。WorkPlus不断推动信息技术与企业业务深度融合,作为安全的内网通讯软件,为企业提…

Ubuntu18.04 下Ublox F9P 实现RTK (利用CORS服务无需自建基站)

本内容参考如下连接:Ubuntu下Ublox F9P利用CORS服务无需自建基站实现RTK-CSDN博客 一、Ublox F9P 硬件模块示意图 图中展示了Ublox F9P的接口,包括串口2(`UART1`和`UART2`),USB1。需要人为通过u-center(Ublox F9P的显示软件)软件设置以下功能: Ublox通过`UART1`向PC端发送…

目标检测的相关模型图:YOLO系列和RCNN系列

目标检测的相关模型图:YOLO系列和RCNN系列 前言YOLO系列的图展示YOLOpassthroughYOLO2YOLO3YOLO4YOLO5 RCNN系列的图展示有关目标检测发展的 前言 最近好像大家也都在写毕业论文,前段时间跟朋友聊天,突然想起自己之前写画了一些关于YOLO、Fa…

Golang实战:深入hash/crc64标准库的应用与技巧

Golang实战:深入hash/crc64标准库的应用与技巧 引言hash/crc64简介基本原理核心功能 环境准备安装Golang创建一个新的Golang项目引入hash/crc64包测试环境配置 hash/crc64的基本使用计算字符串的CRC64校验和计算文件的CRC64校验和 高级技巧与应用数据流和分块处理网…

【Ubuntu】Ubuntu LTS 稳定版更新策略

1、确保下载环境 sudo apt update && sudo apt upgrade -y sudo apt autoremove 2、安装更新管理器 sudo apt install update-manager-core -y 3、设置只更新稳定版 sudo vim /etc/update-manager/release-upgrades 4、开始更新,耐心等待 sudo do-re…

C/C++语言学习路线: 嵌入式开发、底层软件、操作系统方向(持续更新)

初级:用好手上的锤子 1 【感性】认识 C 系编程语言开发调试过程 1.1 视频教程点到为止 1.2 炫技视频看看就行 1.3 编程游戏不玩也罢 有些游戏的主题任务就是编程,游戏和实际应用环境有一定差异(工具、操作流程),在…

基于ssm的bbs论坛系统

开发环境:idea 前端:JQueryBootstraplayui后端:SpringSpringMVCMybatis数据库:mysqlredis 基于ssm的bbs论坛系统,功能有论坛、导读、动态、排行榜以及后台管理系统等等 话不多说,看图!&#x…

数据库---PDO

以pikachu数据库为例&#xff0c;数据库名&#xff1a; pikachu 1.连接数据库 <?php $dsn mysql:hostlocalhost; port3306; dbnamepikachu; // 这里的空格比较敏感 $username root; $password root; try { $pdo new PDO($dsn, $username, $password); var_dump($pdo)…

CSS(一)---【CSS简介、导入方式、八种选择器、优先级】

零.前言 本系列适用于零基础小白&#xff0c;亦或是初级前端工程师提升使用。 知识点较为详细&#xff0c;如果追求非常详细&#xff0c;请移步官方网站或搬运网站。 1.CSS简介 CSS全称&#xff1a;“Cascading Style Sheets”&#xff0c;中文名&#xff1a;“层叠样式表”…

出行在外,又想用微软远程桌面控制千里之外的电脑?

前言 说到远程控制&#xff0c;想必很多小伙伴都不陌生。毕竟向日葵软件都是各位所熟知的远程控制软件。 出行在外&#xff0c;使用向日葵远程控制家里或者办公室的电脑是很常见的做法。在各种远程维修电脑的场景下&#xff0c;客服都会要求客户先安装好远程控制软件。 但是向…

状态模式实战运用

目录 前言 UML plantuml 类图 实战代码 Form State Client 前言 通常一个完整的业务流程中&#xff0c;会经历多个阶段&#xff0c;每个阶段即一个业务状态&#xff0c;不同状态下对应这不同的业务处理逻辑。 无脑堆砌 if else 做判断然后选择对应的业务处理其实也能…