网络空间安全之一个WH的超前沿全栈技术深入学习之路(8-2):scapy 定制 ARP 协议 、使用 nmap 进行僵尸扫描-实战演练、就怕你学成黑客啦!

本文涉及的产品
可观测链路 OpenTelemetry 版,每月50GB免费额度
函数计算FC,每月15万CU 3个月
应用实时监控服务ARMS - 应用监控,每月50GB免费额度
简介: scapy 定制 ARP 协议 、使用 nmap 进行僵尸扫描-实战演练等具体操作详解步骤;精典图示举例说明、注意点及常见报错问题所对应的解决方法IKUN和I原们你这要是学不会我直接退出江湖;好吧!!!



欢迎各位彦祖与热巴畅游本人专栏与博客

你的三连是我最大的动力

以下图片仅代表专栏特色 [点击箭头指向的专栏名即可闪现]

专栏跑道一

➡️网络空间安全——全栈前沿技术持续深入学习

image.gif 编辑

专栏跑道二

➡️ 24 Network Security -LJS

image.gif 编辑

image.gif 编辑

image.gif 编辑

专栏跑道三

 ➡️ MYSQL REDIS Advance operation

image.gif 编辑

专栏跑道四

➡️HCIP;H3C-SE;CCIP——LJS[华为、华三、思科高级网络]

image.gif 编辑

专栏跑道五

➡️RHCE-LJS[Linux高端骚操作实战篇] image.gif 编辑

专栏跑道六

➡️数据结构与算法[考研+实际工作应用+C程序设计]

image.gif 编辑

专栏跑道七

➡️RHCSA-LJS[Linux初级及进阶骚技能]

image.gif 编辑

image.gif 编辑

目录

欢迎各位彦祖与热巴畅游本人专栏与博客

你的三连是我最大的动力

以下图片仅代表专栏特色 [点击箭头指向的专栏名即可闪现]

专栏跑道一

➡️网络空间安全——全栈前沿技术持续深入学习

专栏跑道二

➡️ 24 Network Security -LJS

专栏跑道三

➡️ MYSQL REDIS Advance operation

专栏跑道四

➡️HCIP;H3C-SE;CCIP——LJS[华为、华三、思科高级网络]

专栏跑道五

➡️RHCE-LJS[Linux高端骚操作实战篇]编辑

专栏跑道六

➡️数据结构与算法[考研+实际工作应用+C程序设计]

专栏跑道七

➡️RHCSA-LJS[Linux初级及进阶骚技能]

上节回顾https://blog.csdn.net/weixin_74796680/article/details/143250691?spm=1001.2014.3001.5501

项目实战 1-使用 scapy 定制数据包进行高级扫描

1.scapy 定制 ARP 协议

编辑

如果提示 INFO 找不到某个模块可以使用 如下命令

安装时我们输入 exit() 退出 scapy

再次输入

Craft 精心制作

上述图片详解说明:

示例1:定义向 192.168.1.1 发送 arp 请求的数据包

编辑

退出 scapy

1.2scapy 定制 PING 包

如下2命令可以直接看到我们的数据包格式

注意:

思路:

注意:

1.3scapy 定制 TCP 协议 SYN 请求

查看 TCP()函数的用法

注意:这种基于 tcp 的半链接扫描,更隐密,更不容易被发现。

2.实战 2-僵尸扫描

简介:

僵尸扫描拥有极高的隐蔽特性,但是实施条件苛刻。

示例:

前提

编辑

2.2僵尸扫描原理

端口开放状态扫描原理:

第一步:黑客的收获是:知道了僵尸主机的 IPID。

第二步:黑客的收获是:如果目标主机端口开放,让僵尸主机的 IPID+1

第三步:

第四步:计算 3 次通信过中的 IPID 值。

结论:

编辑

3.僵尸扫描-实战演练

centos7 系统镜像和安装视频链接

提取码:3vt7

XP 系统下载

演练初始化

XP 安装完后,要关闭防火墙:

第一步:给僵尸主机发送的 SYN/ACK 数据包,将返回的数据包存入 rz1

第二步:攻击者修改 IP 包头的 SRC 字段为僵尸主机的 IP,伪装成僵尸主机给目标主机发 SYN 请求。

