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

linux常用网络工具汇总三

linux常用网络工具汇总

    • 6. 抓包工具
      • 6.1 wireshark
        • 安装
        • 界面介绍
        • 使用
        • 过滤器
        • TCP协议示例
        • 关于wireshark的缺点
      • 6.2 tcpdump
        • 命令格式
        • 关键字
        • 使用
        • 关于tcpdump的缺点
      • 6.3 fiddler
      • 6.4 burpsuite

6. 抓包工具

6.1 wireshark

Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。

这款软件在windows和macOS中使用较多,但也支持linux,毕竟提供了源码。

安装

下载地址 官网,一定要看好是官网才下载哦

在这里插入图片描述

注意:win10以前的系统,安装4.0的版本,win10及以后版本安装4.2版本,具体看下说明

安装期间会提示安装Npcap,勾选安装即可,如果已安装了,可以忽略

Npcap是一组网络通信工具集,提供了捕获网络数据包的功能。通过这些工具,用户可以截获、分析和过滤网络上传输的数据包,对于网络安全、系统开发和网络故障排查等领域有着重要的应用。

安装完成会提示选择网卡
在这里插入图片描述

界面介绍

wireshark和大多数软件相似,WireShark 界面包含一些常用的菜单和工具栏等,详细包括:

  • 菜单栏
  • 工具栏
  • 过滤器
  • 数据包列表面板
  • 数据包详细信息面板
  • 数据包字节信息面板

在这里插入图片描述

  • 抓包按钮

在这里插入图片描述

下面我们来详细了解一下wireshark的使用方法

使用

wireshark有几种使用场景,包括:

  • 直接抓取流量包分析
  • 导入流量包分析(可以通过tcpdump等工具在linux导出流量包数据)

这里如果抓取的流量包后缀名是.cap.pcap,在导入的时候可以看到一个小鲨鱼鳍标识的文件,比较方便。
在这里插入图片描述

========================================================================================================

下面我们从一个ping示例开始,简单介绍如何使用wireshark

  1. 使用抓取的机器ping一台机器,尽量选择能ping的通的,这里我们使用192.168.202.129 ping 192.168.202.128
  2. 使用wireshark开始抓取流量包
  3. 在过滤器添加筛选条件icmp(后面会详细介绍过滤器)
  4. 一般就可以看到成对的流量包(request和reply)
    在这里插入图片描述
  • 打开一个request请求包,查看详细信息
    在这里插入图片描述

我们知道ICMP协议使用IP协议的服务进行传输,‌属于网络层的协议。‌在IPv4中,‌ICMP报文是在IP数据报内被封装传输的。‌具体来说,‌IPv4数据报的协议字段值为1表示该报文携带了ICMP消息。‌这表明ICMP与IPv4之间的紧密联系,‌其中ICMP利用IPv4的传输机制来发送和接收控制消息

在本例的IPv4Internet Protocol Version 4)协议中,我们看到

Protocol:ICMP(1)
Source Address:192.168.202.129
Destination Address:192.168.202.128

ICMPInternet Control Message Protocol),我们可以看到一些类型信息,比如Type:8(Echo(ping)request),校验信息等等

  • reply回复包中,我们可以看到
    在这里插入图片描述
    IPv4中,我们可以看到ProtocolSource AddressDestination Address信息和预期一致
    ICMP中,我们看到Type、校验信息和时间戳等等
过滤器
  1. 抓包过滤器在抓包前使用,它的过滤有一个基本的语法格式:BPF语法格式

BPF(全称 Berkeley Packet Filter),中文叫伯克利封包过滤器,它有四个核心元素:类型、方向、协议 和 逻辑运算符

      类型Type:主机(host)、网段(net)、端口(port)方向Dir:源地址(src)、目标地址(dst)协议Proto:各种网络协议,比如:tcp、udp、http逻辑运算符:与( && )、或( || )、非( !)

四个元素可以自由组合,比如:

src host 192.168.31.1

抓取源IP为 192.168.31.1 的数据包

tcp || udp

