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

案例篇:如何用tcpdump和Wireshark识别潜在威胁

无论是日常浏览网页、观看视频,还是企业开展线上业务、进行数据传输,都离不开网络的支持。然而,网络问题也时有发生,比如网络卡顿,相信大家都遇到过,那种等待页面加载的焦急心情,真的让人抓狂。网络卡顿不仅影响我们的使用体验,对于企业来说,还可能导致业务中断、客户流失,造成巨大的经济损失。

那么,当网络出现问题时,我们该如何快速找到症结所在呢?这就轮到 tcpdump 和 Wireshark 这两款强大的网络流量分析工具登场啦!它们就像是网络世界的 “福尔摩斯”,能够帮助我们深入分析网络流量,找出问题的根源。tcpdump 是一款基于命令行的网络抓包工具,它功能强大,能够在 Linux 系统中轻松捕获网络数据包,就像一个敏锐的猎手,精准地捕捉网络中的每一个数据传输瞬间。

而 Wireshark 则是一款集抓包与图形化分析于一体的工具,它提供了直观的界面和丰富的分析功能,让我们可以像拆解机器一样,细致地剖析数据包的结构和内容 。接下来,就让我们一起走进这两款工具的世界,学习如何使用它们来解决网络问题吧!

一、tcpdump命令行抓包大师

1.1 tcpdump 初相识

tcpdump 是一款基于命令行的网络抓包工具,在 Linux 系统中可谓是大名鼎鼎。它就像是一位隐藏在幕后的高手,默默地捕获网络中的数据包,为我们提供网络通信的详细信息 。无论是排查网络故障,还是进行网络安全分析,tcpdump 都能发挥出巨大的作用。在服务器端,当出现网络连接异常、数据传输缓慢等问题时,tcpdump 能够帮助我们快速定位问题所在。比如,当服务器突然无法访问某个特定的网站时,我们可以使用 tcpdump 抓取网络数据包,查看是否存在丢包、重传等异常情况,从而判断是网络连接问题还是服务器本身的配置问题。

1.2安装 tcpdump

如果你使用的是 Debian 或 Ubuntu 系统,安装 tcpdump 非常简单,只需在终端中输入以下命令:

sudo apt-get install tcpdump

如果是 CentOS 或 RHEL 系统,则可以使用 yum 命令来安装:

sudo yum install tcpdump

安装完成后,我们就可以开始使用 tcpdump 来探索网络世界啦!

1.3tcpdump基本用法

图片

①简单抓包

直接运行 tcpdump 命令,它会捕获指定网络接口的所有流量。例如,在终端中输入 “tcpdump”,然后按下回车键,tcpdump 就会开始工作。它会实时输出捕获到的数据包信息,这些信息包括数据包的时间戳、源 IP 地址、目标 IP 地址、协议类型以及数据包的长度等。比如下面这个输出示例:

10:23:45.123456 IP 192.168.1.100.50000 > 192.168.1.200.80: Flags [S], seq 123456789, win 65535, options [mss 1460], length 0

在这个示例中,“10:23:45.123456” 是数据包的时间戳,表示数据包被捕获的时间;“IP” 表示协议类型为 IP 协议;“192.168.1.100.50000” 是源 IP 地址和源端口号;“192.168.1.200.80” 是目标 IP 地址和目标端口号;“Flags [S]” 表示 TCP 标志位为 SYN,说明这是一个建立 TCP 连接的请求包;“seq 123456789” 是序列号;“win 65535” 是窗口大小;“options [mss 1460]” 是 TCP 选项,这里表示最大段大小为 1460 字节;“length 0” 表示数据包的数据部分长度为 0。通过这些信息,我们可以初步了解网络通信的情况。

②指定接口抓包

在实际使用中,我们可能只需要捕获某个特定网络接口的流量。这时,可以使用 “-i” 选项来指定网络接口。例如,要捕获 eth0 接口的流量,只需在终端中输入以下命令:

sudo tcpdump -i eth0

这里使用 “sudo” 是因为 tcpdump 需要管理员权限才能捕获网络数据包。执行这个命令后,tcpdump 就会专注于 eth0 接口,只捕获通过该接口的数据包,这样可以减少不必要的干扰,让我们更清晰地分析目标接口的网络流量。

③过滤特定主机流量

如果我们只关心与某个特定主机相关的流量,可以使用 “host” 关键字来过滤。比如,要捕获与 IP 地址为 192.168.1.100 的主机之间的通信数据包,可以使用以下命令:

sudo tcpdump host 192.168.1.100

这样,tcpdump 就只会显示与 192.168.1.100 这个主机相关的数据包信息,无论是该主机发送的还是接收的数据包都会被捕获并显示出来,方便我们对特定主机的网络活动进行分析。

④过滤特定端口流量

除了过滤特定主机的流量,我们还可以过滤特定端口的流量。使用 “port” 关键字,就可以轻松实现这一目的。例如,要捕获所有端口号为 80 的数据包,可以输入以下命令:

sudo tcpdump port 80

端口号为 80 通常是 HTTP 协议使用的端口,通过这个命令,我们可以捕获到所有与 HTTP 通信相关的数据包,对于分析 Web 服务器的访问情况、排查 HTTP 相关的网络问题非常有帮助。

⑤组合过滤条件

tcpdump 还支持使用逻辑运算符 “and”“or”“not” 来组合过滤条件,以实现更复杂的过滤需求。比如,要捕获源 IP 地址为 192.168.1.100 且目标端口为 80 的数据包,可以使用以下命令:

sudo tcpdump src host 192.168.1.100 and dst port 80

这个命令中,“src host 192.168.1.100” 表示源 IP 地址为 192.168.1.100,“dst port 80” 表示目标端口为 80,“and” 运算符将这两个条件组合起来,只有同时满足这两个条件的数据包才会被捕获。再比如,要捕获源 IP 地址为 192.168.1.100 或者目标端口为 80 的数据包,可以使用 “or” 运算符:

sudo tcpdump src host 192.168.1.100 or dst port 80

而如果要捕获除了 ICMP 协议之外的所有数据包,可以使用 “not” 运算符:

sudo tcpdump not icmp

通过灵活组合这些过滤条件,我们可以根据实际需求精准地捕获和分析网络数据包。

1.4tcpdump 高级用法

①保存捕获数据包

有时候,我们可能需要将捕获到的数据包保存下来,以便后续进行更深入的分析。tcpdump 提供了 “-w” 选项来实现这一功能。例如,要将捕获到的数据包保存到名为 “capture.pcap” 的文件中,可以使用以下命令:

sudo tcpdump -i eth0 -w capture.pcap

这里,“-i eth0” 指定了捕获的网络接口为 eth0,“-w capture.pcap” 表示将捕获到的数据包保存到 “capture.pcap” 文件中。保存后的文件可以使用 Wireshark 等工具进行打开和分析,Wireshark 提供了更直观的图形化界面和丰富的分析功能,能够帮助我们更好地理解数据包的内容和网络通信的细节。

②从文件读取数据包

当我们已经保存了数据包文件后,可以使用 “-r” 选项从文件中读取数据包进行分析。比如,要读取之前保存的 “capture.pcap” 文件,可以输入以下命令:

tcpdump -r capture.pcap

执行这个命令后,tcpdump 会读取 “capture.pcap” 文件中的数据包,并按照默认的格式输出数据包的信息。这样,我们就可以在不需要实时捕获数据包的情况下,对之前保存的数据包进行反复分析,方便我们研究特定时间段内的网络通信情况。

③显示详细信息

tcpdump 提供了 “-v”“-vv”“-vvv” 等选项来获取更详细的数据包信息。“-v” 选项会输出一个稍微详细的信息,比如在 IP 包中可以包括 TTL(生存时间)和服务类型的信息。例如:

sudo tcpdump -i eth0 -v

执行这个命令后,输出的数据包信息会比默认情况下更详细一些,我们可以看到更多关于数据包的细节,如 TTL 的值、服务类型等,这些信息对于分析网络路径和服务质量非常有帮助。

“-vv” 选项会输出更详细的报文信息,包括一些 TCP 选项的详细内容等。例如:

sudo tcpdump -i eth0 -vv

使用 “-vv” 选项后,我们可以看到更多关于 TCP 连接的详细信息,如 TCP 选项中的最大段大小(MSS)、时间戳选项等,这些信息对于深入分析 TCP 连接的建立和数据传输过程非常重要。

“-vvv” 选项则是最详细的模式,会显示完整的数据包信息,包括一些更底层的协议细节。例如:

sudo tcpdump -i eth0 -vvv

在 “-vvv” 模式下,我们几乎可以看到数据包的所有细节,从链路层到应用层的信息都会被详细显示出来,这对于专业的网络分析人员来说非常有用,可以帮助他们深入了解网络通信的每一个环节。

④其他实用选项

除了上述选项外,tcpdump 还有一些其他实用的选项。比如 “-c” 选项可以用于限制抓包的数量。例如,要捕获 10 个数据包后就停止抓包,可以使用以下命令:

sudo tcpdump -i eth0 -c 10

这个命令在我们只需要获取少量数据包进行分析时非常有用,可以避免不必要的大量数据捕获,节省时间和存储空间。

  • “-S” 选项可以用于处理 TCP 关联数,以绝对序列号代替相对序列号,这在分析一些复杂的 TCP 连接场景时非常有帮助,可以让我们更清晰地了解 TCP 连接中数据包的顺序和关系。

  • “-A” 选项可以将数据包的内容以 ASCII 文本形式显示,这在抓取包含网页数据的数据包时非常方便,我们可以直接查看数据包中的文本内容,如 HTTP 请求和响应中的文本信息,对于分析 Web 应用的网络通信非常直观。

  • “-X” 选项会分别以十六进制和 ASCII 码格式显示数据包的内容,这对于分析二进制数据和文本数据混合的数据包非常有用,我们可以同时看到数据包的二进制表示和对应的文本内容,有助于理解数据包的结构和内容。

 

二、Wireshark图形化分析

Wireshark 是一款功能极其强大的图形化网络分析工具,在网络领域有着广泛的应用 。它就像是一个专业的网络数据分析师,能够深入分析网络数据包,为我们提供详细的网络流量信息。无论是排查网络故障、进行网络安全监测,还是研究网络协议,Wireshark 都能大显身手。在网络安全监测中,Wireshark 可以实时捕获网络数据包,通过分析数据包的内容和来源,检测是否存在恶意攻击行为,如端口扫描、SQL 注入等。它还可以帮助我们研究网络协议,通过捕获和分析不同协议的数据包,深入了解协议的工作原理和机制,对于网络工程师和开发人员来说,这是非常有价值的。

2.1安装 Wireshark

⑴Linux 系统安装

如果你使用的是 Debian 或 Ubuntu 系统,可以在终端中输入以下命令进行安装:

sudo apt-get install wireshark

在安装过程中,系统会提示你确认安装,输入 “Y” 并回车即可继续安装。安装完成后,Wireshark 就会被安装到系统中,你可以通过在终端中输入 “wireshark” 来启动它。

对于 CentOS 或 RHEL 系统,则需要使用 yum 命令来安装:

sudo yum install wireshark

同样,在安装过程中按照提示进行确认即可。如果系统提示没有找到 wireshark 软件包,可能需要先启用相应的软件源。

⑵Windows 系统安装

