前言

最近因为工作需要,研究了下如何使用tcpdump和wireshark分析业务流量。如果要使用tcpdump分析具体的HTTP请求耗时,需捕获网络数据包并分析时间戳信息,重点关注TCP连接的建立、HTTP请求发送到响应接收的全过程。
以下是具体步骤和技巧:

🛠 1. 基础抓包命令

捕获HTTP流量

sudo tcpdump -i eth0 port 80 -s 0 -w http.pcap
  • -i eth0:指定网卡(如any捕获所有接口)。
  • port 80:过滤HTTP流量(HTTPS用port 443)。
  • -s 0:捕获完整数据包(避免截断)。
  • -w http.pcap:保存为文件供后续分析。

过滤特定请求

sudo tcpdump -i eth0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

使用BPF过滤捕获HTTP方法(如GET/POST)。

示例:GET请求的十六进制值为0x47455420。

⏱ 2. 关键耗时分析点

TCP三次握手耗时

  • 观察点:SYN → SYN-ACK → ACK 的时间差。
  • 过滤命令:
tcpdump -r http.pcap 'tcp[tcpflags] & (tcp-syn|tcp-ack) != 0'

计算SYN到SYN-ACK的间隔,反映网络延迟。

HTTP请求到响应耗时

  • 请求发送:捕获GET/POST数据包的时间戳(T1)。
  • 响应接收:捕获HTTP/1.1 200响应头的时间戳(T2)。
  • 总耗时:T2 - T1 即HTTP请求处理时间。
  • 技巧:用-A以ASCII显示内容,快速定位请求/响应边界。

TCP传输耗时

分析ACK确认时间:若ACK延迟高,可能网络拥塞或服务器处理慢。

过滤重传包: tcpdump -r http.pcap 'tcp[tcpflags] & tcp-ack != 0',重传多表明网络不稳定。

🔍 3. 使用Wireshark深度分析

  1. 导入抓包文件:Wireshark http.pcap。
  2. 跟踪TCP流:
  • 右键数据包 → Follow → TCP Stream,关联请求/响应。
  • 查看时间轴(Time列),计算各阶段耗时(握手、首字节、传输)。
  1. 统计工具:
  • Statistics → Flow Graph:可视化连接时序。
  • Statistics → TCP Stream Graph:分析往返时间(RTT)和吞吐量。

⚙ 4. 命令行高级分析

计算请求响应时间差

tcpdump -r http.pcap -tttt 'port 80' | grep -E 'GET|HTTP/1.1 200'
  • -tttt:显示完整时间戳(年-月-日 时:分:秒.微秒)。
  • 手动计算相邻GET和200 OK的时间差。

自动化统计(示例)

tcpdump -i eth0 -l -tttt port 80 | awk '/GET/ { gsub(/[.:]/," "); start=$0 }/HTTP\/1.1 200/ { gsub(/[.:]/," "); end=$0; print "耗时:", end - start "秒" }
'

实时输出每个请求的耗时(需调整时间格式解析)。

⚠️ 5. 生产环境注意事项

  1. 性能影响:
  • 使用-c 1000限制包数量,避免磁盘溢出。
  • 过滤精确条件(如特定IP/端口),减少数据量。
  1. 安全与隐私:
  • 避免抓取敏感数据:-s 256只捕获头部。
  • 定期清理抓包文件:find /path -name "*.pcap" -mtime +1 -delete

💎 总结流程

  1. 精准抓包:指定接口、端口和过滤规则。
  2. 定位关键节点:握手、请求发送、响应接收的时间戳。
  3. 工具分析:
  • Wireshark:可视化时序和流量统计。
  • 命令行:结合grep/awk快速计算耗时。
  1. 优化策略:针对高延迟环节(如握手慢、重传多)深入排查。

tcpdump实战

🛠️ 1. 捕获特定请求的流量

sudo tcpdump -i wlan0 -s 0 -w target.pcap '((tcp port 80 or tcp port 443) and host 192.168.3.77)'

📊 2. 自动化分析脚本 (Python)