抓取 TCP 或者 UDP 协议的数据包

  1. 显示过滤器在抓包后或者抓包的过程中使用
    显示过滤器的语法包含5个核心元素:IP、端口、协议、比较运算符和逻辑运算符
      IP地址:ip.addr、ip.src、ip.dst端口:tcp.port、tcp.srcport、tcp.dstport协议:tcp、udp、http比较运算符:> < == >= <= !=逻辑运算符:and、or、not、xor(有且仅有一个条件被满足)

五个核心元素可以自由组合,比如:

      ip.addr == 192.168.32.121

显示IP地址为 192.168.32.121 的数据包

      tcp.port == 80

显示端口为 80 的数据包

ip.dst==192.168.202.129 and icmp

目的地址是192.168.202.129并且使用icmp协议

TCP协议示例

本节将使用wireshark演示TCP协议的三次握手和四次挥手的过程

  1. 在虚拟机安装nginx,开启web服务
[root@node-252 ~]# systemctl start nginx
[root@node-252 ~]# ss -nlput|grep -w 80
tcp    LISTEN     0      128       *:80                    *:*                   users:(("nginx",pid=2173,fd=6),("nginx",pid=2172,fd=6))
  1. 打开wireshark并设置过滤器
tcp and tcp.port == 80
  1. 网页访问服务器80端口
    在这里插入图片描述
  2. 查看wireshark抓取信息
    在这里插入图片描述

下面使用wireshark辅助我们详细分析TCP建立连接和断开连接的过程

我们知道TCP建立连接的过程,三次握手包括:
在这里插入图片描述
服务器和客户端建立连接之前,服务器均处于LISTEN状态
一. 客户端向服务器发送连接请求SYN [第一次握手]

8	2.484246	192.168.202.1	192.168.202.128	TCP	66	5161380 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=256 SACK_PERM

在这里插入图片描述

客户端处于状态是SYN_SENT,发送SYN包,seq=0
服务器处于LISTEN状态

二. 服务器向客户端发送连接响应SYN, ACK [第二次握手]

9	2.484397	192.168.202.128	192.168.202.1	TCP	66	8051613 [SYN, ACK] Seq=0 Ack=1 Win=29200 Len=0 MSS=1460 SACK_PERM WS=128

在这里插入图片描述

服务器处于 SYN_RCVD状态,服务端收到客户端的SYN包并发送服务端SYN ACK包,之后等待客户端对连接请求的确认(ACK包),此时服务器向客户端发送的包seq=0ack=seq(客户端的seq)+1=1

三. 客户端对连接请求的确认ACK [第三次握手]

10	2.484504	192.168.202.1	192.168.202.128	TCP	54	5161380 [ACK] Seq=1 Ack=1 Win=65536 Len=0

在这里插入图片描述

服务器接收到客户端回复的包后,服务器和客户端处于连接状态
客户端向服务器回复的ACK包,ACK=seq(服务器seq)+1=1这里一直用0,1如果觉得迷糊,可以查看seqACK的原始数据(raw)seq=ack(服务器的seq)+1=1

此时服务器和客户端处于连接状态ESTABLISH

然后我们看到一些HTTP协议的相关内容

11	2.485264	192.168.202.1	192.168.202.128	HTTP	529	GET / HTTP/1.1 
12	2.485469	192.168.202.128	192.168.202.1	TCP	60	8051613 [ACK] Seq=1 Ack=476 Win=30336 Len=0
13	2.494322	192.168.202.128	192.168.202.1	HTTP	235	HTTP/1.1 304 Not Modified 
14	2.696190	192.168.202.128	192.168.202.1	TCP	235	[TCP Retransmission] 8051613 [PSH, ACK] Seq=1 Ack=476 Win=30336 Len=181

这里由于我们之前测试访问过这个网页,浏览器在本地生成了缓存。所以显示未修改,我们把nginx首页更新下内容

[root@node-252 ~]# echo "hello,this is tcp status show" > /usr/share/nginx/html/index.html

再次抓取