在 Windows 系统中安装 Wireshark 也非常简单。首先,打开浏览器,访问 Wireshark 官方网站(https://www.wireshark.org/) 。在官网首页,找到 “Download” 按钮,点击进入下载页面。在下载页面中,选择适合你系统的安装包,一般来说,如果你的系统是 64 位的,就选择 64 位的安装包;如果是 32 位的,就选择 32 位的安装包。下载完成后,双击安装包开始安装。

安装过程中,会出现安装向导界面,按照向导的提示一步一步进行操作即可。在安装过程中,你可以选择安装路径、是否创建桌面快捷方式等选项。安装完成后,在开始菜单中可以找到 Wireshark 的图标,点击即可启动 Wireshark。

2.2Wireshark 基本操作

① 启动与界面介绍

  • 启动 Wireshark 后,你会看到一个直观且功能丰富的界面。界面主要分为以下几个区域:

  • 菜单栏:包含了各种操作选项,如文件的打开、保存,捕获的开始、停止,以及各种分析工具和设置选项等。通过菜单栏,我们可以完成大部分的操作,比如打开一个已有的数据包文件进行分析,或者设置捕获过滤器等。

  • 工具栏:提供了常用功能的快捷图标,方便我们快速进行操作。例如,点击绿色的鲨鱼鳍图标可以开始捕获数据包,点击红色的正方形图标可以停止捕获,还有放大镜图标用于查找数据包等。这些快捷图标让我们的操作更加高效,不需要在菜单栏中一层一层地查找相应的功能。

  • 接口列表:显示了当前系统中可用的网络接口,我们可以在这里选择要进行抓包的网络接口。比如,如果你的计算机同时连接了有线网络和无线网络,这里就会显示两个对应的网络接口,你可以根据需要选择其中一个进行抓包。

  • 数据包列表:实时显示捕获到的数据包的摘要信息,包括数据包的编号、时间戳、源 IP 地址、目标 IP 地址、协议类型以及简要信息等。我们可以通过这个列表快速了解捕获到的数据包的基本情况,比如某个数据包是从哪个 IP 地址发送到哪个 IP 地址的,使用的是什么协议等。

  • 数据包详情:当我们在数据包列表中点击某个数据包时,这里会显示该数据包的详细信息,包括各层协议的头部信息和数据内容。通过查看数据包详情,我们可以深入了解数据包的结构和内容,比如一个 HTTP 请求数据包,我们可以在这里看到请求的方法、URL、头部信息以及请求体等。

  • 十六进制数据:以十六进制和 ASCII 码的形式显示数据包的原始数据,帮助我们查看数据包的底层内容。在分析一些特殊的数据包或者进行协议研究时,查看原始数据是非常有帮助的,我们可以通过这里看到数据包在网络中实际传输的字节数据。

    ② 选择网络接口抓包

    要使用 Wireshark 进行抓包,首先需要选择正确的网络接口。在 Wireshark 的主界面中,找到 “接口列表” 区域,这里会列出当前系统中所有可用的网络接口。每个接口都有一个名称和对应的描述信息,比如 “Ethernet0” 表示有线网络接口,“Wi-Fi” 表示无线网络接口等。

    根据你的需求选择要抓包的网络接口。如果你想捕获有线网络的流量,就选择对应的有线网络接口;如果想捕获无线网络的流量,就选择无线网络接口。选择好接口后,点击接口名称前面的小箭头,展开该接口的详细信息,确保没有其他异常设置。然后,点击工具栏上的 “开始捕获” 按钮(绿色的鲨鱼鳍图标),Wireshark 就会开始捕获通过该网络接口的数据包。

    ③捕获过滤器使用

    捕获过滤器用于在抓包前设置过滤条件,只捕获我们感兴趣的数据包,这样可以减少捕获的数据量,提高分析效率。捕获过滤器使用的是 Berkeley Packet Filter(BPF)语法,它由类型、方向、协议和逻辑运算符等元素组成。

    例如,要捕获与特定 IP 地址通信的数据包,可以使用 “host” 关键字。比如,要捕获与 IP 地址 192.168.1.100 相关的数据包,可以在捕获过滤器输入框中输入 “host 192.168.1.100”。这里的 “host” 表示类型为主机,“192.168.1.100” 是指定的主机 IP 地址。

    如果要捕获特定端口的流量,可以使用 “port” 关键字。例如,要捕获端口号为 80(HTTP 协议常用端口)的数据包,可以输入 “port 80”。“port” 表示类型为端口,“80” 是指定的端口号。

    还可以使用逻辑运算符 “and”“or”“not” 来组合多个过滤条件。比如,要捕获源 IP 地址为 192.168.1.100 且目标端口为 80 的数据包,可以输入 “src host 192.168.1.100 and dst port 80”。这里的 “src” 表示源,“dst” 表示目标,“and” 表示两个条件同时满足。

    在设置好捕获过滤器后,点击 “开始捕获” 按钮,Wireshark 就会按照设置的过滤条件捕获数据包。

    ④显示过滤器使用

    显示过滤器用于在抓包后对捕获到的数据包进行筛选,只显示我们关心的数据包。显示过滤器的语法更加灵活和强大,它可以基于协议、IP 地址、端口号、协议字段等多种条件进行过滤。

    例如,要过滤出所有 HTTP 协议的数据包,只需要在显示过滤器输入框中输入 “http”,然后按下回车键,数据包列表中就只会显示 HTTP 协议的数据包。

    如果要过滤出源 IP 地址为 192.168.1.100 的数据包,可以输入 “ip.src == 192.168.1.100”。这里的 “ip.src” 表示源 IP 地址,“==” 是比较运算符,表示等于。

    要过滤出目标端口为 80 的 TCP 数据包,可以输入 “tcp.dstport == 80”。“tcp.dstport” 表示 TCP 协议的目标端口。

    显示过滤器还支持复杂的条件组合。比如,要过滤出源 IP 地址为 192.168.1.100 且包含 “login” 关键字的 HTTP POST 请求数据包,可以输入 “ip.src == 192.168.1.100 and http.request.method == "POST" and http contains "login"”。这里使用了 “and” 运算符组合了三个条件,分别是源 IP 地址、HTTP 请求方法和数据包内容。

    通过合理使用显示过滤器,我们可以快速从大量的捕获数据包中找到我们需要的数据包,进行更深入的分析。

    2.3Wireshark 高级分析功能

    ①协议分析

    Wireshark 强大的功能之一就是对各种协议的深入解析和展示。它支持几乎所有常见的网络协议,包括 HTTP、TCP、UDP、IP、ARP、ICMP 等等。当我们捕获到数据包后,Wireshark 会自动识别数据包所使用的协议,并将协议的各个字段详细地展示出来。

    以 HTTP 协议为例,当我们捕获到一个 HTTP 请求数据包时,在数据包详情区域可以看到 HTTP 协议的各个部分。比如,请求行中的请求方法(GET、POST 等)、URL 和 HTTP 版本;头部信息中的各种字段,如 User - Agent(客户端信息)、Accept(可接受的内容类型)、Cookie(会话信息)等;如果是 POST 请求,还可以看到请求体中的数据。通过这些信息,我们可以了解客户端的请求内容、客户端的类型以及可能的用户行为等。

    对于 TCP 协议,Wireshark 会展示 TCP 连接的建立、数据传输和断开过程中的各种信息。例如,TCP 三次握手过程中的 SYN、SYN + ACK、ACK 标志位;序列号(Sequence Number)和确认号(Acknowledgment Number),它们用于确保数据的可靠传输;窗口大小(Window Size),它表示接收方当前可以接收的数据量,通过分析窗口大小的变化,我们可以了解网络的拥塞情况和数据传输的效率。

    ②统计图表功能

    Wireshark 提供了丰富的统计和图表功能,帮助我们更直观地了解网络流量的情况。这些功能可以通过菜单栏中的 “Statistics” 选项来访问。

    • 协议分布:在 “Statistics” - “Protocol Hierarchy” 中,Wireshark 会展示捕获到的数据包中各种协议的占比情况。通过这个功能,我们可以快速了解网络中主要使用的协议类型,判断是否存在异常的协议流量。比如,如果发现某个不常见的协议占用了大量的网络带宽,就需要进一步分析原因,可能存在安全风险或者网络配置问题。

    • 会话表:选择 “Statistics” - “Conversations”,可以查看网络中的会话信息,包括源 IP 地址、目标 IP 地址、使用的协议以及数据包和字节数等。会话表可以帮助我们了解不同主机之间的通信情况,分析哪些主机之间的通信量较大,是否存在异常的通信模式。例如,如果发现某个内部主机与外部的一个不常见 IP 地址进行大量的数据传输,就需要关注是否存在数据泄露的风险。

    • 端口分布:在 “Statistics” - “Endpoints” 中,Wireshark 会显示各个端口的使用情况,包括发送和接收的数据包数量、字节数等。通过分析端口分布,我们可以了解哪些端口被频繁使用,是否存在端口扫描等异常行为。比如,如果某个端口在短时间内收到大量来自不同 IP 地址的连接请求,就可能是遭受了端口扫描攻击。

    • 时间序列图:“Statistics” - “IO Graphs” 可以生成网络流量的时间序列图,以可视化的方式展示网络流量随时间的变化情况。我们可以在图中设置不同的参数,如数据包数量、字节数、不同的协议等,通过观察图表的变化趋势,分析网络流量的高峰和低谷,判断网络的负载情况。例如,在业务高峰期,观察网络流量是否超出了预期,如果出现网络拥塞,可以进一步分析原因并采取相应的措施。

    ③深入分析数据包

    在 Wireshark 中,我们可以通过点击数据包列表中的某个数据包,在数据包详情区域查看其详细信息。这个区域会以层次结构的方式展示数据包的各层协议信息,从物理层的数据帧开始,到数据链路层的以太网帧,再到网络层的 IP 包、传输层的 TCP 或 UDP 段,最后到应用层的协议数据,如 HTTP 请求或响应。

    以一个 HTTP 请求数据包为例,在数据包详情区域,我们可以看到:

      • Frame:物理层的数据帧概况,包括帧的长度、捕获时间、接口 ID 等信息。这些信息对于了解数据包在物理传输过程中的基本情况非常重要,比如帧长度可以反映数据包的大小,捕获时间可以帮助我们确定事件发生的顺序。

      • Ethernet II:数据链路层以太网帧头部信息,包含源 MAC 地址和目标 MAC 地址。MAC 地址是网络设备在数据链路层的标识,通过查看源和目标 MAC 地址,我们可以了解数据包在局域网内的传输路径,判断是否存在 MAC 地址欺骗等异常情况。

      • Internet Protocol Version 4:网际层 IP 包头部信息,包括源 IP 地址、目标 IP 地址、TTL(生存时间)、协议类型等。IP 地址是网络层的关键标识,通过源和目标 IP 地址,我们可以确定数据包的发送和接收主机;TTL 值表示数据包在网络中可以经过的最大跳数,每经过一个路由器,TTL 值减 1,当 TTL 值为 0 时,数据包将被丢弃,通过分析 TTL 值,我们可以了解数据包在网络中的传输路径和可能遇到的问题。

      • Transmission Control Protocol:传输层的数据段头部信息,对于 HTTP 协议,通常使用 TCP 协议进行传输。这里会显示源端口和目标端口、序列号、确认号、TCP 标志位(如 SYN、ACK、FIN 等)。这些信息对于理解 TCP 连接的建立、数据传输和断开过程非常关键,比如通过 SYN 和 ACK 标志位,我们可以分析 TCP 三次握手的过程;通过序列号和确认号,我们可以确保数据的正确传输和顺序。

      • Hypertext Transfer Protocol:应用层的信息,即 HTTP 协议的具体内容。这里会显示 HTTP 请求的方法(GET、POST 等)、URL、HTTP 版本、头部信息以及请求体(如果有)。通过分析这些信息,我们可以了解客户端的请求内容、客户端的类型以及可能的用户行为等,比如通过请求的 URL,我们可以知道用户访问的具体页面;通过头部信息中的 User - Agent,我们可以了解客户端使用的浏览器类型和操作系统。

      此外,在数据包详情区域,我们还可以右键点击某个字段,选择 “Follow” - “TCP Stream” 或 “UDP Stream” 来跟踪该数据包所属的 TCP 或 UDP 会话,这对于分析连续的网络通信过程非常有帮助。

      三、tcpdump与Wireshark联手出击

      3.1联合使用场景

      在实际的网络分析工作中,tcpdump 和 Wireshark 常常携手合作,发挥出各自的优势 。tcpdump 在服务器端的抓包工作中表现出色,它能够在不依赖图形界面的情况下,高效地捕获网络数据包。而 Wireshark 则凭借其强大的图形化分析功能,成为深入剖析数据包的利器。

      例如,当服务器出现网络性能问题时,我们首先可以使用 tcpdump 在服务器上快速抓取一段时间内的网络数据包,并将其保存为文件。由于 tcpdump 基于命令行操作,在服务器环境中占用资源少,操作便捷,可以在不影响服务器正常运行的情况下完成抓包任务。然后,将保存的数据包文件传输到装有 Wireshark 的分析主机上。Wireshark 的图形化界面能够直观地展示数据包的各种详细信息,包括协议层次结构、源和目标地址、端口号以及数据包内容等,方便我们进行深入分析。

      这种先使用 tcpdump 抓包,再利用 Wireshark 分析的方式,既充分利用了 tcpdump 的抓包灵活性,又发挥了 Wireshark 强大的分析能力,能够更高效地解决网络问题。

      3.2联合使用步骤

      ①tcpdump 抓包

      使用 tcpdump 抓包并保存文件非常简单。例如,要捕获 eth0 接口上的所有流量,并将其保存到名为 “network_traffic.pcap” 的文件中,可以使用以下命令:

      sudo tcpdump -i eth0 -w network_traffic.pcap

      如果只想捕获特定主机(如 192.168.1.100)与其他主机之间的通信流量,可以这样操作:

      sudo tcpdump -i eth0 host 192.168.1.100 -w specific_host_traffic.pcap

      如果要捕获特定端口(如端口 80,通常用于 HTTP 通信)的流量,则命令如下:

      sudo tcpdump -i eth0 port 80 -w http_traffic.pcap

      在实际抓包过程中,我们可以根据具体的分析需求,灵活调整过滤条件,精准地捕获所需的网络数据包 。

      ②Wireshark 分析

      将 tcpdump 保存的文件导入 Wireshark 进行分析也很容易。打开 Wireshark 后,点击菜单栏中的 “文件”,然后选择 “打开”,在文件浏览器中找到 tcpdump 保存的.pcap 文件,如 “network_traffic.pcap”,点击 “打开” 按钮即可导入文件 。

      文件导入后,我们可以在 Wireshark 的界面中看到捕获的数据包列表。通过设置显示过滤器,我们可以对数据包进行筛选和分析。比如,要查看所有 HTTP 协议的数据包,在显示过滤器输入框中输入 “http”,然后按下回车键,数据包列表中就只会显示 HTTP 协议的数据包。如果要查看源 IP 地址为 192.168.1.100 的数据包,输入 “ip.src == 192.168.1.100” 即可。我们还可以通过点击数据包列表中的某个数据包,在数据包详情区域查看其详细信息,包括各层协议的头部信息和数据内容,从而深入分析网络通信的细节。

      3.3案例实战

      假设我们遇到一个网络故障,某公司的员工反馈无法正常访问公司内部的一个重要 Web 应用。我们决定使用 tcpdump 和 Wireshark 来排查问题。

      ①抓包:首先,在 Web 服务器所在的主机上使用 tcpdump 进行抓包。由于我们怀疑是 Web 应用相关的问题,所以主要捕获与 Web 服务器端口(假设为 8080)相关的流量。在终端中输入以下命令:

      sudo tcpdump -i eth0 tcp port 8080 -w web_app_traffic.pcap

      让 tcpdump 运行一段时间,以捕获足够多的数据包。在此期间,让员工不断尝试访问 Web 应用,以便抓取到相关的网络通信数据。

      设置过滤器:抓包完成后,将 “web_app_traffic.pcap” 文件传输到装有 Wireshark 的分析主机上。打开 Wireshark 并导入该文件。为了快速定位问题,我们设置显示过滤器。由于是 Web 应用访问问题,首先设置过滤器为 “http”,这样可以只显示 HTTP 协议的数据包。然后,进一步筛选出与目标 Web 应用相关的数据包,假设目标 Web 应用的 IP 地址为 192.168.1.100,添加过滤条件 “ip.addr == 192.168.1.100”,最终的显示过滤器为 “http && ip.addr == 192.168.1.100”。

      分析结果:通过设置过滤器后,在数据包列表中查看捕获的数据包。我们发现,有大量的 HTTP 请求数据包发送到 Web 服务器,但服务器的响应数据包很少,并且存在一些 TCP 重传的数据包。进一步查看 TCP 重传数据包的详细信息,发现是因为服务器在发送响应数据包时,某些数据包丢失,导致客户端没有收到完整的响应,从而触发了 TCP 重传机制。

      问题原因和解决方案:经过进一步排查,发现是服务器所在的网络交换机出现了故障,部分端口存在丢包现象。更换交换机后,再次让员工访问 Web 应用,使用 tcpdump 和 Wireshark 进行抓包分析,发现网络通信恢复正常,HTTP 请求和响应数据包都能正常传输。通过这个案例,我们可以看到 tcpdump 和 Wireshark 在网络故障排查中的强大作用,它们能够帮助我们深入了解网络通信的细节,快速找到问题的根源并解决问题。

      四、避坑指南与注意事项

      4.1权限问题

      在使用 tcpdump 时,通常需要 root 权限。这是因为 tcpdump 需要将网络界面设置为混杂模式,以捕获所有经过网络接口的数据包,而普通用户没有权限进行这样的操作 。如果没有足够的权限,运行 tcpdump 时会出现 “tcpdump: no suitable device found” 等错误提示。解决方法很简单,只需在执行 tcpdump 命令时使用 sudo,获取管理员权限,如 “sudo tcpdump -i eth0” 。

      对于 Wireshark,在 Windows 系统中,默认情况下需要以管理员身份运行才能捕获数据包。如果没有管理员权限,可能无法选择某些网络接口进行抓包,或者在抓包过程中出现权限不足的错误。在 Linux 系统中,同样可能需要为用户授予适当的权限,比如将用户添加到 wireshark 组中,并设置相关文件的权限,以允许用户运行 Wireshark 进行抓包操作 。

      4.2性能影响

      在高流量网络中使用 tcpdump 和 Wireshark 时,可能会对系统性能产生一定的影响。tcpdump 捕获数据包的性能会受到系统负载和网络接口速度的限制。在高流量的网络中,tcpdump 可能会因为处理不过来大量的数据包而导致丢包,从而影响分析结果的准确性。此外,tcpdump 在解析和显示数据包时也会占用一定的系统资源,可能会导致系统运行变慢 。

      Wireshark 在捕获和分析大量数据包时,也会消耗较多的系统资源,如内存和 CPU。如果计算机的配置较低,在使用 Wireshark 分析高流量网络时,可能会出现界面卡顿、响应迟缓等情况,甚至可能导致程序崩溃。为了避免性能问题,可以在抓包前设置合理的过滤条件,只捕获和分析我们感兴趣的数据包,减少数据量;同时,确保计算机具有足够的硬件资源,如内存和 CPU,以支持 Wireshark 的运行 。

      4.3存储空间

      长时间运行 tcpdump 可能会消耗大量的磁盘空间。当我们使用 tcpdump 抓包并保存文件时,如果没有及时清理,随着时间的推移,抓包文件会越来越大。例如,在一个繁忙的网络环境中,持续抓包几个小时,可能会生成几个 GB 甚至更大的抓包文件。这些文件不仅会占用大量的磁盘空间,还会影响系统的性能。因此,我们要定期管理捕获文件,及时删除不需要的抓包文件,或者将重要的抓包文件进行归档存储 。

      4.4时间同步

      在抓包时,确保服务器或计算机的时间正确同步非常重要。准确的时间戳对于分析事件时间线至关重要,它可以帮助我们确定网络事件发生的先后顺序,分析网络通信的流程。如果时间不同步,可能会导致分析结果出现偏差,无法准确判断网络问题的根源。例如,在分析网络攻击事件时,如果时间不准确,可能会将攻击事件的发生时间与其他正常网络活动的时间混淆,从而影响对攻击行为的判断和应对措施的制定 。所以,在进行抓包分析前,要确保系统时间与标准时间同步,可以使用 NTP(网络时间协议)等工具来同步时间 。

      相关文章:

      案例篇:如何用tcpdump和Wireshark识别潜在威胁

      无论是日常浏览网页、观看视频,还是企业开展线上业务、进行数据传输,都离不开网络的支持。然而,网络问题也时有发生,比如网络卡顿,相信大家都遇到过,那种等待页面加载的焦急心情,真的让人抓狂。…...

      微信小程序开发中关于首屏加载、本地数据持久化的思考

      本文将围绕小程序开发中首屏性能优化与本地存储持久化两大重要主题展开,结合实际项目经验,系统分析常见问题、优化方法与最佳实践,构建流畅且高效的小程序体验。 文章目录 前言一、什么是首屏加载?为什么重要?二、小程…...

      媒资管理之视频管理

      一:业务概述: 媒资管理这个模块是我负责开发的,主要的管理对象是视频,图片,文档等 包括文件的上传,视频的处理,文件的删除 (在媒资管理界面,有个上传视频的按钮&#…...

      windows程序转鲲鹏服务器踩坑记【持续更新中】

      1.鲲鹏处理器和Intel处理器的区别 处理器/对比项IntelKunpeng厂家因特尔(美国)华为(中国)指令集X86架构ARM-V8架构与指令集- x86 CISC复杂指令集 - 单核性能强(如至强8380主频3.8GHz) - 三级缓存优化,支持DDR4-3200和Optane内存- ARMv8-A RI…...

      【阿里云大模型高级工程师ACP习题集】2.6.用插件扩展答疑机器人的能力边界

      习题集: 【单选题】在构建Agent系统时,使用Assistant API创建Agent时,若想让Agent具备查询员工信息和发送请假申请的功能,以下对instructions参数设置最合理的是( ) A. “你可以做任何事情” B. “你能查询员工信息和发送请假申请” C. “你是公司助手,功能有:1.查询员…...

      程序进程多任务线程

      1.程序 程序(program)是含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,也就是说程序是静态的代码。 2.进程 进程(process)是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。进程是操作系统资源分配和处理器调度的基本单位,拥有独立的代码、内部数…...

      Finish技术生态计划: FinishRpc

      finishRpc 简介 ​ 纯个人兴趣设计的项目: 因为失业在家摆烂 所以没事就想写点代码 本身也比较喜欢自己写一些好玩的demo 这个项目的设计完全是取悦自己又菜又有一个创造框架的梦想 可以用于提升框架设计思路以及实践一些常用技术的练习 可以用于校园中的练习 , 如果能对你有所…...

      《商业世界的开源法则:协议选择与商业模式创新》

      引言 在当今数字化时代,开源软件已成为技术生态系统中不可或缺的一部分。从Linux操作系统到Apache Web服务器,从MySQL数据库到React前端框架,开源项目支撑着全球大部分互联网基础设施和企业IT系统。然而,关于开源协议与商业使用之…...

      Kubernetes》》k8s》》explain查 yaml 参数

      在创建json 和yaml 时,我们可能不知道具体的参数该怎么写。同样 我们可以通过explain这个 命令来查看 每个参数具体的作用与写法 # 查看 pod类性有哪些参数 kubectl explain pod# 查看pod中 spec下面有哪些参数 kubectl explain pod.spec...

      Kubernetes(k8s)学习笔记(三)--部署 Kubernetes Master

      前文已经使用docker安装了kubeadm&#xff0c;因此本文使用kubeadm部署master节点。 一.先拉取必要的镜像库到本地。 在拉取之前&#xff0c;先配下镜像加速 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors": [&qu…...

      《数据结构之美--二叉树》

      一&#xff1a;引言&#xff1a; 上次我们学习了栈和队列这两个数据结构&#xff0c;今天我们来学习一个新的数据结构–二叉树中的堆。 堆其实就是一种特殊的二叉树&#xff0c;具有二叉树的性质的同时&#xff0c;还具有其他的性质。 那么在学习堆之前还是先来了解一下树。 …...

      Prompt Engineering 提示工程:释放大语言模型潜力的关键技术与实践指南

      提示工程:释放大语言模型潜力的关键技术与实践指南 提示工程(Prompt Engineering)作为与大型语言模型(LLM)交互的核心技术,已成为AI应用开发的关键技能。本文将系统介绍提示工程的定义与发展历程,深入剖析其核心知识点,提供实用的设计框架与技巧,并通过丰富的实战案例展示…...

      std::print 和 std::println

      一、基本概念 std::print 和 std::println 是 C23 新增的格式化输出函数&#xff0c;旨在替代传统的 std::cout 链式调用。它们基于 std::format 实现&#xff0c;支持类型安全的格式化字符串&#xff0c;语法更简洁&#xff0c;性能更优15。 功能特点&#xff1a; 直接输出到…...

      高压直流输电MATLAB/simulink仿真模型+说明文档

      1.模型简介 本仿真模型基于MATLAB/Simulink&#xff08;版本MATLAB 2018Ra&#xff09;软件。建议采用matlab2018 Ra及以上版本打开。&#xff08;若需要其他版本可联系代为转换&#xff09; 使用一个传输功率为1000MW&#xff08;500 kV&#xff0c;2 kA&#xff09;直流互连…...

      第十四章-PHP与HTTP协议

      第十四章-PHP与HTTP协议 一&#xff0c;HTTP 协议详解 HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;是互联网上应用最广泛的协议之一&#xff0c;用于客户端&#xff08;如浏览器&#xff09;与服务器之间的通信。它是 Web 技术的基石…...

      【阿里云大模型高级工程师ACP学习笔记】2.6.用插件扩展答疑机器人的能力边界

      一、学习目标 备考阿里云大模型高级工程师ACP认证,深入学习《2.6.用插件扩展答疑机器人的能力边界》这部分内容,主要期望达成以下目标: 理解智能体应用核心概念:理解智能体(Agent)应用的核心概念,包括其如何拓展大模型能力,突破传统答疑机器人局限。掌握构建Agent系统…...

      用远程代理模式轻松实现远程服务调用,打开编程新大门

      通过远程代理来实现一个简易的远程过程调用实例。带你打开新的大门。 Socket 远程代理服务案例 基于 Socket 的远程服务&#xff0c;我们需要完成以下步骤&#xff1a; 服务端实现&#xff1a;创建一个远程服务&#xff0c;通过 Socket 接受客户端请求并提供计算服务。 客户端…...

      (001)Excel 快捷键

      文章目录 时间 时间 当前日期&#xff1a;ctrl ; (分号)。当前时间&#xff1a;ctrl Shift ; (分号)。...

      TMI投稿指南(二):投稿文章注意事项

      文章结构&#xff1a; https://journals.ieeeauthorcenter.ieee.org/create-your-ieee-journal-article/create-the-text-of-your-article/structure-your-article/ 补充材料&#xff1a;准备补充材料 - IEEE 作者中心期刊 --- Prepare Supplementary Materials - IEEE Author…...

      从困局到破局的AI+数据分析

      从困局到破局的AI数据分析 困局&#xff1a;数据分析的四道高墙破局&#xff1a;AI赋能全流程数据分析远见&#xff1a;AI数据分析的革命性意义 数据是新时代的石油&#xff0c;人工智能是炼油厂。当两者强强联合&#xff0c;一场数据分析的革命正悄然发生。 多少次你面对Excel…...

      12. RANSAC点云多平面拟合分割

      本文看了博客RANSAC点云多平面拟合分割-CSDN博客的文章&#xff0c;该博客将多平面拟合分割讲的很详细了&#xff0c;这里只是作为笔记用。 1.RANSAC算法原理 三维平面拟合&#xff08;最小二乘法&#xff09; 具体实现见下面代码&#xff1a; def SVD(points):# 二维&#…...

      Prompt

      提示工程指南 | Prompt Engineering GuideGoogle 官方提示工程 (Prompt Engineering)白皮书 | 宝玉的分享https://www.geeksforgeeks.org/what-is-prompt-engineering-the-ai-revolution/Prompt Engineering for Reasoning ModelsPrompt Engineering with Reasoning Models 1.p…...

      [特殊字符] SpringCloud项目中使用OpenFeign进行微服务远程调用详解(含连接池与日志配置)

      &#x1f4da; 目录 为什么要用OpenFeign&#xff1f; 在cart-service中整合OpenFeign 2.1 引入依赖 2.2 启用OpenFeign 2.3 编写Feign客户端 2.4 调用Feign接口 开启连接池&#xff0c;优化Feign性能 3.1 引入OkHttp 3.2 配置启用OkHttp连接池 3.3 验证连接池生效 Feign最佳…...

      迈瑞医疗:国际业务增长21.28% 发展中国家成重要增长引擎

      4月28日&#xff0c;迈瑞医疗&#xff08;300760.SZ&#xff09;发布2024年年度报告。报告期内&#xff0c;公司实现营业收入367.26亿元&#xff0c;同比增长5.14%&#xff1b;实现归母净利润116.68亿元&#xff0c;同比增长0.74%&#xff1b;经营活动产生的现金流量净额124.25…...

      「地平线」创始人余凯:自动驾驶尚未成熟,人形机器人更无从谈起

      温馨提示&#xff1a;运营团队2025年最新原创报告&#xff08;共210页&#xff09; —— 正文&#xff1a; 近日&#xff0c;国内智驾芯片上市公司[地平线]创始人兼CEO余凯&#xff08;先生&#xff09;接受腾讯新闻访谈时&#xff0c;提到如今大火的人形机器人&#xff0c;核…...

      R 语言科研绘图第 43 期 --- 桑基图-冲击

      在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.weixin.qq.c…...

      SpringBoot应用原生或docker镜像容器集成Skywalking

      相关组件及版本 序号 组件 版本 备注 1 skywalking-oap-server 8.9.1 2 elasticsearch 7.17.6 3 skywalking-ui 8.9.1 4 apache-skywalking-java-agent 8.15.0 一、JAR包方式部署服务 下载apache-skywalking-java-agent jar文件 使用如下名称执行 java \ -j…...

      模板--进阶

      1. 非类型模板参数 模板解决了两类问题 1控制数据类型 2控制某种设计逻辑 类域可以直接访问什么&#xff1f; 1static修饰的静态成员变量 2typedef定义的内嵌类型 3 内部类 下面我们就要引出一个模板的知识点----------再用类模板的时候从类模板里面去取东西的时候 要…...

      PostgreSQL无法查看表中数据问题排查

      在 PostgreSQL 中&#xff0c;恢复数据库后&#xff0c;使用 DBeaver 等工具可以看到数据库和表名&#xff0c;但无法查询到表中数据&#xff0c;可能是以下原因之一。以下是可能的原因和解决方法&#xff1a; 1. 恢复未完全成功 原因&#xff1a;数据库恢复过程中可能未完全成…...

      实验研究 | 千眼狼高速摄像机驱动精密制造创新

      研究背景 小模数齿轮作为精密制造领域的核心组件&#xff0c;以“结构紧凑、重量轻、精度高”等优势&#xff0c;广泛应用于航空航天、工业机器人、精密仪器、医疗设备、新能源和微电机等领域。传统抛光技术效率低、成本高、表面质量不足&#xff0c;电解等离子体抛光技术&am…...

      AWS虚拟专用网络全解析:从基础到高级实践

      导语 AWS虚拟专用网络是连接企业本地数据中心与AWS云环境的关键桥梁。本文将深入探讨AWS VPN的核心概念、配置方法、最佳实践以及常见问题解决方案,助您构建安全、可靠的混合云网络架构。 一、AWS VPN概述 1. 定义 AWS VPN是一种网络服务,允许用户通过加密隧道将本地网络…...

      工业园区工厂企业数字IP广播应急呼叫对讲系统:数字IP广播极大提升工厂企业管理效率与应急响应效能

      工业园区工厂企业数字IP广播应急呼叫对讲系统:数字IP广播极大提升工厂企业管理效率与应急响应效能 北京海特伟业科技有限公司任洪卓发布于2025年4月28日 在数字化转型浪潮下&#xff0c;IP应急广播呼叫对讲广播系统凭借其网络化、智能化、融合化、多元化等优势&#xff0c;已…...

      我的HTTP和HTTPS

      注释&#xff1a;本文章架构跟随小林coding&#xff0c;在此基础上加深个人理解 小林coding&#xff1a;https://xiaolincoding.com/network/2_http/http_interview.html HTTP基本概念 HTTP是什么&#xff1f; http的中文名是超文本传输协议&#xff0c;超文本就是html&…...

      python_股票月数据趋势判断

      目录 前置 代码 视频&月数据 前置 1 A股月数据趋势大致判断&#xff0c;做一个粗略的筛选 2 逻辑&#xff1a; 1&#xff09;取最近一次历史最高点 2&#xff09;以1&#xff09;中最高点为分界点&#xff0c;只看右侧数据&#xff0c;取最近一次最低点 3&#xf…...

      计算机考研精炼 计网

      第 19 章 计算机网络体系结构 19.1 基本概念 19.1.1 计算机网络概述 1.计算机网络的定义、组成与功能 计算机网络是一个将分散的、具有独立功能的计算机系统&#xff0c;通过通信设备与线路连接起来&#xff0c;由功能完善的软件实现资源共享和信息传递的系统。 …...

      大数据应用开发和项目实战-Matplotlib

      Matplotlib的介绍 Matplotlib 是 Python 的绘图库&#xff0c;它能让使用者很轻松地将数据图形化&#xff0c;并且提供多样化的输出格式。 Matplotlib 可以用来绘制各种静态&#xff0c;动态&#xff0c;交互式的图表。比如说散点图、柱状图等等。 Matplotlib的安装与…...

      SQLMesh CLI 实战教程: 构建和维护数据转换管道的快速指南

      在数据工程领域&#xff0c;构建和维护数据转换管道是一项复杂而关键的任务。SQLMesh 是一个强大的工具&#xff0c;可以帮助你简化这一过程。本文将带你快速了解如何使用 SQLMesh CLI 来构建和维护数据转换管道。本文的目标是在 30 分钟或更短的时间内&#xff0c;让你熟悉 SQ…...

      行政区划代码

      本文数据来源&#xff1a;中华人民共和国民政部 在平常数据研究和开发中&#xff0c;经常会用到行政区划代码。而行政区划代码的使用&#xff0c;因年份不同可能也不尽完全相同。故整理了1980年到2024年所有的行政区划代码。 这样不仅仅适用于研究区划代码的变更研究&#xf…...

      Spring生命周期

      在Spring框架中&#xff0c;Bean的生命周期指的是从Bean的创建到销毁的整个过程。这个过程包括了多个阶段&#xff0c;每个阶段都有特定的操作。下面是一个典型的Spring Bean生命周期的概述&#xff1a; 一. 实例化&#xff08;Instantiation&#xff09; 当Spring容器启动时&…...

      前端连接websocket服务报错 Unexpected response code: 301

      前端连接websocket服务报错 Unexpected response code: 301 引直连测试301重定向修改nginx配置 引 websocket后端服务正常&#xff0c;监听正常&#xff0c;可以通过简单的前端代码进行连接&#xff0c;但是通过nginx反向代理后报错Error during WebSocket handshake: Unexpec…...

      C语言(5)—操作符详解

      文章目录 一、操作符分类概览二、二进制与进制转换2.1 进制基本概念 三、原码、反码与补码3.1 基本概念 四、位操作符详解 一、操作符分类概览 C语言中的操作符可以分为以下几大类&#xff1a; 算术操作符&#xff1a;, -, *, /, % 移位操作符&#xff1a;<<, >>…...

      ubuntu新增磁盘挂载

      1. 确认新磁盘 使用 lsblk 命令查看系统中所有的块设备&#xff0c;找出新增的磁盘。 rootzzwl:~# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 60G 0 disk ├─sda1 8:1 0 …...

      【计网】计算机网络的类别与性能

      一、计算机网络的分类 计算机网络可以根据不同的标准进行分类。下面是两种常见的分类方法&#xff1a; 1.按照网络的作用范围进行分类 广域网 (WAN): 广域网覆盖的范围非常广泛&#xff0c;通常跨越城市、国家或甚至是全球。WAN主要用于连接地理位置相隔较远的计算机和网络设…...

      Field访问对象int字段,对象访问int字段,通过openjdk17 C++源码看对象字段访问原理

      在Java反射机制中&#xff0c;访问对象的int类型字段值&#xff08;如field.getInt(object)&#xff09;的底层实现涉及JVM对内存偏移量的计算与直接内存访问。本文通过分析OpenJDK 17源码&#xff0c;揭示这一过程的核心实现逻辑。 一、字段偏移量计算 1. Java层初始化偏移量…...

      香橙派打包qt文件报错“xcb 插件无法加载”与“QObject::moveToThread”线程错误的解决方案

      PyQt 报错总结&#xff1a;打包文件过程&#xff0c;“xcb 插件无法加载”与“QObject::moveToThread”线程错误的解决方案全解析 在使用 PyQt5 搭建图形界面时&#xff0c;打包文件的过程中出现的问题&#xff0c;真难绷&#xff0c;搞了半天。 Qt 平台插件 xcb 无法加载QOb…...

      Flutter 学习之旅 之 flutter 作为 module ,在 Android 的界面中嵌入Flutter界面功能的简单整理

      Flutter 学习之旅 之 flutter 作为 module &#xff0c;在 Android 的界面中嵌入Flutter界面功能的简单整理 目录 Flutter 学习之旅 之 flutter 作为 module &#xff0c;在 Android 的界面中嵌入Flutter界面功能的简单整理 一、简单介绍 二、在同一个布局中同时显示 Androi…...

      在android 系统上qnn sdk转换,运行模型示例

      前面讲了如何配置qnn sdk的环境&#xff0c;这一篇总结下qnn 实际转换一个onnx 模型&#xff0c;并运行的实现步骤。 设备&#xff1a; 1. ubuntu22.04 的Linux 服务器。 2. 一台android手机。 一、下载模型 from optimum.onnxruntime import ORTModelForSequenceClassifi…...

      docker安装Canal1.1.5,MySQL5.7踩坑

      docker安装Canal 前情提示安装MySQLdocker安装MySQL1. 拉取镜像2. 创建容器映射宿主机目录3. docker run 配置mysql重启mysql新建canal用户 安装Canal创建docker网络安装Canal1.拉取canal镜像2.创建目录3.运行容器 踩坑问题1 前情提示 关于版本问题&#xff0c;官方也没有详细…...

      SpringBoot 接口国际化i18n 多语言返回 中英文切换 全球化 语言切换

      介绍 Spring Boot通过MessageSource接口来实现国际化&#xff0c;它可以加载不同的消息资源文件&#xff0c;通常是.properties格式。通过定义不同的语言文件&#xff08;例如&#xff1a;messages_en.properties、messages_zh.properties等&#xff09;&#xff0c;可以根据用…...

      C++ 嵌套类 (详解 一站式讲解)

      目录 嵌套类 嵌套类的定义 嵌套类结构的访问权限 pimpl模式&#xff08;了解&#xff09; 嵌套类 嵌套类的定义 首先介绍两个概念&#xff1a; 类作用域&#xff08;Class Scope&#xff09; 类作用域是指在类定义内部的范围。在这个作用域内定义的成员&#xff08;包括…...