第三步:攻击者再次向僵尸主机发送 SYN/ACK 确认包,获得 IPID

实验结果查看

测试端口不开放的情况

4. 使用 nmap 进行僵尸扫描

4.1扫描 192.168.1.0 网段中某些机器可以作为僵尸主机

192.168.1.32 是一台什么服务器,是哪个厂商?

补充:

image.gif 编辑

项目实战 1-使用 scapy 定制数据包进行高级扫描

1.scapy 定制 ARP 协议

root㉿kali-2024)-[/home/ljs/Desktop]
└─# scapy        
INFO: Can't import PyX. Won't be able to use psdump() or pdfdump().

image.gif

image.gif

如果提示 INFO 找不到某个模块可以使用 如下命令

apt-get install python-matplotlib

image.gif

安装时我们输入 exit() 退出 scapy

>>> exit()

image.gif

再次输入

apt-get install python-matplotlib
再次进入就没有提示信息了

image.gif

image.gif 编辑

Craft 精心制作

  • 我们使用 ARP().display()来查看 ARP 函数的用法
  • image.gif 编辑

上述图片详解说明:

###[ ARP ]###  # ARP 数据包的开始标记
  hwtype    = Ethernet (10Mb)  # 硬件类型:以太网 (10Mb/s)
  # 这是 ARP 使用的硬件类型,表示使用的是以太网。
  ptype     = IPv4              # 协议类型:IPv4
  # 表示被解析的协议类型是 IPv4(互联网协议版本4)。
  hwlen     = None              # 硬件地址长度:未定义
  # 硬件地址的长度,通常以太网地址为 6 字节,这里为 None 可能是未被设置。
  plen      = None              # 协议地址长度:未定义
  # 协议地址的长度,IPv4 地址通常为 4 字节,这里也为 None 可能是未被设置。
  op        = who-has           # 操作码:请求方谁拥有(who-has)
  # 表示 ARP 操作的类型,这里是请求 (who-has),询问特定 IP 地址的 MAC 地址。
  hwsrc     = 00:0c:29:08:d2:3a  # 源硬件地址:00:0c:29:08:d2:3a
  # 发送此 ARP 请求的设备的 MAC 地址。
  psrc      = 192.168.79.135    # 源协议地址:192.168.79.135
  # 发送此 ARP 请求的设备的 IP 地址。
  hwdst     = 00:00:00:00:00:00  # 目标硬件地址:00:00:00:00:00:00
  # 目标设备的 MAC 地址,此处为全零,表示不确定或广播请求。
  pdst      = 0.0.0.0            # 目标协议地址:0.0.0.0
  # 目标设备的 IP 地址,此处为 0.0.0.0,通常表示该请求是为了查找某个具体的 IP 地址。

image.gif

image.gif 编辑

示例1:定义向 192.168.1.1 发送 arp 请求的数据包

>>> sr1(ARP(pdst="192.168.79.2"))
sr1 函数作用:sr1 函数包含了发送数据包和接收数据包的功能。

image.gif

Begin emission:
.........................Finished sending 1 packets.
...*
Received 29 packets, got 1 answers, remaining 0 packets
<ARP hwtype=0x1 ptype=0x800 hwlen=6 plen=4 op=is-at hwsrc=f0:98:38:b8:e0:92
psrc=192.168.1.1 hwdst=00:0c:29:6a:cf:1d pdst=192.168.1.53 |<Padding
load='\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|>>

image.gif

image.gif 退出 scapy

>>> exit()
  • image.gif
  • 发现源地址 psrc=192.168.79.2,说明已经收到网关的应答包。

1.2scapy 定制 PING 包

  • Scapy 的功能是非常强大的,我们前面只是简单的介绍了他的 ARP 探测方式,下面我们简单讲一下IP/ICMP 的方式

如下2命令可以直接看到我们的数据包格式