3077	2117.746787	192.168.202.1	192.168.202.128	HTTP	529	GET / HTTP/1.1 
3078	2117.749914	192.168.202.128	192.168.202.1	TCP	60	8056888 [ACK] Seq=1 Ack=476 Win=30336 Len=0
3079	2117.750087	192.168.202.128	192.168.202.1	TCP	290	8056888 [PSH, ACK] Seq=1 Ack=476 Win=30336 Len=236 [TCP segment of a reassembled PDU]
3080	2117.750222	192.168.202.128	192.168.202.1	HTTP	84	HTTP/1.1 200 OK  (text/html)

我们看到服务器向客户端通过TCP的数据包[PSH, ACK]发送了一些内容,打开第四条记录,可以看到如下内容
在这里插入图片描述
看到最后一行确实是我们修改的内容

TCP断开连接的过程,四次挥手包括:
在这里插入图片描述
一. 由于客户端长时间未访问服务器,所以服务器主动断开连接 [第一次挥手]

3085	2122.759948	192.168.202.128	192.168.202.1	TCP	60	8056888 [FIN, ACK] Seq=267 Ack=476 Win=30336 Len=0

在这里插入图片描述

服务器向客户端发送FIN报文,此时Seq=267 Ack=476,并处于FIN_WAIT_1状态

二. 客户端收到连接释放报文段FIN报文后,确认可以断开,并向服务器发送ACK应答报文 [第二次挥手]

3086	2122.760042	192.168.202.1	192.168.202.128	TCP	54	5688880 [ACK] Seq=476 Ack=268 Win=65280 Len=0

在这里插入图片描述

客户端向服务器发送的回复报文,包括Seq=Ack(服务器)=476 Ack=Seq+1=268
服务器接收到客户端的回复报文后,状态切换为FIN_WAIT_2

三. 确认无数据传输或数据传输完毕后,客户端向服务器发送一个FIN,ACK结束响应报文 [第三次挥手]

3087	2122.760119	192.168.202.1	192.168.202.128	TCP	54	5688880 [FIN, ACK] Seq=476 Ack=268 Win=65280 Len=0

在这里插入图片描述

在发送完成ACK报文后,客户端还可以继续完成业务数据的发送,待剩余数据发送完成后,或者CLOSE-WAIT(关闭等待)截止后,客户端会向服务器发送一个FIN,ACK结束响应报文,表示被动断开方的数据都发送完了,然后,客户端进入LAST_ACK状态。
Seq=476 Ack=268,这里的序列号和确认号和第二次挥手相同

四. 服务器发送最后的确认报文 [第四次挥手]

3088	2122.760245	192.168.202.128	192.168.202.1	TCP	60	8056888 [ACK] Seq=268 Ack=477 Win=30336 Len=0

在这里插入图片描述

主动断开方收在到FIN,ACK断开响应报文后,还需要进行最后的确认,向被动断开方发送一个ACK确认报文,然后,自己就进入TIME_WAIT状态,等待超时后最终关闭连接。处于TIME_WAIT状态的主动断开方,在等待完成2*MSL的时间后,如果期间没有收到其他报文,则证明对方已正常关闭,主动断开方的连接最终关闭。
Seq=268(客户端Ack) Ack=477(客户端Seq+1)

关于wireshark的缺点

Wireshark的缺点主要包括‌:‌

  • 学习曲线较陡‌:‌要灵活使用Wireshark,‌需要具备一定的网络基础知识,‌对于初学者来说,‌这可能会构成一定的难度。‌
  • HTTPS数据包分析限制‌:‌由于Wireshark是在链路层获取数据包信息,‌因此无法分析加密的HTTPS数据包内容。‌虽然可以对HTTPS数据包进行解密,‌但这需要一定的操作复杂度,‌并且可能耗费大量时间。‌
    ‌- 企业级环境中效率低下‌:‌在现代企业级环境中,‌使用Wireshark通过传统方式进行快速采集和分析数据包,‌尤其是涉及业务、‌应用及用户性能问题的智能告警和关联分析时,‌效率低下,‌且某些功能无法实现。‌

6.2 tcpdump

tcpdump是一个网络数据采集分析工具,可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

一般使用linux作为服务器操作系统,并不会配置图形界面,所以为了直观分析网络数据采集结果,大都是通过wireshark+tcpdump组合使用,即通过tcpdump采集数据,通过wireshark进行分析。

  • 安装