#!/usr/bin/env python3
from scapy.all import rdpcap, TCP, IP
import sysdef analyze_pcap(pcap_file):packets = rdpcap(pcap_file)flows = {}total_rx = 0total_tx = 0for pkt in packets:if not (IP in pkt and TCP in pkt): continuesrc = pkt[IP].srcdst = pkt[IP].dstsport = pkt[TCP].sportdport = pkt[TCP].dport# 创建唯一连接标识 (忽略端口顺序)flow_id = tuple(sorted([(src, sport), (dst, dport)]))# 流量统计is_tx = src == "192.168.3.77"  # 根据图片的 IPflow = flows.setdefault(flow_id, {"src_ip": src,"dst_ip": dst,"ports": (sport, dport),"tx_bytes": 0,"rx_bytes": 0,"start": float(pkt.time),"end": float(pkt.time)})pkt_size = len(pkt)if is_tx:flow["tx_bytes"] += pkt_sizetotal_tx += pkt_sizeelse:flow["rx_bytes"] += pkt_sizetotal_rx += pkt_sizeflow["start"] = min(flow["start"], float(pkt.time))flow["end"] = max(flow["end"], float(pkt.time))# 输出报表print(f"\n📊 总流量分析 (目标IP: 192.168.3.77)")print(f"  上传流量: {total_tx/1024:.2f} KB")print(f"  下载流量: {total_rx/1024:.2f} KB")print("\n🔥 具体连接流量明细:")for flow_id, data in flows.items():duration = data["end"] - data["start"]print(f"\n▶ 连接: {data['src_ip']}:{data['ports'][0]} -> {data['dst_ip']}:{data['ports'][1]}")print(f"  持续时间: {duration:.3f} 秒")print(f"  上传: {data['tx_bytes']} 字节")print(f"  下载: {data['rx_bytes']} 字节")print(f"  总流量: {data['tx_bytes'] + data['rx_bytes']} 字节")if duration > 0:print(f"  平均速率: {(data['tx_bytes'] + data['rx_bytes'])/duration/1024:.2f} KB/s")if __name__ == "__main__":if len(sys.argv) != 2:print("用法: python3 traffic_analyzer.py <PCAP_FILE>")sys.exit(1)analyze_pcap(sys.argv[1])

⚙️ 3. 使用流程

  1. 捕获流量:
# 运行捕获程序 (Ctrl+C 停止)
sudo tcpdump -i wlan0 -s 0 -w my_request.pcap 'tcp and host 192.168.3.77'
  1. 执行分析:
python3 traffic_analyzer.py my_request.pcap

📝 4. 结果解读示例

📊 总流量分析 (目标IP: 192.168.3.77)上传流量: 32.15 KB下载流量: 125.48 KB🔥 具体连接流量明细:▶ 连接: 192.168.3.77:54562 -> 93.888.216.38:443持续时间: 1.253 秒上传: 32876 字节下载: 128456 字节总流量: 161332 字节平均速率: 125.72 KB/s

⚠️ 重要说明

  1. 安装依赖:
pip install scapy
  1. 自定义过滤:

按需调整捕获命令中的过滤条件:

指定域名
sudo tcpdump -i wlan0 'host example.com and tcp port 80'
指定端口范围
sudo tcpdump -i wlan0 'tcp portrange 8000-9000'
  1. 流量方向说明:
  • TX (上传): 从 192.168.3.77 发出的数据
  • RX (下载): 发送到 192.168.3.77 的数据

该方案通过精确流量捕获和自动化分析,可帮助您定位具体请求的流量消耗和性能瓶颈。对于HTTPS流量,虽然无法解密内容,但仍可精确统计流量大小和时间特征。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习图像分类数据集—角膜溃疡识别分类

该数据集为图像分类数据集&#xff0c;适用于ResNet、VGG等卷积神经网络&#xff0c;SENet、CBAM等注意力机制相关算法&#xff0c;Vision Transformer等Transformer相关算法。 数据集信息介绍&#xff1a;角膜溃疡识别分类&#xff1a;[dot, mix, slice] 训练数据集总共有270张…