IP().display()
###[ IP ]###  # IP 数据包的开始标记
  version   = 4                  # 版本:4
  # 表示 IP 协议的版本,这里是 IPv4(互联网协议版本4)。
  ihl       = None               # 首部长度:未定义
  # 表示 IP 首部的长度,通常以 32 位字为单位,None 表示未设置。
  tos       = 0x0                # 服务类型:0x0
  # 服务类型字段,用于指示数据包的优先级和处理方式,此处为 0,表示默认优先级。
  len       = None               # 总长度:未定义
  # 包含 IP 首部和数据部分的总长度,通常以字节为单位,None 表示未设置。
  id        = 1                  # 标识符:1
  # 用于标识数据包的唯一标识符,通常在分片时使用。
  flags     =                     # 标志位:无
  # 用于控制数据包的分片行为,此处没有设置标志。
  frag      = 0                  # 分片偏移:0
  # 表示数据包是否分片及其偏移量,0 表示没有分片。
  ttl       = 64                 # 生存时间:64
  # 表示数据包在网络中的最大生存时间,通常用于防止数据包在网络中无休止地传播,值为 64。
  proto     = hopopt             # 协议:hopopt
  # 表示上层协议的类型,此处为 “hopopt”,即跳跃选项协议。
  chksum    = None               # 校验和:未定义
  # 用于验证 IP 数据包的完整性,None 表示未计算校验和。
  src       = 127.0.0.1         # 源地址:127.0.0.1
  # 发送数据包的设备的 IP 地址,此处为回环地址,表示本地设备。
  dst       = 127.0.0.1         # 目标地址:127.0.0.1
  # 接收数据包的设备的 IP 地址,此处为回环地址,表示本地设备。
  \options   \                   # 选项:无
  # IP 数据包可以包含选项字段,此处没有设置选项。

image.gif

  • image.gif 编辑
ICMP().display()

image.gif

  • image.gif 编辑

注意:

  • IP()生成 ping 包的源 IP 和目标 IP ,ICMP() 生 ping 包的类型。
  • 使用 IP()和 ICMP()两个函数,可以生成 ping 包,进行探测。

思路:

  1. 修改 IP 包头的 dst,也就是我们的目的地址
  2. 拼接上 ICMP 的数据包类型
  3. 使用 sr1()进行发送数据包并接收数据包

image.gif 编辑

>>> sr1(IP(dst="192.168.1.1")/ICMP(),timeout=1)

image.gif

image.gif 编辑

注意:

  • 大家复制命令时,>>>提示符和命令之间不能有空格。

image.gif 编辑

1.3scapy 定制 TCP 协议 SYN 请求

  • tcp 三次握手过程中 flags 的标记

image.gif 编辑

查看 TCP()函数的用法

>>>  TCP().display()
###[ TCP ]### 
  sport     = ftp_data
  dport     = http
  seq       = 0
  ack       = 0
  dataofs   = None
  reserved  = 0
  flags     = S
  window    = 8192
  chksum    = None
  urgptr    = 0
  options   = ''
 查看TCP()函数的用法字段详解说明
 ###[ TCP ]###  # TCP 数据包的开始标记
  sport     = ftp_data           # 源端口:ftp_data
  # 表示发送方使用的端口号,此处为 FTP 数据端口,通常为 20。
  dport     = http               # 目标端口:http
  # 表示接收方使用的端口号,此处为 HTTP 端口,通常为 80。
  seq       = 0                  # 序列号:0
  # 表示数据包的序列号,用于跟踪数据流的顺序,此处为 0,通常在连接建立时。
  ack       = 0                  # 确认号:0
  # 表示期望接收的下一个序列号,此处为 0,可能表示此数据包为初始连接。
  dataofs   = None               # 数据偏移:未定义
  # 表示 TCP 首部的长度,通常以 32 位字为单位,None 表示未设置。
  reserved  = 0                  # 保留字段:0
  # 保留字段,通常用于将来的扩展,当前设置为 0。
  flags     = S                  # 标志位:S (SYN)
  # 表示 TCP 标志位,这里为 SYN,表示这是一个连接请求数据包。标志域,紧急标志、有意义的应答标志、推、重置连接标志、同步序列号标志、完成发送数据标志。按照顺序排列是:URG、ACK、PSH、RST、SYN、FIN
  window    = 8192               # 窗口大小:8192
  # 表示接收方可以接收的数据量,单位为字节,这里为 8192。
  chksum    = None               # 校验和:未定义
  # 用于验证 TCP 数据包的完整性,None 表示未计算校验和。
  urgptr    = 0                  # 紧急指针:0
  # 指示紧急数据的结束位置,此处为 0,表示没有紧急数据。
  options   = ''                 # 选项:无
  # TCP 数据包可以包含选项字段,此处没有设置选项。