apt install -y tcpdump	#debian系列
yum install -y tcpdump	#redhat系列
命令格式
SYNOPSIStcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ][ -c count ][ -C file_size ] [ -G rotate_seconds ] [ -F file ][ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ][ --number ] [ -Q|-P in|out|inout ][ -r file ] [ -V file ] [ -s snaplen ] [ -T type ] [ -w file ][ -W filecount ][ -E spi@ipaddr algo:secret,...  ][ -y datalinktype ] [ -z postrotate-command ] [ -Z user ][ --time-stamp-precision=tstamp_precision ][ --immediate-mode ] [ --version ][ expression ]tcpdump [协议类型] [源或目标] [主机名称或IP] [or/and/not/!条件组合] [源或目标] [主机名或IP] [or/and/not/!条件组合] [端口] [端口号] …… [or/and/not/!条件组合] [条件]
  • 常用参数
-a      #将网络地址和广播地址转变成名字
-A      #以ASCII格式打印出所有分组,并将链路层的头最小化
-b      #数据链路层上选择协议,包括ip/arp/rarp/ipx都在这一层
-c      #指定收取数据包的次数,即在收到指定数量的数据包后退出tcpdump
-d      #将匹配信息包的代码以人们能够理解的汇编格式输出
-dd     #将匹配信息包的代码以c语言程序段的格式输出
-ddd    #将匹配信息包的代码以十进制的形式输出
-D      #打印系统中所有可以监控的网络接口
-e      #在输出行打印出数据链路层的头部信息
-f      #将外部的Internet地址以数字的形式打印出来,即不显示主机名
-F      #从指定的文件中读取表达式,忽略其他的表达式
-i      #指定监听网络接口																	#常用
-l      #使标准输出变为缓冲形式,可以数据导出到文件
-L      #列出网络接口已知的数据链路
-n      #不把网络地址转换为名字
-N      #不输出主机名中的域名部分,例如www.baidu.com只输出www
-nn     #不进行端口名称的转换
-P      #不将网络接口设置为混杂模式
-q      #快速输出,即只输出较少的协议信息
-r      #从指定的文件中读取数据,一般是-w保存的文件
-w      #将捕获到的信息保存到文件中,且不分析和打印在屏幕											#常用
-s      #从每个组中读取在开始的snaplen个字节,而不是默认的68个字节
-S      #将tcp的序列号以绝对值形式输出,而不是相对值
-T      #将监听到的包直接解析为指定的类型的报文,常见的类型有rpc(远程过程调用)和snmp(简单网络管理协议)
-t      #在输出的每一行不打印时间戳
-tt     #在每一行中输出非格式化的时间戳
-ttt    #输出本行和前面以后之间的时间差
-tttt   #在每一行中输出data处理的默认格式的时间戳
-u      #输出未解码的NFS句柄
-v      #输出稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息
-vv     #输出相信的保报文信息
关键字
  • 数据类型的关键字:host、port、net

host 192.168.130.1表示一台主机
net 192.168.130.0表示一个网络网段
port 80 指明端口号为80
在这里如果没有指明数据类型,那么默认就是host

  • 数据传输方向的关键字:src、dst、dst or src、dst and src

这些关键字指明了传输的方向,比如src 192.168.130.1说明数据包源地址是192.168.130.1。dst net 192.168.130.0指明目的网络地址是192.168.130.0,默认是监控主机对主机的src和dst,即默认监听本机和目标主机的所有数据。

  • 协议关键字:ip、arp、rarp、udp

  • 其他关键字:
    运算类型:or、and、not、!
    辅助功能型:gateway、less、broadcast、greater

使用

注:使用tcpdump需要root权限

  1. 抓取icmp协议数据包
tcpdump -i any icmp -w icmp.pcap

-i any为任意网络接口,即任意网卡,条件为筛选icmp-w icmp.pcap保存为icmp.pcap文件

导入到wireshark呈现的数据内容
在这里插入图片描述
2. 添加条件抓取icmp协议数据包