功能强、超好用【PDF转换工具】的介绍下载与安装教程

Windows 电脑上一款简单好用的PDF转换工具&#xff0c;可以轻松地将其他文档转换为 PDF 格式&#xff0c;也可以将 PDF 文件转换为其他格式&#xff0c;如常见的 Word、Excel、PPT 等。 此外软件还支持 Office 文档合并分割、旋转页面、拼接页面、删除文字、删除页面、添加水印…

c# 钉钉应用实现监听审批事件以及获取审批结果的流程

oa的操作已经测试了一遍 image.png如果是自建oa则代表发起的审批是跳转网页&#xff0c;否则钉钉打开后是一个表单界面&#xff0c;不需要调整自己搞得oa。 所以我感觉目前公司的需求更适合官方oa 表单来填写,更灵活&#xff0c;还支持用户配置。 但是用户点了审批&#xff0c;…

Typecho架构深度剖析:轻量级博客系统的设计哲学与实现原理

文章目录 深度解析Typecho:轻量级博客系统的架构设计与实现1. Typecho概述与技术背景1.1 发展历程1.2 核心特性2. 系统架构设计分析2.1 核心架构图2.2 核心组件3. 核心模块实现分析3.1 路由系统实现3.2 数据库抽象层4. 插件系统深度解析4.1 Hook机制实现4.2 插件开发示例5. 性…

LangChain 内存(Memory)

1. 为什么需要内存&#xff1f; 大型语言模型&#xff08;LLM&#xff09;本身是无状态的。这意味着每次你向 LLM 发送一个请求&#xff08;Prompt&#xff09;&#xff0c;它都会独立处理这个请求&#xff0c;完全不记得之前任何的交互。这在构建一次性问答应用时没问题&#…

基于定制开发开源AI智能名片S2B2C商城小程序的社群游戏定制策略研究

摘要&#xff1a;本文聚焦社群游戏定制领域&#xff0c;深入探讨以社群文化和用户偏好为导向的定制策略。通过分析互动游戏活动、社群文化塑造等关键要素&#xff0c;结合定制开发开源AI智能名片S2B2C商城小程序的技术特性&#xff0c;提出针对性游戏定制方案。研究旨在提升社群…

自动驾驶决策与规划

目录 自动驾驶决策与规划概述 决策与规划体系结构 分层递阶式决策规划 反应式体系结构 混合式体系结构 决策与规划系统的关键环节 路径规划 轨迹规划 行为决策 异常处理 自动驾驶的路径规划技术 维诺图法 栅格法 Dijkstra算法 A*算法 自动驾驶的行为决策方法 …

C++编译期计算:常量表达式(constexpr)全解析

在C性能优化领域&#xff0c;"将计算尽可能转移到编译期"是一条黄金法则。编译期计算&#xff08;Compile-Time Computation&#xff09;能显著减少程序运行时的开销&#xff0c;提升执行效率&#xff0c;同时还能在编译阶段暴露潜在错误。C11引入的constexpr关键字及…

【micro:bit】从入门到放弃(一):在线、离线版本的使用

1、离线版 micro:bit 1)下载地址 https://makecode.microbit.org/offline-app 2)双击安装包,makecode-microbit-setup-win64.exe,自动安装,安装成功后图标如下图所示 3)运行程序,查看版本信息 4)主界面如下 5)编程界面 点击“新建项目”或者“导入”进入编程界…

Flink Forward Asia 2025 主旨演讲精彩回顾

作为 Apache Flink 社区备受瞩目的年度盛会之一&#xff0c;由阿里云承办的 Flink Forward Asia 2025 于 7 月 3 日在新加坡正式拉开帷幕。From Real-Time Data Analytics to Real-Time AI&#xff0c;Flink 生态全面拥抱 AI本次大会上&#xff0c;Apache Flink 中文社区发起人…

车道偏离预警(LDW)功能介绍