image.gif

sr1(IP(dst="192.168.1.1")/TCP(flags="S" ,dport=80),timeout=1)
flags=”S”表示 SYN 数据包
dport=80 表示目标端口 80

image.gif

image.gif 编辑

  • 我们的到一个 flags=SA 的数据包。
  • SA 标志即 SYN+ACK。我们收到服务器 tcp 三次握手中的第二个包,能收到回应,表示端口开放。

注意:这种基于 tcp 的半链接扫描,更隐密,更不容易被发现。

image.gif 编辑

2.实战 2-僵尸扫描

简介:

  • 僵尸主机:僵尸主机是指感染僵尸程序病毒,从而被黑客程序控制的计算机设备。
  • 但是僵尸扫描中的僵尸主机指得是一个闲置的操作系统(这里的闲置是指主机不会主动和任何人通信),且此系统中 IP 数据包中 ID 是递增的。
  • IPID:指的是通信过中,IP 数据包中的 ID。

僵尸扫描拥有极高的隐蔽特性,但是实施条件苛刻。

1. 目标网络可伪造源地址进行访问
2. 选择僵尸机,僵尸机需要在互联网上是一个闲置的操作系统,需要系统使用递增的 IPID,比如:XP 系统。

示例:

nmap 和 ping 都会直接和目标机器接触。 如何可以不直接目标主机接触,还可以探测出目标主机是否开放端口?

image.gif 编辑

前提

  • 你在公网或局域网上先拿到了肉机。
  • 僵尸扫描可以不拿到肉机权限,只要对方的 IPID 是自增长上的就可以了。

image.gif

2.2僵尸扫描原理

端口开放状态扫描原理:

  • TCP 三次握手发包过程中,SYN/ACK 是第二次包

image.gif 编辑

第一步:黑客的收获是:知道了僵尸主机的 IPID。

(1)、攻击者向僵尸机发送 SYN/ACK 确认包。
(2)、僵尸主机返回我们 RST 数据包关闭链接,数据包中包含了 IPID 信息。假设 IPID=X

 

注意:三次握手的第一个包是 SYN,目标主机收到 SYN 才会应答 SYN/ACK,因为僵尸主机没有向我们发送 SYN 请求。所以僵尸主机返回我们 RST 数据包关闭链接。

image.gif 编辑

第二步:黑客的收获是:如果目标主机端口开放,让僵尸主机的 IPID+1

(1)、攻击者修改 IP 包头的 SRC 字段为僵尸主机的 IP,伪装成僵尸主机给目标主机发 SYN 请求。
(2)、目标主机收到请求,如果端口是开放的就会返回给僵尸主机一个 SYN/ACK 的数据包。
(3)、僵尸主机收到目标主机发来的 SYN/ACK 确认包,因为僵尸主机没有给你发 SYN 请求。所以僵尸主机给目标主机返回了一个 RST 数据包。这个数据包表示关闭连接。

此僵尸主机对外发出一个数据包,所以僵尸主机的 IPID 值+1。此时 IPID 值为 X+1。

第三步:

(1)、攻击者再次向僵尸主机发送 SYN/ACK 确认包
(2)、僵尸主机同样向攻击者返回了一个 RST 数据包,此僵尸主机对外又发出一个数据包,所以僵尸主机的 IPID 值再+1。此时 IPID 值为 X+2。

第四步:计算 3 次通信过中的 IPID 值。

(1)、攻击者查看僵尸主机返回的数据包中 IPID 值为 X+2。
(2)、攻击者对比在第一步中的 IPID 值 X,发现增加了 2。
:肯定目标主机和僵尸主机通信了,能通信,就说明目标主机端口是开放的。

结论:

肯定目标主机和僵尸主机没有通信了。没能通信,就说明目标主机端口是关闭的。

image.gif

3.僵尸扫描-实战演练

image.gif

centos7 系统镜像和安装视频链接

提取码:3vt7

XP 系统下载

链接

提取码:p43p

演练初始化

  • 一台 XP 的虚拟机为僵尸主机,IP 地址为 192.168.1.54 并关闭 XP 系统的防火墙
  • xuegod63 为目标主机,IP 地址为 192.168.1.63 确认 sshd 服务能够正常访问。