[root@node-252 ~]# tcpdump -i ens33 icmp and host 192.168.202.128 -v -w icmp.pcap
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
Got 24

指定网卡为ens33,本次指定主机为192.168.202.128-v显示详细信息,会提示Got 24即抓取的包数量,当有多个条件时,需要使用关键字and or

  1. 继续添加条件
tcpdump -s0 -vnn -i ens33 icmp and src 192.168.202.128 -w icmp.pcap

在这里插入图片描述

-s0防止包截断,-nn不进行端口名称转换,src源地址为192.168.202.128,类似还可以指定dst目的地址,dst net目的网络,src net源网络

常用的示例

### 过滤主机 ###
tcpdump -i eth0 host 192.168.1.70       #抓取所有经过 eth0,目的或源地址是 192.168.1.70 的网络数据
tcpdump -i eth1 src host 192.168.1.70   #抓取所有经过 eth0,源地址是 192.168.1.70 的网络数据
tcpdump -i eth1 dst host 192.168.1.70   #抓取所有经过 eth0,目的地址是 192.168.1.70 的网络数据### 过滤端口 ###
tcpdump -i eth0 port 22         #抓取所有经过 eth0,目的或源端口是 22 的网络数据
tcpdump -i eth1 src port 22     #抓取所有经过 eth0,源端口是 22 的网络数据
tcpdump -i eth1 dst port 22     #抓取所有经过 eth0,目的端口是 22 的网络数据### 过滤协议 ###
tcpdump -i eth0 tcp
tcpdump -i eth0 udp
tcpdump -i eth0 ip
tcpdump -i eth0 icmp
tcpdump -i eth0 arp

当我们发现流量异常的时候,我们可能不会指定太多条件,因为当时可能无法判断出协议、端口和地址等信息来源,所以往往使用最宽泛的条件,然后通过wireshark进行过滤筛选

tcpdump -i ens33 -w any.pcap

在这里插入图片描述

关于tcpdump的缺点

以下是一些 tcpdump 的缺点:

  • 性能影响:tcpdump 在运行时会捕获所有网络流量,这可能会对系统性能产生一定影响。
  • 复杂的过滤器:tcpdump 的过滤器相对复杂,需要一定时间学习和掌握。
  • 无用输出:默认情况下,tcpdump 输出的包含大量信息,很难直接获取有用的数据。
  • 不易于集成:tcpdump 主要是命令行工具,不易于与其他系统或应用程序集成。
  • 缺乏用户界面:tcpdump 没有用户友好的界面,难以用于非专业人士。
  • 安全问题:如果不正确配置,tcpdump 可能会捕获敏感数据,带来安全风险。

针对这些缺点,解决方法可能包括:

  • 使用 tcpdump 的 -i 参数指定网络接口,限制捕获范围。
  • 使用 tcpdump 的表达式优化过滤器,精确匹配所需的数据包。
  • 使用 tcpdump 的 -w 参数将捕获的数据包保存到文件中,然后使用其他工具(如 Wireshark)分析。
  • 使用 tcpdump 的 -C 参数设置数据包的存储上限,防止磁盘空间耗尽。
  • 使用 tcpdump 的 -q 参数减少输出信息量。
  • 使用 tcpdump 的 -Z 参数将进程放到后台运行。
  • 使用 tcpdump 的 -z 参数设置捕获数据包的时间限制。

结合使用 tcpdump 和其他网络工具,如 wireshark 或 tshark 进行更复杂的分析。

6.3 fiddler

fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件)。 Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式。

  • 官网:https://www.telerik.com/fiddler

  • 原理图
    在这里插入图片描述
    代理工具嘛,在客户端和服务器之间加了一层

下载安装

  • 选择 FIDDLER TOOLS > Fiddler Classic
  • 点击 Try For Free
  • 进入到以下页面,它会问你用 Fiddler 做什么?然后再填写你的邮箱,选上 Country,勾选上I agree以及 I accept,再点击 Download For Windows
    在这里插入图片描述

然后就会下载 FiddlerSetup.5.0.20244.10953-latest.exe,当前我下载的版本