车道偏离预警&#xff08;LDW&#xff09;功能介绍 LDW功能 通过摄像头监测前方车道线&#xff0c;当车辆偏离车道线时&#xff0c;系统发出报警提醒。 系统框图报警条件 最早报警线最迟报警线报警临界线 设置在 最早/最迟报警线 之间接口定义 输入/输出系统算法 横向偏离速度模…

软考(软件设计师)计算机网络-网络层

obsidian做markdown笔记太爽了&#xff0c;康奈尔模板笔记看起来舒服&#xff0c;CSDN试了几种方式&#xff0c;不支持&#xff0c;只能贴图了&#xff0c;将就看吧&#x1f60f;&#xff08;狗头保命&#xff09;工作原理图解 #mermaid-svg-e5Tgpt26jUftujKn {font-family:&qu…

nginx反向代理实现跨域请求

记录一个项目中遇到的跨域请求问题&#xff0c;解决跨域问题无非几种办法&#xff1a;1、后端解决&#xff0c;推荐的做法&#xff0c;可以看我之前写的文章&#xff0c;fastadmin的后台配置跨域&#xff1b;2、前端配置proxy代理&#xff08;开发环境用&#xff09;&#xff1…

利用Wisdom SSH高效搭建CI/CD工作流

在软件开发流程中&#xff0c;CI/CD工作流对于提升效率与确保质量起着关键作用。Wisdom SSH作为一款强大工具&#xff0c;其官网为ssh.wisdomheart.cn&#xff0c;借助AI助手能大幅简化CI/CD工作流的搭建过程。假设服务器已完成基础配置&#xff0c;下面为您介绍如何利用Wisdom…

深度学习-循环神经网络RNN

文章目录序列模型循环神经网络案例词的表示输出的表示矩阵运算表示交叉熵损失时间反向传播算法BPTT梯度消失与梯度爆炸GRULSTM总结序列模型 循环神经网络 st是上一个隐层的输出&#xff0c;体现序列数据之间有很强的关联性。 案例 > S0是初始输入&#xff0c;一般是0&#…

【Linux网络编程】Socket - TCP

目录 V1版本 - Echo Server 初始化服务器 启动服务器 客户端 一些BUG与问题 解决服务器无法一次处理多个请求的问题 多进程版本 多线程版本 线程池版本 V2版本 - 多线程远程执行命令 V1版本 - Echo Server 初始化服务器 TCP大部分内容与UDP是相同的&#xff0c;我们…

知识图谱构建简单分享

最近系统性地学习了知识图谱构建的关键技术&#xff0c;并结合医疗领域知识&#xff0c;完成了一个医疗知识图谱项目的实践。以下是整理的项目架构&#xff0c;欢迎交流指正。说明&#xff1a;当前项目实际实现主要应用了数据预处理、模型设计与预训练、模型优化与测试等核心技…

MCU中的系统控制器(System Controller)是什么?

MCU中的系统控制器&#xff08;System Controller&#xff09;是什么&#xff1f; 在微控制器&#xff08;MCU&#xff09;中&#xff0c;系统控制器&#xff08;System Controller&#xff09;是一个关键模块&#xff0c;负责管理和协调MCU内部的核心功能&#xff0c;确保系统…

【Datawhale夏令营】用AI做带货视频评论分析

文本分类、文本聚类 基础库&#xff1a; pandas, sklearn功能&#xff1a; 商品识别、情感分析、评论聚类商品识别&#xff1a; 视频文本信息&#xff0c;预测推广商品名称 & 情感分析&#xff1a;四个维度&#xff08;情感倾向、用户场景、用户疑问、用户建议&#xff09…

[Meetily后端框架] AI摘要结构化 | `SummaryResponse`模型 | Pydantic库 | vs marshmallow库

第3章&#xff1a;摘要数据结构&#xff08;Pydantic库&#xff09; 欢迎回来&#xff01; 在之前的第2章&#xff1a;API文档中&#xff0c;我们知道API网关提供了端点 而API文档准确告诉我们如何与这些端点通信&#xff0c;包括需要发送的数据格式和期望接收的数据格式。 …