XP 安装完后,要关闭防火墙:

image.gif 编辑

第一步:给僵尸主机发送的 SYN/ACK 数据包,将返回的数据包存入 rz1

rz1=sr1(IP(dst="192.168.1.54")/TCP(dport=445,flags="SA"))
命令详解:
rz1 表示定义了一个变量来接受我们返回的数据包
dst 表示我们的僵尸主机 IP
dport=445 表示我们向僵尸主机的 445 端口发送数据包,XP 主机的 445 端口一般都是开启状态
flags=“SA”表示发送 SYN/ACK

image.gif

查看一下 IPID

>>> rz1.display()
display()表示查看变量中的内容。我们只需要查看 IP 下面的 ID 字段即可

image.gif

第二步:攻击者修改 IP 包头的 SRC 字段为僵尸主机的 IP,伪装成僵尸主机给目标主机发 SYN 请求。

rt=sr1(IP(src="192.168.1.54",dst="192.168.1.63")/TCP(dport=22),timeout=1)
命令详解
rt 表示定义了一个变量来接受我们返回的数据包
src 表示伪造成僵尸主机的 IP 地址
dst 表示将数据包发送目标主机
dport 目标端口
timeout 超时时间
  • image.gif
  • image.gif 编辑

第三步:攻击者再次向僵尸主机发送 SYN/ACK 确认包,获得 IPID

rz2=sr1(IP(dst="192.168.1.54")/TCP(dport=445,flags="SA"))
  • image.gif
  • image.gif 编辑

实验结果查看

>>> rz1.display()

image.gif

image.gif 编辑

>>> rz2.display()

image.gif

image.gif 编辑

  • 539-537=2 表示端口开放

测试端口不开放的情况

将第二步的端口修改成 222 因为 222 肯定是没有开启的端口

>>>rz1=sr1(IP(dst="192.168.1.54")/TCP(dport=445,flags="SA"))
>>>rt=sr1(IP(src="192.168.1.54",dst="192.168.1.63")/TCP(dport=222),timeout=1)
>>>rz2=sr1(IP(dst="192.168.1.54")/TCP(dport=445,flags="SA"))
>>> rz1.display()

image.gif

image.gif 编辑

>>> rz2.display()

image.gif

image.gif 编辑

  • 我们可以看到 549 、550 结果为+1 即端口为关闭状态

4. 使用 nmap 进行僵尸扫描

4.1扫描 192.168.1.0 网段中某些机器可以作为僵尸主机

root@xuegod53:~# nmap 192.168.1.0/24 -p1-1024 --script=ipidseq.nse > a.txt
-p1-1024 #指定扫描的端口范围为 1 到 1024。只扫描常用端口就可以了
--script=ipidseq.nse 判断主机是否可以当做僵尸主机
  • image.gif
root@xuegod53:~# vim a.txt #在文档中查找关键字 Incremental
  • image.gif
  • image.gif 编辑

Incremental  增量式;增量备份;增量的;渐进的;增量法
表示主机 IPID 为递增,可以做为僵尸主机。
另外发现 192.168.1.32 也可以的。

192.168.1.32 是一台什么服务器,是哪个厂商?

root@xuegod53:~# netdiscover
  • image.gif
  • image.gif 编辑

补充:

我们发现不仅 XP 可以做僵尸主机,各种 android 手机的 IPID 也是递增,也可以做僵尸主机。


root@xuegod53:~# nmap 192.168.1.63 -sI 192.168.1.54 -p1-100
-sI 参数表示指定僵尸主机进行扫描目标主机。注意是大写的 I
  • image.gif
  • image.gif 编辑