运行.exe,安装完成后,会有如下提示
在这里插入图片描述

界面介绍及使用可以参考 https://blog.csdn.net/xhmico/article/details/133852152,介绍的非常详细

6.4 burpsuite

Burp Suite 是用于攻击web应用程序的集成平台,包含了许多工具。Burp Suite为这些工具设计了许多接口,以加快攻击应用程序的过程。所有工具都共享一个请求,并能处理对应的HTTP 消息、持久性、认证、代理、日志、警报。

参考 https://blog.csdn.net/m0_68483928/article/details/140502752 介绍的比较详细

相关文章:

linux常用网络工具汇总三

linux常用网络工具汇总 6. 抓包工具6.1 wireshark安装界面介绍使用过滤器TCP协议示例关于wireshark的缺点 6.2 tcpdump命令格式关键字使用关于tcpdump的缺点 6.3 fiddler6.4 burpsuite 6. 抓包工具 6.1 wireshark Wireshark&#xff08;前称Ethereal&#xff09;是一个网络封…...

Linux中nano编辑器详解

nano 是一个简单的文本编辑器&#xff0c;通常预装在大多数 Linux 发行版中。它非常适合初学者使用&#xff0c;因为它有一个用户友好的界面和易于理解的命令集。下面是对 nano 编辑器的详细说明。 启动 nano 要启动 nano 并打开一个文件进行编辑&#xff0c;你可以在终端中输…...

26-vector arraylist和linkedlist的区别

‌Vector, ArrayList, 和 LinkedList 是Java中常见的三种列表实现&#xff0c;它们各自具有不同的特点和适用场景。‌ ‌同步性与线程安全‌&#xff1a; ‌Vector‌ 是同步的&#xff0c;即线程安全的&#xff0c;它的所有方法都是同步的&#xff0c;可以由两个线程安全地访问…...

20-redis穿透击穿雪崩

Redis中的缓存穿透、‌缓存击穿和缓存雪崩是三种常见的缓存问题&#xff1a;‌ 缓存穿透&#xff1a;‌指缓存和数据库中都没有的数据&#xff0c;‌但用户还是源源不断地发起请求&#xff0c;‌导致每次请求都会直接访问数据库&#xff0c;‌从而可能压垮数据库。‌缓存击穿&…...

Docker使用教程

Docker 名词解释 镜像&#xff08;image&#xff09;&#xff1a;Docker镜像就是一个模板&#xff0c;可以通过这个模板来创建容器服务。容器&#xff08;container&#xff09;&#xff1a;Docker利用容器技术&#xff0c;独立运行一个或者一组应用&#xff0c;通过镜像创建…...

poi-tl循环放图片+文字说明

这几天有个任务&#xff0c;服务端导出word要求从数据库取到多张图片&#xff0c;然后输出到word中&#xff0c;并且说明一共几张&#xff0c;当前是第几张。 网上翻了很久也没有找到示例&#xff0c;不过最终难题还是得到了攻克。 因为之前的代码是有一个导出的map&#xff0c…...

数据结构之树的存储结构

一、顺序存储结构 顺序存储结构通常用于表示完全二叉树。在这种存储方式中&#xff0c;树中的节点被存储在一个连续的数组中。对于完全二叉树&#xff0c;如果父节点的索引是i&#xff08;假设从0开始计数&#xff09;&#xff0c;那么它的左子节点的索引是2i1&#xff0c;右子…...

Zotero 常用插件介绍

1. Zotero 插件安装方法 下载以 .xpi 结尾的插件&#xff1b;打开 Zotero → 工具 → 插件 → 右上小齿轮图标 → Install Add-on From File ... → 选择下载好的 .xpi 插件安装 → 重启 Zotero 2. 常用插件介绍 2.1. Scholaread - 靠岸学术 Zotero 英文文献相关插件&#xf…...

WebSocket协议解析

文章目录 一、HTTP协议与HTTPS协议1.HTTP协议的用处2.HTTP协议的特点3.HTTP协议的工作流程4.HTTPS协议的用处5.HTTPS协议的特点6.HTTPS协议的工作流程 二、WebSocket协议出现的原因1. 传统的HTTP请求-响应模型2. 轮询&#xff08;Polling&#xff09;3. 长轮询&#xff08;Long…...

