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

Linux学习(十五)(故障排除(ICMP,Ping,Traceroute,网络统计,数据包分析))

故障排除是任何 Linux 用户或管理员的基本技能。这涉及识别和解决 Linux 系统中的问题。这些问题的范围包括常见的系统错误、硬件或软件问题、网络连接问题以及系统资源的管理。Linux 中的故障排除过程通常涉及使用命令行工具、检查系统和应用程序日志文件、了解系统进程,有时还涉及深入研究 Linux 内核。

有效故障排除的关键是了解 Linux 的工作原理并熟悉常见的命令行工具。此外,能够解释错误消息、使用 Linux 的内置调试工具以及了解常见问题症状可以加快解决时间。

# example of using a command-line tool for troubleshooting
top

该命令是一种常用的故障排除工具,可提供系统上运行的进程的动态实时视图。它对于识别可能导致性能问题的资源密集型进程特别有用。top

🕵️♂️ Linux故障排除就像侦探破案

核心思路: 像侦探一样收集线索(日志)、分析证据(系统状态)、锁定嫌犯(问题根源)


🚨 案件调查步骤

1️⃣ 现场勘查(查看系统状态)

top                  # 查看实时"人流监控"(进程资源占用)
htop                 # 升级版监控(更直观,支持鼠标操作)
 
  • 关键线索:CPU占用90%的"可疑分子"(异常进程)

  • 行动:按P按CPU排序,按k终止可疑进程

2️⃣ 调取监控(查看日志)

journalctl -xe       # 查看系统"监控录像"(最新日志)
tail -f /var/log/syslog  # 实时追踪"案发现场"
 
  • 常见案发现场

    • /var/log/auth.log → 登录安全记录

    • /var/log/nginx/error.log → Web服务错误

3️⃣ 排查物证(检查硬件)

dmesg | grep -i error  # 检查"物证报告"(硬件错误)
smartctl -a /dev/sda  # 检测硬盘"健康状态"

📌 作用:查看系统日志,找出可能的硬件错误

解析
  • dmesg 👉 显示系统日志,包含开机信息、硬件检测、驱动加载等内容。
  • | 👉 管道操作符,把 dmesg 的输出传给 grep 处理。
  • grep -i error 👉 搜索日志中**包含“error”(错误)**的行,-i 让匹配不区分大小写。
示例
dmesg | grep -i error

如果系统有错误,可能会输出:

[  145.123456] ata1.00: failed command: READ FPDMA QUEUED
[  145.123789] blk_update_request: I/O error, dev sda, sector 123456
[  200.987654] EXT4-fs error (device sda1): ext4_find_entry:xxxx: reading directory #xxxxxxx offset xxxx

解释

  • I/O error, dev sda 👉 硬盘读写错误。
  • EXT4-fs error 👉 磁盘文件系统出错,可能有坏道。

结论:如果发现错误日志,说明硬件(尤其是硬盘)可能有问题,建议进一步检测。

📌 作用:查询硬盘的 S.M.A.R.T.(自我监测分析报告)信息,判断硬盘是否健康

解析
  • smartctl 👉 一个检测硬盘健康状态的工具,属于 smartmontools 软件包。
  • -a 👉 显示所有 S.M.A.R.T. 信息(包括温度、坏道、寿命等)。
  • /dev/sda 👉 指定要检测的硬盘(sda 是系统的第一块硬盘)。
示例
smartctl -a /dev/sda

可能输出:

ID# ATTRIBUTE_NAME          VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE5  Reallocated_Sector_Ct   10    10    36    Pre-fail  Always   FAILING_NOW  1009  Power_On_Hours         30000  100   0     Old_age   Always   -           30000
194  Temperature_Celsius    35     50    0     Old_age   Always   -           35

解释

  • Reallocated_Sector_Ct(重映射扇区数)👉 数值大于 0 说明硬盘有坏道,100 说明已经有 100 个坏块。
  • Power_On_Hours(开机时间)👉 硬盘运行时间,30000 小时(≈3.4 年)。
  • Temperature_Celsius(温度)👉 硬盘温度,35℃(正常)。

结论

  • 如果 Reallocated_Sector_Ct 有值,说明硬盘有坏道,建议更换硬盘!
  • 如果 Power_On_Hours 太高(>40,000 小时),说明硬盘已经很老,容易出问题。
  • 如果温度高于 50℃,可能需要改善散热。

解释

  • Reallocated_Sector_Ct(重映射扇区数)👉 数值大于 0 说明硬盘有坏道,100 说明已经有 100 个坏块。
  • Power_On_Hours(开机时间)👉 硬盘运行时间,30000 小时(≈3.4 年)。
  • Temperature_Celsius(温度)👉 硬盘温度,35℃(正常)。

结论

  • 如果 Reallocated_Sector_Ct 有值,说明硬盘有坏道,建议更换硬盘!
  • 如果 Power_On_Hours 太高(>40,000 小时),说明硬盘已经很老,容易出问题。
  • 如果温度高于 50℃,可能需要改善散热。

总结

命令作用主要关注点
`dmesggrep -i error`查系统日志,检查硬件错误
smartctl -a /dev/sda查询硬盘健康状况Reallocated_Sector_CtPower_On_HoursTemperature_Celsius

💡 如果 dmesg 发现 I/O 错误,或者 smartctl 发现坏道,说明硬盘可能要坏了,需要尽快备份数据! 🚨


🔧 侦探工具箱(常用命令)

工具用途生活比喻
strace追踪程序行为给嫌疑人戴定位器
nc/telnet测试网络端口检查电话线路是否畅通
df -h查看磁盘空间检查仓库是否爆满
ping测试网络连通性测试对讲机信号
lsof查看文件占用情况查谁在占用保险箱

🌰 经典案件侦破

案件:网站突然无法访问

  1. 初步勘查

    systemctl status nginx  # 发现服务异常停止
  2. 调取监控

    journalctl -u nginx --since "10 minutes ago"  # 发现端口冲突
     
  3. 锁定嫌犯

    ss -tulnp | grep :80  # 发现Apache占用了80端口
     
  4. 解决问题

    sudo systemctl stop httpd  # 停用Apache
    sudo systemctl start nginx # 启动Nginx
     

⚠️ 侦探守则(注意事项)

  1. 保护现场:遇到问题先别重启,保留现场证据

  2. 逐项排查:从简单到复杂(先检查网络→服务→配置)

  3. 善用手册man 命令 或 命令 --help 获取线索

  4. 隔离测试:最小化重现环境,避免干扰