image.gif 编辑


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
3天前
|
弹性计算 双11 开发者
阿里云ECS“99套餐”再升级!双11一站式满足全年算力需求
11月1日,阿里云弹性计算ECS双11活动全面开启,在延续火爆的云服务器“99套餐”外,CPU、GPU及容器等算力产品均迎来了全年最低价。同时,阿里云全新推出简捷版控制台ECS Lite及专属宝塔面板,大幅降低企业和开发者使用ECS云服务器门槛。
|
20天前
|
存储 弹性计算 人工智能
阿里云弹性计算_通用计算专场精华概览 | 2024云栖大会回顾
阿里云弹性计算产品线、存储产品线产品负责人Alex Chen(陈起鲲)及团队内多位专家,和中国电子技术标准化研究院云计算标准负责人陈行、北京望石智慧科技有限公司首席架构师王晓满两位嘉宾,一同带来了题为《通用计算新品发布与行业实践》的专场Session。本次专场内容包括阿里云弹性计算全新发布的产品家族、阿里云第 9 代 ECS 企业级实例、CIPU 2.0技术解读、E-HPC+超算融合、倚天云原生算力解析等内容,并发布了国内首个云超算国家标准。
阿里云弹性计算_通用计算专场精华概览 | 2024云栖大会回顾
|
2天前
|
人工智能 弹性计算 文字识别
基于阿里云文档智能和RAG快速构建企业"第二大脑"
在数字化转型的背景下,企业面临海量文档管理的挑战。传统的文档管理方式效率低下,难以满足业务需求。阿里云推出的文档智能(Document Mind)与检索增强生成(RAG)技术,通过自动化解析和智能检索,极大地提升了文档管理的效率和信息利用的价值。本文介绍了如何利用阿里云的解决方案,快速构建企业专属的“第二大脑”,助力企业在竞争中占据优势。
|
5天前
|
存储 安全 Oracle
【灵码助力安全3】——利用通义灵码辅助智能合约漏洞检测的尝试
本文探讨了智能合约的安全性问题,特别是重入攻击、预言机操纵、整数溢出和时间戳依赖性等常见漏洞。文章通过实例详细分析了重入攻击的原理和防范措施,展示了如何利用通义灵码辅助检测和修复这些漏洞。此外,文章还介绍了最新的研究成果,如GPTScan工具,该工具通过结合大模型和静态分析技术,提高了智能合约漏洞检测的准确性和效率。最后,文章总结了灵码在智能合约安全领域的应用前景,指出尽管存在一些局限性,但其在检测和预防逻辑漏洞方面仍展现出巨大潜力。
|
7天前
|
负载均衡 算法 网络安全
阿里云WoSign SSL证书申请指南_沃通SSL技术文档
阿里云平台WoSign品牌SSL证书是由阿里云合作伙伴沃通CA提供,上线阿里云平台以来,成为阿里云平台热销的国产品牌证书产品,用户在阿里云平台https://www.aliyun.com/product/cas 可直接下单购买WoSign SSL证书,快捷部署到阿里云产品中。
1847 6
阿里云WoSign SSL证书申请指南_沃通SSL技术文档
|
10天前
|
Web App开发 算法 安全
什么是阿里云WoSign SSL证书?_沃通SSL技术文档
WoSign品牌SSL证书由阿里云平台SSL证书合作伙伴沃通CA提供,上线阿里云平台以来,成为阿里云平台热销的国产品牌证书产品。
1789 2
|
19天前
|
编解码 Java 程序员
写代码还有专业的编程显示器?
写代码已经十个年头了, 一直都是习惯直接用一台Mac电脑写代码 偶尔接一个显示器, 但是可能因为公司配的显示器不怎么样, 还要接转接头 搞得桌面杂乱无章,分辨率也低,感觉屏幕还是Mac自带的看着舒服
|
26天前
|
存储 人工智能 缓存
AI助理直击要害,从繁复中提炼精华——使用CDN加速访问OSS存储的图片
本案例介绍如何利用AI助理快速实现OSS存储的图片接入CDN,以加速图片访问。通过AI助理提炼关键操作步骤,避免在复杂文档中寻找解决方案。主要步骤包括开通CDN、添加加速域名、配置CNAME等。实测显示,接入CDN后图片加载时间显著缩短,验证了加速效果。此方法大幅提高了操作效率,降低了学习成本。
5385 15
|
13天前
|
人工智能 关系型数据库 Serverless
1024,致开发者们——希望和你一起用技术人独有的方式,庆祝你的主场
阿里云开发者社区推出“1024·云上见”程序员节专题活动,包括云上实操、开发者测评和征文三个分会场,提供14个实操活动、3个解决方案、3 个产品方案的测评及征文比赛,旨在帮助开发者提升技能、分享经验,共筑技术梦想。
1130 152
|
21天前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1585 14

热门文章

最新文章