ES6 (一)——ES6 简介及环境搭建

目录 简介 环境搭建 可以在 Node.js 环境中运行 ES6 webpack 入口 (entry) loader 插件 (plugins) 利用 webpack 搭建应用 gulp 如何使用&#xff1f; 简介 ES6&#xff0c; 全称 ECMAScript 6.0 &#xff0c;是 JavaScript 的下一个版本标准&#xff0c;2015.06 发版…...

HarmonyOS开发案例:列表场景实例-TaskPool

介绍 本实例通过列表场景实例讲解&#xff0c;介绍在TaskPool线程中操作关系型数据库的方法&#xff0c;涵盖单条插入、批量插入、删除和查询操作。 效果图预览 使用说明 进入页面有insert(单条数据插入)、batch insert(批量数据插入)、query(查询操作)三个按钮&#xff0c;…...

谷歌浏览器如何隐藏书签

谷歌浏览器的书签栏是一个极为方便的功能&#xff0c;它能够帮助用户快速访问自己频繁使用的网页。然而&#xff0c;有些时候为了保护个人隐私或使浏览界面更为简洁&#xff0c;我们可能需要隐藏书签栏。接下来就为大家分享如何隐藏谷歌浏览器的书签栏&#xff0c;一起来看看吧…...

SQL - 视图

我们可以把查询或子查询存到视图里&#xff0c;视图的作用就像一张虚拟表&#xff0c;再次查询时&#xff0c;就不需要再写一次复杂的查询。创建视图 create view 视图名 as (查询); create or replace view clients_balance as (查询); create or replace view clients_balanc…...

centos7环境升级默认的gcc 4.8.5到gcc 8.2.0, 并且升级glibc到glibc 2.28

这里写目录标题 makegccglibc make #下载 wget http://ftp.gnu.org/gnu/make/make-4.2.tar.gz tar -xf make-4.2.tar.gz cd make-4.2 ./configure make -j4 make install mv /usr/bin/make /usr/bin/make_bak cp ./make /usr/bin/make -v GNU Make 4.2 Built for x86_64-pc-li…...

FastHTML:使用 Python 彻底改变 Web 开发

什么是 FastHTML&#xff1f;&#x1f310; FastHTML 是一个现代 Python Web 应用程序框架&#xff0c;其真正目的是让 Python 开发人员轻松进行 Web 开发。它大大减少了对 JavaScript 和 CSS 构建交互式和可扩展 Web 应用程序的依赖。FastHTML 通过使用 Python 对象来表示 HTM…...

快速排序的深入优化探讨

快排性能的关键点分析 决定快排性能的关键点是每次单趟排序后&#xff0c;key对数组的分割&#xff0c;如果每次选key基本⼆分居中&#xff0c;那么快排的递归树就是颗均匀的满⼆叉树&#xff0c;性能最佳。但是实践中虽然不可能每次都是⼆分居中&#xff0c;但是性能也还是可…...

c语言杂谈系列:模拟虚函数

从整体来看&#xff0c;笔者的做法与之前的模拟多态十分相似&#xff0c;毕竟c多态的实现与虚函数密切相关 废话少说&#xff0c;see my code&#xff1a; kernel.c#include "kernel.h" #include <stdio.h>void shape_draw(struct shape_t* obj) {/* Call dr…...

短视频推广App不再难!Xinstall来帮忙

在短视频风靡的今天&#xff0c;如何利用这一热门媒介有效推广App&#xff0c;成为了许多推广者关注的焦点。而Xinstall&#xff0c;作为国内专业的App全渠道统计服务商&#xff0c;正是你解决这一难题的得力助手。 首先&#xff0c;Xinstall在数据维度上的优势无可比拟。它能…...

打靶记录13——doubletrouble

靶机&#xff1a; https://www.vulnhub.com/entry/doubletrouble-1,743/ 难度&#xff1a; 中 目标&#xff1a; 取得两台靶机 root 权限 涉及攻击方法&#xff1a; 主机发现端口扫描Web信息收集开源CMS漏洞利用隐写术密码爆破GTFObins提权SQL盲注脏牛提权 学习记录&am…...