💡 破案技巧

  • 时间回溯

    sudo grep "ERROR" /var/log/* -r --since "2023-10-01"
  • 压力测试

    stress --cpu 8 --timeout 60s  # 模拟高负载测试
  • 快照还原

    timeshift --restore  # 使用系统快照回到案发前
     

总结: 记住这个破案口诀:

一查状态二看报错,  
三验网络四测硬件,  
日志监控是金钥匙,  
隔离验证保平安。
 

掌握这些技能,你就能成为Linux世界的"福尔摩斯"! 🎩🔍

ICMP

Internet 控制消息协议 (ICMP) 是一种支持协议,主要由网络设备用于将更新或错误信息传达给其他设备。在 Linux 环境中排查网络问题时,ICMP 是一个关键方面。它可用于发送错误消息,例如,指示请求的服务不可用或无法访问主机或路由器。ICMP 还可用于中继查询消息。

在 Linux 系统中,与 ICMP 相关的常见命令行工具包括 和 ,两者都用于诊断网络状态,通常是故障排除工作的一部分。pingtraceroute

# Use of ICMP via the ping command to send an echo request to a specific host
ping www.google.com

这个简单而有效的工具在任何 Linux 网络故障排除库中都不应错过。

好的,我用「快递员送包裹」的比喻来解释 ICMP 协议和相关工具,让你像查快递一样排查网络问题:


ICMP 协议 = 快递员之间的沟通纸条

想象你要寄快递(发送数据包),但中途可能出问题:

  • 🚚 ​正常流程:快递员(数据包)顺利到达目的地
  • ❌ ​异常情况:地址写错、路断了、对方拒收
    这时快递员会用 ICMP 协议写「纸条」通知你问题在哪!

ICMP 的两种核心功能

  1. 报错通知​(类似快递退回单)
    • 例子:Destination Unreachable(地址不存在)
    • 场景:访问的网站 IP 写错了,路由器返回这个错误
  2. 网络探测​(类似物流跟踪)
    • 例子:Echo Request/Reply(回声检测)
    • 场景:用 ping 测试是否能到达目标服务器

Linux 中的 ICMP 工具:快递追踪器

1️⃣ ping:检查包裹是否能送达
ping www.google.com  # 向谷歌服务器发送探测包

输出示例👇

64 bytes from 172.217.160.68: icmp_seq=1 ttl=54 time=25.3 ms
64 bytes from 172.217.160.68: icmp_seq=2 ttl=54 time=26.1 ms

结果解读

  • time=25.3 ms → 网络延迟(越低越好)
  • ttl=54 → 数据包经过的路由器跳数(初始值通常64或128)
  • 如果显示 请求超时,说明网络不通或对方屏蔽了 ICMP

适用场景

  • 快速测试网站/IP 是否能访问
  • 检查本地网络是否正常(先 ping 路由器IP

2️⃣ traceroute:跟踪包裹的运输路线
traceroute www.baidu.com  # 显示数据包经过的所有路由器

输出示例👇

 1  192.168.1.1 (192.168.1.1)  2.123 ms  1.987 ms  1.845 ms  2  10.10.10.1 (10.10.10.1)  10.234 ms  10.123 ms  9.876 ms  3  202.96.128.86 (电信骨干网)  25.678 ms  26.123 ms  25.987 ms  ...  

原理

  • 故意发送 TTL(存活时间)递增的数据包
  • 每经过一个路由器,TTL 减1,当 TTL=0 时路由器返回 ICMP 超时消息
  • 通过这种方式「逼」路由器们暴露自己的 IP

适用场景

  • 定位网络卡在哪一跳(比如第3跳延迟暴增)
  • 排查跨国网站访问慢的问题

ICMP 的常见错误类型

ICMP 错误类型比喻可能原因
Destination Unreachable快递员说「地址不存在」目标 IP 错误/防火墙拦截
Time Exceeded快递员说「包裹运输超时」网络环路或 TTL 设置过小
Redirect快递员说「换条更快的路走」路由器优化路径
Source Quench快递员说「发慢点,我忙不过来了」网络拥堵(现已很少使用)

实际故障排查案例

问题:电脑能上微信但打不开网页

排查步骤

  1. ping 114.114.114.114 → 测试是否能连国内 DNS
    • 如果通 → 说明网络连接正常
    • 不通 → 检查本地网络或网线
  2. ping www.baidu.com → 测试域名解析
    • 如果通 → 浏览器问题或 HTTPS 证书错误
    • 不通 → DNS 设置错误(修改 /etc/resolv.conf

ICMP 的局限性

  • 可能被防火墙屏蔽:很多服务器关闭 ICMP 响应(防攻击)
  • 不代表端口可用:即使能 ping 通,不代表 80(HTTP)端口开放
    • 端口检测需用 telnet 目标IP 80 或 nc -zv 目标IP 80

其他相关工具

  • ​**mtr**:ping + traceroute 合体版,实时监控每跳的丢包率
    mtr www.github.com  # 动态显示网络路径质量
  • ​**nmap**:检测目标是否屏蔽 ICMP
    nmap -sn 192.168.1.1  # 用多种方式探测主机是否在线

总结
ICMP 就像网络世界的「信使系统」,ping 是打电话问对方「在吗?」,traceroute 是查通话经过哪些中转站。掌握这些工具,你就能像侦探一样顺藤摸瓜找到网络问题的源头!

ping

Ping是在 Linux作系统上进行网络故障排除时的关键工具。该命令允许您检查主机与目标计算机(可以是另一台计算机、服务器或网络上的任何设备)之间的连接状态。此诊断工具将 ICMP(互联网控制消息协议)ECHO_REQUEST数据包发送到目标主机并侦听ECHO_RESPONSE返回,从而深入了解连接的运行状况和速度。ping

ping <target IP or hostname>

如果到达目标主机时遇到任何问题,可以识别此问题并提供反馈,使其成为排查网络问题的重要组件。在许多情况下,它是 Linux 用户在诊断网络连接问题时首先使用的工具。ping

好的,用「打电话」和「回声探测」的比喻来解释 ping,保证你听完就能掌握精髓:


​**ping = 网络世界的「电话测试仪」​**

想象你想确认朋友手机是否开机,你会:
1️⃣ ​打电话 → 如果朋友接了,说明线路正常
2️⃣ ​听嘟嘟声 → 如果响铃后无人接听,可能对方关机
3️⃣ ​数响铃时间 → 判断距离远近(延迟高低)

ping 就是用 ICMP 协议做类似的事情,只不过探测对象是网络设备!


基础用法:打一通网络电话

ping www.baidu.com  # 给百度服务器打电话

输出示例👇

PING www.a.shifen.com (14.119.104.189) 56(84) bytes of data.
64 bytes from 14.119.104.189: icmp_seq=1 ttl=54 time=28.3 ms
64 bytes from 14.119.104.189: icmp_seq=2 ttl=54 time=27.9 ms
^C  # 按 Ctrl+C 停止
--- 统计报告 ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 27.934/28.114/28.295/0.180 ms

关键信息解读

  • ​**time=28.3 ms** → 延迟(越低网速越快,游戏玩家最关注这个)
  • ​**ttl=54** → 初始值通常 64(Linux)或 128(Windows),每经过一个路由器减1
    • 如果看到 ttl=112,说明经过了 128-112=16 个路由器
  • ​**0% packet loss** → 丢包率(>5% 可能影响视频通话)

常见场景与操作技巧

场景1:快速测试网络通不通
ping -c 4 114.114.114.114  # 只打4次电话就挂断

输出

--- 114.114.114.114 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss  # 全通说明网络正常
场景2:检测网络稳定性(持续监控)​
ping -i 0.5 www.qq.com  # 每0.5秒打一次电话

用途

  • 玩游戏时检测网络是否波动
  • 按 Ctrl + \ 强制退出无限循环
场景3:排查「能上微信但打不开网页」​
ping 114.114.114.114     # 测试DNS服务器是否可达
ping www.baidu.com       # 测试域名解析是否正常

结论

  • 第一个通,第二个不通 → 可能是 DNS 问题(修改 /etc/resolv.conf
  • 两个都不通 → 检查路由器或光猫

常见错误与应对措施

错误1:未知的主机(DNS解析失败)​
ping: www.xxx.com: 未知的名称或服务

解决方案

  1. 换用 IP 测试:ping 8.8.8.8(Google DNS)
  2. 检查 DNS 设置:cat /etc/resolv.conf
错误2:请求超时(网络不通或屏蔽)​
From 192.168.1.1 icmp_seq=1 Destination Host Unreachable

排查步骤

  1. ping 路由器IP(如 192.168.1.1) → 确认内网是否正常
  2. ping 8.8.8.8 → 确认外网是否连通
  3. 目标服务器可能禁用了 ICMP(比如某些云主机)
错误3:高延迟/高丢包
time=350 ms  # 延迟高于 200ms 就影响视频会议
50% packet loss  # 丢包严重会导致卡顿

应对

  • 用 mtr 目标IP 检查哪一跳路由器有问题
  • 联系网络运营商报修

高级技巧(参数大全)​

参数命令示例作用
-cping -c 5 IP指定发送次数
-iping -i 0.1 IP加快探测频率(默认1秒)
-sping -s 1000 IP加大数据包尺寸(测试大包传输)
-Wping -W 3 IP超时时间设为3秒(默认10秒)
-qping -q -c 10 IP只显示统计结果(安静模式)

总结:ping 的三大核心作用

  1. 网络连通性测试 → 确认设备是否在线
  2. 延迟与稳定性监测 → 评估网络质量
  3. 初步故障定位 → 区分是内网问题还是外网问题

排查网络问题的黄金口诀

一 ping 网关,二 ping DNS,三 ping 公网IP  
全都不通查网线,部分不通找路由!

路由跟踪

Traceroute 是一种网络诊断工具,在 Linux 系统中广泛用于故障排除。它旨在显示数据包从运行 traceroute 的系统到指定目标系统或网站的路径。它用于识别路由问题、提供延迟测量,并在数据包通过 Internet 时弄清楚网络结构。

沿路由的每次跳转都会测试多次(默认值为 3,但可以更改),并显示每个数据包的往返时间。如果某些数据包无法到达目的地,traceroute 可以帮助诊断故障发生的位置。

在 Linux 中跟踪路由可以通过执行命令来实现,该命令允许您发现 Internet 协议数据包在到达目的地时遵循的路由。traceroute

$ traceroute www.example.com

我来用快递送货的例子帮你理解 traceroute 的工作原理:

假设你从北京寄快递到上海的朋友家,但快递中途要经过多个中转站:

  1. 你寄出快递时在包裹上标记"有效期=1天"

  2. 第一个中转站(天津)收到后发现有效期只剩0天,就会:

    • 销毁包裹

    • 给你发回一条短信:"包裹在天津超时了"

  3. 你记录下天津站的响应时间(比如0.5ms)

  4. 接着你重新寄出包裹,标记"有效期=2天"

  5. 这次包裹能到达第二个中转站(济南),同样会收到超时通知

  6. 重复这个过程直到包裹到达上海朋友家

📊 执行 traceroute www.example.com 的输出示例:

复制

1  192.168.1.1 (路由器)  1.234 ms  1.456 ms  1.567 ms
2  61.128.192.1 (广州电信)  5.678 ms  5.712 ms  5.801 ms
3  202.97.12.34 (骨干网节点)  12.345 ms  12.401 ms  12.512 ms
...
10  203.0.113.5 (目标服务器)  38.901 ms  39.012 ms  39.123 ms

🔑 关键点解析:

  • 每行代表一个网络节点(路由器/服务器)

  • 三个时间值对应三次探测的往返延迟

  • 星号(*) 表示该次探测未得到响应

  • 延迟突增的位置往往暗示网络瓶颈

💡 实用技巧:

  1. 用 -I 参数使用ICMP协议(类似ping)
    traceroute -I baidu.com

  2. 遇到星号时尝试增加探测次数:
    traceroute -q 5 github.com

  3. 限制最大跳数(适合内网排查):
    traceroute -m 10 192.168.0.100

⚠️ 注意:某些网络设备会屏蔽traceroute探测,这时候会出现连续星号,并不一定代表网络故障。

Netstat

Netstat 是 network statistics 的缩写,是 Linux 系统中用于网络故障排除和性能测量的内置命令行工具。它提供协议的统计信息、开放端口列表、路由表信息和其他重要的网络详细信息。管理员和开发人员使用 netstat 来检查网络问题并了解系统如何与其他系统通信。

由于它支持各种命令行选项,它的功能得到了扩展,这些选项可以单独或组合使用来微调输出。这些可能包括显示数字地址而不是名称 ()、持续监视 () 或发现特定协议上的连接 (, )。-n -c -t -u

以下是 netstat 通常如何使用的简短片段:

# List all connections with numerical values.
netstat -n

好的,用「电话总机控制台」来比喻 netstat,让你像查电话线路一样掌握网络连接状态:


​**netstat = 网络连接的电话交换机面板**

想象你管理一个公司的电话系统,需要知道:

  1. 哪些分机正在通话 → 查看活动连接
  2. 哪些分机等待来电 → 查看监听端口
  3. 电话线路路由表 → 查看网络路由配置

netstat 就是这样一个实时显示所有「电话线路」(网络连接)状态的控制面板!


常用场景速查手册

场景1:查看所有正在通话的线路(活动连接)​
netstat -natp  # 组合参数大法

参数解释

  • -n:显示数字地址(不解析域名)
  • -a:显示所有连接(包括监听中的)
  • -t:TCP协议
  • -p:显示进程PID/名称

输出示例👇

Proto Recv-Q Send-Q Local Address    Foreign Address     State       PID/Program name  
tcp        0      0 192.168.1.100:22 110.242.68.3:56789   ESTABLISHED 1234/sshd: user  
tcp6       0      0 :::80            :::*                LISTEN      5678/nginx

关键列解读

  • Local Address:本机IP和端口
  • Foreign Address:对方IP和端口
  • State:连接状态(ESTABLISHED=通话中,LISTEN=待机中)
  • PID/Program:哪个程序在使用这个连接

场景2:查谁在偷听电话(监听中的端口)​
netstat -tulnp  # 组合拳出击

参数解释

  • -t:TCP协议
  • -u:UDP协议
  • -l:仅显示监听中的端口
  • -p:显示进程信息

输出示例👇

Proto Recv-Q Send-Q Local Address   Foreign Address    State    PID/Program  
tcp        0      0 0.0.0.0:22      0.0.0.0:*          LISTEN   1234/sshd  
tcp6       0      0 :::80           :::*               LISTEN   5678/nginx  
udp        0      0 0.0.0.0:68      0.0.0.0:*                  7890/dhclient

典型应用

  • 确认Web服务器是否在监听80端口
  • 检查是否有可疑后门程序在监听端口

场景3:查电话线路统计(网络流量统计)​
netstat -s  # 查看协议统计信息

输出重点

Tcp:3245 active connections openings  12 failed connection attempts  892 segments retransmitted  Ip:25675 total packets received  0 invalid addresses  

用途

  • 诊断TCP重传率过高(网络质量差)
  • 检查UDP丢包情况

实用排查案例

问题1:端口被占用导致服务启动失败

步骤

# 1. 查哪个进程占用了80端口
netstat -tulnp | grep :80# 2. 根据PID结束进程
kill -9 5678
问题2:怀疑服务器被植入后门

步骤

netstat -natp | grep ESTAB  
# 重点检查Foreign Address是否有陌生IP连接

参数对照表(新手必存)​

参数作用常用组合
-n禁用域名解析(显示IP)-nat / -nau
-a显示所有连接-a
-t仅显示TCP协议-tuln
-u仅显示UDP协议-tuln
-l仅显示监听中的端口-tuln
-p显示进程信息-p
-s统计各协议数据量-s
-r显示路由表-r

升级替代工具:ss 命令

特点:更快更现代(逐渐替代 netstat
常用命令

ss -tunlp  # 参数含义与netstat类似

总结口诀

查连接用 netstat,参数组合别搞差  
-n 显示纯数字,-a 所有连接查  
-t TCP u是UDP,-l 监听要记牢  
-p 显示进程号,-s 统计顶呱呱  
遇到问题别慌张,先查端口后杀它!

数据包分析

在 Linux 系统管理和网络故障排除领域,数据包分析是一项关键技能。它涉及使用工具和技术来捕获和分析网络流量。通过检查通过网络发送和接收的数据,系统和网络管理员可以识别和排查性能不佳、连接问题和安全漏洞等问题。

tcpdump 和 Wireshark 等工具是实现此目的的常见实用程序。它们显示数据包级别的详细信息,以提供网络活动的完整图片。这些对于网络诊断和调试与网络协议相关的问题特别有用。

在 Linux 系统命令中使用 tcpdump 捕获数据包的基本示例可能如下所示:

sudo tcpdump -i eth0

eth0 是 Linux 系统中 ​第一个以太网网络接口的名称,可以理解为你的电脑或服务器上的第一个物理网卡(或虚拟网卡)。
它的命名规则是:​**"eth"(Ethernet 的缩写)+ 数字编号**,比如 eth0eth1 分别代表第一个、第二个以太网接口。


通俗解释

想象你的电脑有多个「网线插口」:

  • eth0 → 第一个插口(比如连接路由器的网线)
  • eth1 → 第二个插口(如果有额外的网卡)
  • wlan0 → 无线网卡(Wi-Fi)
  • lo → 虚拟的「回环接口」(用于本机内部通信)

命令中的用途

在 sudo tcpdump -i eth0 host 192.168.1.100 中:

  • -i eth0 表示 ​监听(抓包)通过 eth0 接口的网络流量
  • 如果不指定 -itcpdump 会默认监听第一个非回环接口(通常是 eth0

如何查看所有网络接口?

ip link show  # 查看所有网络接口的名称和状态

输出类似👇:

1: lo: <LOOPBACK,UP> ...   # 回环接口(虚拟)
2: eth0: <BROADCAST,UP> ... # 第一个以太网接口(物理网卡)
3: wlan0: <BROADCAST,UP> ... # 无线网卡

常见接口类型

接口名称用途示例场景
eth0物理有线网卡连接路由器的网线
wlan0无线网卡连接 Wi-Fi
lo本地回环接口(虚拟)本机内部服务通信(如访问 127.0.0.1)
docker0Docker 创建的虚拟接口容器网络通信
tun0VPN 隧道接口连接 OpenVPN 时使用

为什么需要指定 eth0

  • 如果服务器有多个网卡(比如 eth0 接内网,eth1 接外网),指定接口可以精准抓包
  • 避免抓取无关流量(比如 lo 回环接口的本地通信)

扩展知识:现代 Linux 的接口命名

新版本 Linux 可能使用 ​基于固件/拓扑的命名规则​(如 enp0s3ens33),但原理与 eth0 相同。
可以通过以下命令查看:

ls /sys/class/net  # 列出所有网络接口名称

此命令捕获并显示通过网络接口传输或接收的数据包。eth0

用物流中心监控系统来比喻数据包分析的工作原理:

场景:假设你管理一个大型国际物流中心,所有包裹都要经过分拣扫描仪

📦 核心工具解析

1. tcpdump - 实时包裹扫描仪

sudo tcpdump -i eth0 host 192.168.1.100
  • 功能:就像在传送带上安装的X光扫描仪

  • 操作员视角

    • 看到所有经过eth0传送带的包裹(数据包)

    • 只关注发往/来自192.168.1.100货架的包裹

    • 实时显示包裹标签信息(源/目的IP、端口等)

2. Wireshark - 包裹分析实验室

tshark -r capture.pcap  # 命令行版分析工具
  • 功能:将扫描记录带回实验室深度检测

  • 技术员视角

    • 拆解包裹外层包装(解码协议头)

    • 化验包裹内容物(查看Payload数据)

    • 发现异常包裹(恶意流量分析)

🛠️ 实战案例演示

需求:排查网站访问缓慢问题

步骤

  1. 启动物流监控(开始抓包)

    sudo tcpdump -i eth0 port 80 -w web.pcap
  2. 复现问题(访问目标网站)

  3. 停止抓包后分析:

    wireshark web.pcap  # 图形化分析

关键分析点

  • 查找红色标记的破损包裹(TCP重传包)

  • 检查包裹到达时间间隔(网络延迟)

  • 识别异常运输路线(错误路由)

📋 数据包标签解读示例

15:03:22.123456 IP 192.168.1.5.54321 > 203.0.113.10.80: Flags [P.], seq 1:100, ack 1, win 256, length 99
  • 时间戳:15点03分22秒

  • 包裹流向:从192.168.1.5的54321端口 -> 203.0.113.10的80端口

  • 包裹状态:重要数据(PUSH标志)

  • 物流编号:包裹序列号1-100,已确认收到1号包裹

  • 包裹尺寸:99字节

🔧 实用技巧锦囊

  1. 精准过滤

    tcpdump 'tcp port 443 and (host 1.1.1.1 or host 8.8.8.8)'
    ​host 1.1.1.1:目标或来源是 1.1.1.1(Cloudflare 的 DNS 服务器)。
    ​host 8.8.8.8:目标或来源是 8.8.8.8(Google 的 DNS 服务器)。
    ​or:逻辑「或」,满足其中一个 IP 即可。
    ​and:逻辑「与」,同时满足 TCP 443 端口和 IP 条件。
    扩展:常见协议与端口对照
    端口	协议	用途
    443	TCP	HTTPS 加密网页
    53	UDP/TCP	DNS 域名解析
    80	TCP	HTTP 明文网页
    22	TCP	SSH 安全登录
    ​示例输出
    15:30:22.123 IP 192.168.1.100.54321 > 1.1.1.1.443: Flags [S], seq 123456, win 64240
    15:30:22.456 IP 1.1.1.1.443 > 192.168.1.100.54321: Flags [S.], seq 654321, ack 123457, win 65535 ​
    Flags [S]:TCP 握手的第一步(SYN)。​Flags [S.]:SYN-ACK 响应,表示服务端同意建立连接。
    
  2. 抓取内容(慎用):

    命令作用

    tcpdump -A -s0 port 21 就像在快递分拣中心 ​拆开所有发往 21 号货架(FTP 端口)的包裹,并直接查看里面的纸质文件内容
    由于 FTP 协议默认不加密,此命令可捕获 ​用户名、密码、传输的文件名 等敏感信息。


    参数拆解

    参数作用类比解释
    -A以 ASCII 格式显示数据包内容把包裹里的文件转成可读的文字
    -s0抓取完整数据包(不截断)拆开整个包裹,不遗漏任何内容
    port 21只监控 FTP 控制端口流量只检查 21 号货架的包裹

    典型输出示例

    17:30:45.123 IP 192.168.1.100.54321 > 203.0.113.5.21: Flags [P.], seq 1:15, ack 1, win 502
    E..5..@.@.X...........5...P...e....5....USER alice<0d0a>  # ← 用户名明文!
    17:30:45.456 IP 192.168.1.100.54321 > 203.0.113.5.21: Flags [P.], seq 15:29, ack 1, win 502
    E..5..@.@.X...........5...P...e....5....PASS p@ssw0rd<0d0a>  # ← 密码明文!
    tcpdump -A -s0 port 21  # 显示FTP明文内容
    
  3. 流量统计

    你提到的这条命令是使用 tshark(Wireshark 的命令行版本)对抓包文件进行流量统计分析的实用技巧。让我们用物流数据分析的场景来类比解释:


    🚚 命令解析

    tshark -r traffic.pcap -qz io,stat,60
    参数/语法技术含义现实比喻
    -r traffic.pcap指定读取(read)的抓包文件调取「高速公路监控中心」某天的监控录像带
    -q安静模式(quiet),不显示实时抓包信息分析时不显示监控实时画面,只输出统计报表
    -z启动统计模块(z代表"statistics")启用「智能交通分析系统」
    io,stat统计模块名称:输入输出统计(Input/Output Statistics)统计每个时段的车辆流量和货物运输量
    60统计间隔(单位:秒)将监控录像按每分钟分段分析
  4. 分解说明:
  5. -r traffic.pcap
    ➡️ 相当于打开「物流中心过去24小时的监控录像」(读取已保存的抓包文件)

  6. -qz io,stat,60
    ➡️ 执行「自动化的运输报表生成系统」,参数分解:

    • io,stat:统计输入输出流量(Input/Output Statistics)

    • 60:将监控录像按60秒为单位分段分析


  7. 📊 典型输出示例

    ===================================================================
    | Duration | Packets | Bytes |  bps  |   B/s   |   MB   |
    |   60.00  |  12456  |  98M  | 13107 | 1638.4  |  1.56  |
    |   60.00  |   8543  |  73M  |  9733 | 1216.6  |  1.16  |
    |   60.00  |  15234  | 124M  | 16512 | 2064.0  |  1.97  |
    ===================================================================

    📦 数据列解读(物流中心版)

  8. Duration (时长)
    ➡️ 分析的时间窗口(每60秒一个统计周期)

  9. Packets (数据包数量)
    ➡️ 该时段经过传送带的包裹总数(1个包裹=1个数据包)

  10. Bytes (字节数)
    ➡️ 该时段运输的货物总重量(1字节=1克货物)

  11. bps (bits per second)
    ➡️ 传送带实时负载率(比特/秒,1字节=8比特)

  12. B/s (Bytes per second)
    ➡️ 实际货运吞吐量(字节/秒)

  13. MB (兆字节)
    ➡️ 该时段运输的货物总重量(换算为MB单位)


  14. 🔍 实战应用场景

    案例:排查网络带宽异常
  15. 发现异常时段
    👉 观察哪段时间的「bps」或「MB」列数值异常增高

  16. 定位问题类型

    • 突发高bps + 高Packets → 可能遭遇DDoS攻击(海量小包)

    • 持续高MB + 正常Packets → 大文件传输/数据泄露

    • bps周期性波动 → 正常业务流量(如整点备份)

  17. 结合原始数据

    # 定位到异常时间段后,提取该时段详细通信记录
    editcap -A "2023-08-01 14:30:00" -B "2023-08-01 14:31:00" traffic.pcap suspicious.pcap
    wireshark suspicious.pcap
  18. 变体3:TopN 会话排行

    tshark -r traffic.pcap -qz conv,tcp  # 统计TCP会话流量TOP榜

    💡 注意事项

  19. 权限问题:分析抓包文件时可能需要 sudo 权限

  20. 时间精度:统计粒度(60秒)可根据需要调整,建议:

    • 故障排查:5-10秒精细粒度

    • 趋势分析:300-600秒大粒度

  21. 数据可视化:可将输出导入Excel生成流量曲线图

  22. (扩展思考:对比 iftop 和 nload 等实时流量监控工具,这个命令的优势在于能对历史数据进行回溯分析)


    ⚙️ 扩展技巧

    变体1:实时流量监控

    tshark -i eth0 -qz io,stat,10  # 每10秒刷新一次实时统计
    变体2:协议分布统计

    tshark -r traffic.pcap -qz io,stat,60,http,tcp  # 单独统计HTTP和TCP流量
    tshark -r traffic.pcap -qz io,stat,60  # 每分钟流量统计

🚨 安全检测示例

检测DDOS攻击

tcpdump -nn 'dst port 80' | awk '{print $3}' | sort | uniq -c | sort -nr
 抓取快递包裹:tcpdump -nn 'dst port 80'
  • ​**-nn**:不解析域名和端口名称(保持数字格式,类似快递单只写编号不写名字)
  • ​**dst port 80**:只抓取目标端口是 80 的流量(HTTP 包裹)
  • 输出示例
    12:34:56.789 IP 192.168.1.100.54321 > 203.0.113.5.80: Flags [S], ...
统计包裹数量:uniq -c
  • ​**-c**:统计每个地址出现的次数
  • 输出
    1 198.51.100.10.80
    2 203.0.113.5.80
按数量倒序排列:sort -nr
  • ​**-n**:按数字排序(默认按字符排序会出错,比如 10 < 2)
  • ​**-r**:逆序(从大到小)
  • 最终输出
    2 203.0.113.5.80
    1 198.51.100.10.80

记忆口诀

一抓二提三排序,四统五排结果齐。
-nn 抓包禁解析,awk 提列看第三。
sort 整理做铺垫,uniq -c 数出现。
sort -nr 倒排序,流量统计最清晰。

输出示例:

3258 61.177.172.10
1245 183.251.61.102
987 122.114.27.214
 

显示:IP 61.177.172.10在短时间内发送了3258个到80端口的请求

📚 学习路径建议

  1. 先掌握基础过滤器语法

  2. 从分析HTTP流量开始练习

  3. 逐步过渡到TCP流重组分析

  4. 最后挑战TLS加密流量分析

(小贴士:Wireshark官网提供各种协议的示例抓包文件,是绝佳的学习资料)

相关文章:

Linux学习(十五)(故障排除(ICMP,Ping,Traceroute,网络统计,数据包分析))

故障排除是任何 Linux 用户或管理员的基本技能。这涉及识别和解决 Linux 系统中的问题。这些问题的范围包括常见的系统错误、硬件或软件问题、网络连接问题以及系统资源的管理。Linux 中的故障排除过程通常涉及使用命令行工具、检查系统和应用程序日志文件、了解系统进程&#…...

SVN 拉取,文件冲突 解决办法

情景 svn 在拉取代码时 提示 已跳过&#xff0c;其余有冲突 &#xff0c;警告至少还有一个的文件处于冲突状态 导致文件拉取失败 一、原因 版本库和本地工作副本之间存在文件冲突&#xff0c;导致文件无法正常拉取。 二、 Terminal 窗口解决办法 1.查看冲突文件 在 Termin…...

【实战ES】实战 Elasticsearch:快速上手与深度实践-8.1.1基于ES的语义搜索(BERT嵌入向量)

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 基于Elasticsearch与BERT的语义搜索架构设计与实战1. 传统搜索的局限性与语义搜索的崛起1.1 关键词搜索 vs 语义搜索1.2 Elasticsearch向量检索演进历程关键版本特性对比 2.…...

【Node.js】--- win11安装 Node.js

在编程的艺术世界里&#xff0c;代码和灵感需要寻找到最佳的交融点&#xff0c;才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里&#xff0c;我们将共同追寻这种完美结合&#xff0c;为未来的世界留下属于我们的独特印记。 【Node.js】--- win11安装 Node.js 开发环…...

【技海登峰】Kafka漫谈系列(九)SpringBoot整合Kafka多数据源配置

【技海登峰】Kafka漫谈系列(九)SpringBoot整合Kafka多数据源配置 Kafka官方提供了基于Java实现的客户端kafka-clients,用于提供生产者和消费者的基本能力。在此基础上,Spring for Apache Kafka(spring-kafka)项目对该原生客户端进行了基于Spring特性的抽象与封装,实现了基…...

【MySQL篇】基本查询实战OJ

本篇是基于上篇mysql基本查询的一些OJ题 MySQL基本查询传送门&#xff1a;【MySQL篇】MySQL基本查询详解-CSDN博客 批量插入数据_牛客题霸_牛客网 insert语句 insert into actor values (1,PENELOPE,GUINESS,2006-02-15 12:34:33); insert into actor values (2,NICK,WAHLBER…...

侯捷 C++ 课程学习笔记:C++内存管理机制

内存管理从平地到万丈高楼 内存管理入门&#xff08;Memory Management 101&#xff09; 需要具有动态分配并使用memory&#xff08;存储&#xff08;器&#xff09;&#xff0c;&#xff08;计算机的&#xff09;内存&#xff09;&#xff0c;使用过C标准库的容器&#xff0…...

java后端开发day31--集合进阶(一)-----Collection集合List集合数据结构1

&#xff08;以下内容全部来自上述课程&#xff09; 1.集合体系结构 List系列集合&#xff1a;添加的元素是有序、可重复、有索引。 Set系列集合&#xff1a;添加的元素是无序、不重复、无索引。 2.Collection集合 Collection是单列集合的祖宗接口&#xff08;不可直接创建…...

TA学习之路——1.4 MVP矩阵运算

1.变换矩阵的意义 1.将3D物体转化到2D平面 2.为各个空间的运用做准备 2.MVP矩阵代表什么 MVP矩阵分别是模型&#xff08;Model&#xff09;、观察&#xff08;View&#xff09;、投影&#xff08;Projecttion)三个矩阵。我们顶点坐标起始于局部空间&#xff08;Local Space)…...

Java数据结构第二十期:解构排序算法的艺术与科学(二)

专栏&#xff1a;Java数据结构秘籍 个人主页&#xff1a;手握风云 目录 一、常见排序算法的实现 1.1. 直接选择排序 1.2. 堆排序 1.3. 冒泡排序 1.4. 快速排序 一、常见排序算法的实现 1.1. 直接选择排序 每⼀次从待排序的数据元素中选出最小的⼀个元素&#xff0c;存放在…...

【机器学习】主成分分析法(PCA)

【机器学习】主成分分析法&#xff08;PCA&#xff09; 一、摘要二、主成分分析的基本概念三、主成分分析的数学模型五、主成分分析法目标函数公式推导&#xff08;梯度上升法求解目标函数&#xff09;六、梯度上升法求解目标函数第一个主成分七、求解前n个主成分及PCA在数据预…...

perl、python、tcl语法中读写Excel的模块

perl、python、tcl语法中读写Excel的模块 perl、python、tcl语法中存在读写xls和xlsx格式的模块分别有&#xff1a; python ‌读取 Excel‌ ‌xlrd‌&#xff1a;支持传统 .xls 格式的读取‌ pandas‌&#xff1a;通过 read_excel() 方法支持 .xls 和 .xlsx 格式‌ ‌写入 …...

libwebsockets实现异步websocket客户端,服务端异常断开可重连

libwebsockets websocket客户端基本流程网上都有&#xff0c;我只额外优化了重连机制。 在服务器异常断开时不触发LWS_CALLBACK_CLOSED或LWS_CALLBACK_CLIENT_CONNECTION_ERROR&#xff0c;导致无法自动重连 通过定时检查链接是否可写入判断链接是否有效 // 判断wsi是否可用if …...

CAD球体密堆积3D插件V2.0

插件介绍 CAD球体密堆积3D插件V2.0版本可在AutoCAD内建立球体堆积模型&#xff0c;插件采取模拟球体在重力作用下的堆积行为&#xff0c;可生成超密堆积的几何模型及进行堆积过程的动态展示。 插件优化重力堆积物理引擎&#xff0c;新增堆积可视化界面&#xff0c;可直观查看…...

【Linux】线程池、单例模式、死锁

线程池 一.线程池1.日志和策略模式2.线程池1.Task.hpp2.Thread.hpp3.ThreadPool.hpp4.ThreadPool.cc 二.线程安全与重入问题三.线程安全的单例模式1.饿汉模式2.懒汉模式3.懒汉模式线程池1.ThreadPool.hpp2.ThreadPool.cc 四.死锁的概念1.死锁2.死锁的四个必要条件3.避免死锁 五…...

AI+视频监控电力巡检:EasyCVR视频中台方案如何赋能电力行业智能化转型

随着电力行业的快速发展&#xff0c;电力设施的安全性、稳定性和运维效率变得至关重要。传统视频监控系统在实时性、智能化及多系统协同等方面面临严峻挑战。EasyCVR视频中台解决方案作为一种先进的技术手段&#xff0c;在电力行业中得到了广泛应用&#xff0c;为电力设施的监控…...

centos8.0系统部署zabbix6.0监控

centos8.0系统部署zabbix6.0监控 一、部署过程1、确认系统版本2、主机基础环境设置3、安装MySQL 8.0数据库3.1 安装MySQL 8.0仓库3.2 安装软件3.3 设置root用户密码3.4 创建zabbix数据库&#xff0c;授权用户 4、配置zabbix6.0仓库5、安装zabbix服务端软件6、导入zabbix数据表7…...

江科大51单片机笔记【12】AT24C02(I2C总线)

写在前言 此为博主自学江科大51单片机&#xff08;B站&#xff09;的笔记&#xff0c;方便后续重温知识 在后面的章节中&#xff0c;为了防止篇幅过长和易于查找&#xff0c;我把一个小节分成两部分来发&#xff0c;上章节主要是关于本节课的硬件介绍、电路图、原理图等理论知识…...

电脑一直重启怎么解决 原因及解决方法

电脑一直重启的故障状态&#xff0c;不仅影响电脑的正常使用&#xff0c;还可能导致数据丢失或损坏。那么&#xff0c;电脑一直重启是什么原因呢&#xff1f;又该如何解决呢&#xff1f;下面将为大家介绍电脑一直重启的常见原因和解决方法&#xff0c;帮助您恢复电脑的正常工作…...

内网安全防护新思路 —— HFish + ELK 与 T-Pot 全面蜜罐系统比较分析

在当前网络安全环境日益复杂的背景下&#xff0c;企业和组织面临着来自外部与内部的多种威胁。为了更好地了解攻击者行为、捕获恶意活动并及时响应&#xff0c;部署蜜罐&#xff08;Honeypot&#xff09;系统已成为提升内网安全防护的重要手段。本文将重点介绍两种内网蜜罐防护…...

「 机器人 」扑翼飞行器通过总气动力控制四自由度运动方法

一、前言 在扑翼飞行中,总气动力(Total Aerodynamic Force)是指扑翼在运动过程中受到的所有空气动力作用的合力。它是由以下两种主要力的合成结果: 1. 升力(Lift, ):垂直于空气流方向的力,用于支持飞行器(或生物)的重量。 2. 阻力(Drag, ):平行于空气流方向的力,…...

写了一个二叉树构造函数和画图函数,方便debug

代码 class TreeNode(object):def __init__(self, val, leftNone, rightNone):self.val valself.left leftself.right rightdef construct_tree(nodes):if not nodes:return Noneroot TreeNode(nodes[0])queue [root]index 1while index < len(nodes):node queue.p…...

【prompt实战】知乎问题解答专家

本文原创作者&#xff1a;姚瑞南 AI-agent 大模型运营专家&#xff0c;先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗&#xff1b;多年人工智能行业智能产品运营及大模型落地经验&#xff0c;拥有AI外呼方向国家专利与PMP项目管理证书。&#xff08;转载需经授权&am…...

元组(Tuple)详解——c#

在C#中&#xff0c;元组&#xff08;Tuple&#xff09; 是一种轻量级的数据结构&#xff0c;用于将多个值组合成一个单一的对象。元组非常适合在不需要定义新类或结构体的情况下&#xff0c;临时存储和传递多个相关的值。 C# 中的元组有两种形式&#xff1a; 传统元组&#xf…...

Maven工具基础知识(一)

第一章、Maven概述 一、概述 官网地址&#xff1a;Welcome to Apache Maven – Maven Maven是一个基于Java的项目管理工具&#xff0c;专注于项目构建、依赖管理和项目信息标准化。其核心目标 是简化开发流程&#xff0c;通过标准化项目结构和自动化构建流程&#xff…...

AI模型的构建过程是怎样的(下)

你好,我是舒旻。 上节课,我们讲了一个模型构建的前 2 个环节,模型设计和特征工程。今天,我们继续来讲模型构建的其他 3 个环节,说说模型训练、模型验证和模型融合中,算法工程师的具体工作内容,以及 AI 产品经理需要掌握的重点。 模型训练 模型训练是通过不断训练、验证…...

力扣hot100_二叉树

二叉树的建立与遍历 #include <iostream> #include <vector> #include <queue> using namespace std;// 定义二叉树节点 struct TreeNode {int val;TreeNode* left;TreeNode* right;TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} };// 函数&…...

如何制作Windows系统盘、启动盘?(MediaCreationTool_22H2)

文章目录 每日一句正能量前言一、准备工作二、制作启动盘后记 每日一句正能量 每个在你生命里出现的人&#xff0c;都有原因。喜欢你的人给你温暖关心。你喜欢的人让你学会爱和付出&#xff0c;不喜欢你的人让你自省成长。你不喜欢的人教会你宽容尊重&#xff0c;没有人是偶然出…...

分布式光伏发电的发展现状与前景

分布式光伏发电的发展现状与前景 1、分布式光伏发电的背景2、分布式光伏发电的分类2.1、集中式光伏发电2.1.1、特点、原则2.1.2、优点2.1.3、缺点 2.2、分布式光伏发电2.2.1、特点、原则2.2.2、优点2.2.3、缺点 2.3、对比 3、分布式光伏发电的现状4、分布式光伏发电的应用场景4…...

【AI大模型智能应用】Deepseek生成测试用例

在软件开发过程中&#xff0c;测试用例的设计和编写是确保软件质量的关键。 然而&#xff0c;软件系统的复杂性不断增加&#xff0c;手动编写测试用例的工作量变得异常庞大&#xff0c;且容易出错。 DeepSeek基于人工智能和机器学习&#xff0c;它能够依据软件的需求和设计文…...

NVIDIA k8s-device-plugin源码分析与安装部署

在《kubernetes Device Plugin原理与源码分析》一文中&#xff0c;我们从源码层面了解了kubelet侧关于device plugin逻辑的实现逻辑&#xff0c;本文以nvidia管理GPU的开源github项目k8s-device-plugin为例&#xff0c;来看看设备插件侧的实现示例。 一、Kubernetes Device Pl…...

面向联邦学习隐私保护的同态加密库优化算法研究

面向联邦学习隐私保护的同态加密库优化算法研究 一、引言 联邦学习作为一种新兴的分布式机器学习范式,允许各参与方在不共享原始数据的前提下协同训练模型,有效解决了数据孤岛和隐私保护问题。同态加密作为实现联邦学习隐私保护的关键技术之一,能够在密文上直接进行特定运算…...

20250212:linux系统DNS解析卡顿5秒的bug

问题: 1:人脸离线识别记录可以正常上传云端 2:人脸在线识别请求却一直超时 3:客户使用在线网络 思路:...

动态规划 -第1篇

前言&#xff1a;在计算机科学中&#xff0c;动态规划&#xff08;Dynamic Programming&#xff0c;简称DP&#xff09;是解决最优化问题的一种重要方法。通过将大问题拆解为小问题&#xff0c;动态规划不仅能够显著降低计算复杂度&#xff0c;还能提高效率。无论是经典的背包问…...

uni-app打包成H5使用相对路径

网上找了一圈&#xff0c;没用&#xff0c;各种试&#xff0c;终于给试出来了&#xff0c;导致打包之后请求的路径没有带上域名 直接去 config.js文件里面的baseUrl路径改成空字符就行了&#xff0c;千万别写/...

【每日学点HarmonyOS Next知识】swiper样式、日期选择、自定义弹窗键盘、文本组件换行、富文本适配

1、HarmonyOS swiper组件样式&#xff1f; 可在样式中设置即可&#xff0c;参考如下demo Entry Component struct SwiperDemo {private swiperController: SwiperController new SwiperController();build() {Column({ space: 5 }) {Swiper(this.swiperController) {Text(0)…...

STM32 I2C驱动开发全解析:从理论到实战 | 零基础入门STM32第五十步

主题内容教学目的/扩展视频I2C总线电路原理&#xff0c;跳线设置&#xff0c;I2C协议分析。驱动程序与调用。熟悉I2C总线协议&#xff0c;熟练调用。 师从洋桃电子&#xff0c;杜洋老师 &#x1f4d1;文章目录 引言一、I2C驱动分层架构二、I2C总线驱动代码精析2.1 初始化配置&a…...

Ragflow技术栈分析及二次开发指南

Ragflow是目前团队化部署大模型+RAG的优质方案,不过其仍不适合直接部署使用,本文将从实际使用的角度,对其进行二次开发。 1. Ragflow 存在问题 Ragflow 开源仓库地址:https://github.com/infiniflow/ragflow Ragflow 当前版本: v0.17.0 Ragflow 目前主要存在以下问题: …...

力扣hot100二刷——链表

第二次刷题不在idea写代码&#xff0c;而是直接在leetcode网站上写&#xff0c;“逼”自己掌握常用的函数。 标志掌握程度解释办法⭐Fully 完全掌握看到题目就有思路&#xff0c;编程也很流利⭐⭐Basically 基本掌握需要稍作思考&#xff0c;或者看到提示方法后能解答⭐⭐⭐Sl…...

【Godot4.3】斜抛运动轨迹曲线点求取函数

概述 原文写于去年9月。一篇测试性的文章。 基于初始位置和初始速度的抛物线 # 抛物运动轨迹曲线 - 基于初始位置和初始速度计算 func projectile_motion_curve(start_pos:Vector2, # 物体的起始位置velocity:Vector2, # 初始速度nums:int, …...

SpringBoot基础Kafka示例

这里将生产者和消费者放在一个应用中 使用的Boot3.4.3 引入Kafka依赖 <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId> </dependency>yml配置 spring:application:name: kafka-1#kafka…...

【安卓逆向】安卓病毒介绍及其简单案例分析

目录 引言 一、Android 病毒介绍及分析方法 1.1 Android 病毒预览 1.2 Android 病毒分析必备知识 1.3 Android 病毒的常见类型及恶意行为 1.3.1 常见病毒类型 1.3.2 常见病毒行为 1.4 病毒激活条件 1.5 Android 病毒的传播方式 1.6 Android 病毒分析的一般方法 二…...

Git的命令学习——适用小白版

浅要了解一下Git是什么&#xff1a; Git是目前世界上最先进的的分布式控制系统。Git 和其他版本控制系统的主要差别在于&#xff0c;Git 只关心文件数据的整体是否发生变化&#xff0c;而大多数其他系统则只关心文件内容的具体差异。Git 并不保存这些前后变化的差异数据。实际上…...

Bad owner or permissions on ssh/config - 解决方案

问题 在Windows系统通过ssh连接远程服务器时报错&#xff1a; ssh [ssh_user][ip] Bad owner or permissions on C:\\Users\\[win_user]/.ssh/config原因 这是因为.ssh文件夹或.ssh/config文件的权限异常&#xff0c;当前Windows账号没有读写权限导致的。 Windows系统重装&a…...

AI 赋能软件开发:从工具到思维的全面升级

喜欢可以到主页订阅专栏 引言 在当今技术飞速发展的时代,人工智能(AI)正以前所未有的速度渗透到各个领域,软件开发行业也不例外。AI 不仅改变了开发工具的使用方式,更深刻地影响了开发者的思维模式和工作流程。从代码生成到错误检测,从性能优化到项目管理,AI 正在全面…...

【Ubuntu系统设置固定内网ip,且不影响访问外网 】

Ubuntu系统安装后&#xff0c;由于每次重新开机会被重新分配内网ip&#xff0c;所以我们可以设置固定内网ip&#xff0c;且不影响访问外网&#xff0c;亲测有效 打开【终端】&#xff0c;查看当前内网ip&#xff08;inet&#xff09;&#xff0c;子网掩码&#xff08;netmask&a…...

VSCode集成C语言开发环境

下载MinGW https://sourceforge.net/projects/mingw/ 点击download按钮下载exe文件到本地 点击exe文件安装 选择基础包和c编译版 vscode安装部分跳过 安装code runner和c/c插件 **(1) 创建 C 文件** 新建一个测试文件&#xff08;例如 hello.c&#xff09;&#xf…...

力扣:3305.元音辅音字符串计数

给你一个字符串 word 和一个 非负 整数 k。 返回 word 的 子字符串 中&#xff0c;每个元音字母&#xff08;a、e、i、o、u&#xff09;至少 出现一次&#xff0c;并且 恰好 包含 k 个辅音字母的子字符串的总数。 示例 1&#xff1a; 输入&#xff1a;word "aeioqq"…...

vscode接入DeepSeek 免费送2000 万 Tokens 解决DeepSeek无法充值问题

1. 在vscode中安装插件 Cline 2.打开硅基流动官网 3. 注册并登陆&#xff0c;邀请码 WpcqcXMs 4.登录后新建秘钥 5. 在vscode中配置cline (1) API Provider 选择 OpenAI Compatible &#xff1b; (2) Base URL设置为 https://api.siliconflow.cn](https://api.siliconfl…...

【ELK】ElasticSearch 集群常用管理API操作

目录 常用_cat 概览 集群状态 集群配置 集群磁盘使用 索引信息与配置 shard - 分片 查看段信息 nodes -节点 用户与权限 tasks 和 pending_tasks allocation - 均衡 thread_pool -线程 templete 模版 ILM 生命周期 其他 集群版本&#xff1a; 7.17.6 API地址&…...