awk文本处理工具

awk 是一个强大的文本处理工具&#xff0c;在Shell编程中常用于处理和分析文本数据。它可以按列处理数据&#xff0c;进行模式匹配&#xff0c;生成报告&#xff0c;执行计算等。以下是一些 awk 的主要功能和使用场景&#xff1a; 期待您的关注 美好的观念较美人尤为可爱 目录 …...

计算机毕业设计选题推荐-学院网站系统-Java/Python项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…...

Spring模块详解Ⅰ

目录 SpringSpring框架的主要功能模块1. Core Container&#xff08;核心容器&#xff09;2. Data Access/Integration&#xff08;数据访问与集成&#xff09;3. Web4. AOP (Aspect-Oriented Programming&#xff0c;面向切面编程)5. Instrumentation&#xff08;工具集&#…...

C语言程序设计-练习篇

山海自有归期&#xff0c;风雨自有相逢。 一 下面代码的结果是什么&#xff1f; int main() { int i 0; for (i 0; i < 10; i) { if (i 5) //此处为赋值&#xff0c;i 5表达式结果为5 printf("%d ", i); //表达式为真&a…...

【Oracle篇】统计信息和动态采样的深度剖析(第一篇,总共六篇)

&#x1f4ab;《博主介绍》&#xff1a;✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ &#x1f4ab;《擅长领域》&#xff1a;✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux&#xff0c;也在扩展大数据方向的知识面✌️…...

无源互调自动化测试软件应用案例分享:S参数和互调的高效测试

随着产品种类的丰富和市场需求的变化&#xff0c;合肥某电子技术公司意识到&#xff0c;传统的手工测试已无法满足公司持续发展的需要。于是&#xff0c;一场自动化测试转型悄然展开。 一、背景介绍 合肥某电子技术公司成立于2009年&#xff0c;专注于功分器、耦合器、负载器、…...

【6大设计原则】精通设计模式之里氏代换原则:从理论到实践,掌握代码演化的黄金法则

一、引言 1.1 设计模式的必要性 在软件开发的复杂性面前&#xff0c;设计模式提供了一套成熟的解决方案&#xff0c;它们是经过多年实践总结出来的&#xff0c;能够帮助我们应对各种编程难题。设计模式不仅仅是一种编程技巧&#xff0c;更是一种编程哲学&#xff0c;它能够提…...

国内服务器安装Docker提示Failed to connect to download.docker.com port 443的解决方案

解决方案 换国内镜像源。我用的是清华的。https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ 自己找自己对应的版本。 例如你的Ubuntu系统。就用下列命令 sudo curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/do…...

前端开发攻略---彻底弄懂跨域解决方案

目录 1、浏览器的同源策略 1.1 源 1.2 同源与非同源 1.3 同源请求与非同源请求 2、跨域受到的限制 3、注意点 4、CORS解决Ajax跨域问题 4.1 CORS概述 4.2 CORS解决简单请求跨域 4.3 简单请求与复杂请求 4.4 CORS解决复杂请求跨域 4.5 借助CORS库快速完成配置 5、JS…...

【HeadFirst 设计模式】装饰者模式的C++实现

一、案例背景 Starbuzz是以扩张速度最快而闻名的咖啡连锁店。如果你在街角看到它的店&#xff0c;在对面街上肯定还会看到另一家。因为扩张速度实在太快了&#xff0c;他们准备更新订单系统&#xff0c;以合乎他们的饮料供应要求。他们原先的类设计是这样的…… 购买咖啡时&am…...

大白话解释TCP的三次握手和四次挥手

你好&#xff0c;我是沐爸&#xff0c;欢迎点赞、收藏和关注。个人知乎 TCP的三次握手是浏览器与服务器建立连接的过程&#xff0c;而四次挥手&#xff0c;是两者断开连接的过程。今天把客户端和服务端当做两个人&#xff0c;通过打电话的方式解释连接建立和断开的过程。 TCP…...