|
capture 1.2.0
这是一个基于 PcapPlusPlus、PF_RING 和 ClickHouse 构建的高性能网络流量分析系统,专注于实时流量捕获、解析与存储。
|
HTTP统计信息收集器 More...
#include <HttpStatsCollector.h>
Classes | |
| struct | HttpFlowData |
| 为每个流收集的辅助数据,用于帮助计算该流的统计信息 More... | |
Public Member Functions | |
| HttpStatsCollector () | |
| 构造函数 - 清空所有结构 | |
| void | collectStats (pcpp::Packet *httpPacket) |
| 为单个包收集统计信息 | |
| void | calcRates () |
| 计算速率。应该定期调用 | |
| void | clear () |
| 清空到目前为止收集的所有统计信息 | |
| HttpGeneralStats & | getGeneralStats () |
| 获取HTTP通用统计信息 | |
| HttpRequestStats & | getRequestStats () |
| 获取HTTP请求统计信息 | |
| HttpResponseStats & | getResponseStats () |
| 获取HTTP响应统计信息 | |
Private Member Functions | |
| uint32_t | collectHttpTrafficStats (pcpp::Packet *httpPacket) |
| 收集与每个HTTP包相关的统计信息(请求、响应或任何其他) | |
| void | collectHttpGeneralStats (pcpp::TcpLayer *tcpLayer, pcpp::HttpMessage *message, uint32_t flowKey) |
| 收集与HTTP消息相关的统计信息(请求或响应) | |
| void | collectRequestStats (pcpp::HttpRequestLayer *req) |
| 收集与HTTP请求消息相关的统计信息 | |
| void | collectResponseStats (pcpp::HttpResponseLayer *res) |
| 收集与HTTP响应消息相关的统计信息 | |
| double | getCurTime (void) |
| 获取当前时间 | |
Private Attributes | |
| HttpGeneralStats | m_GeneralStats |
| 当前HTTP通用统计信息 | |
| HttpGeneralStats | m_PrevGeneralStats |
| 上次的HTTP通用统计信息 | |
| HttpRequestStats | m_RequestStats |
| 当前HTTP请求统计信息 | |
| HttpRequestStats | m_PrevRequestStats |
| 上次的HTTP请求统计信息 | |
| HttpResponseStats | m_ResponseStats |
| 当前HTTP响应统计信息 | |
| HttpResponseStats | m_PrevResponseStats |
| 上次的HTTP响应统计信息 | |
| std::map< uint32_t, HttpFlowData > | m_FlowTable |
| 流表,存储每个流的辅助数据 | |
| double | m_LastCalcRateTime |
| 上次计算速率的时间 | |
| double | m_StartTime |
| 统计开始时间 | |
HTTP统计信息收集器
应该为每个到达的包调用,并定期调用以计算速率。 收集HTTP流量的各种统计信息,包括请求、响应、流量速率等。
|
inlineexplicit |
构造函数 - 清空所有结构
初始化统计收集器并清空所有统计数据
|
inline |
计算速率。应该定期调用
计算当前速率和总体速率,更新所有速率相关的统计信息
|
inline |
清空到目前为止收集的所有统计信息
重置所有统计数据并重新初始化时间戳
|
inlineprivate |
收集与HTTP消息相关的统计信息(请求或响应)
| tcpLayer | TCP层指针 |
| message | HTTP消息指针 |
| flowKey | 流键值 |
处理HTTP事务的开启和关闭,检测HTTP管道化
|
inlineprivate |
收集与每个HTTP包相关的统计信息(请求、响应或任何其他)
| httpPacket | HTTP包指针 |
此方法计算并返回此包的流键
|
inlineprivate |
收集与HTTP请求消息相关的统计信息
| req | HTTP请求层指针 |
统计请求数量、头部大小、主机名和HTTP方法
|
inlineprivate |
收集与HTTP响应消息相关的统计信息
| res | HTTP响应层指针 |
统计响应数量、头部大小、内容长度、内容类型和状态码
|
inline |
为单个包收集统计信息
| httpPacket | 要处理的HTTP包指针 |
分析包的类型(请求/响应)并收集相应的统计信息
|
inlineprivate |
获取当前时间
使用gettimeofday获取高精度时间戳
|
inline |
获取HTTP通用统计信息
|
inline |
获取HTTP请求统计信息
|
inline |
获取HTTP响应统计信息
|
private |
流表,存储每个流的辅助数据
|
private |
当前HTTP通用统计信息
|
private |
上次计算速率的时间
|
private |
上次的HTTP通用统计信息
|
private |
上次的HTTP请求统计信息
|
private |
上次的HTTP响应统计信息
|
private |
当前HTTP请求统计信息
|
private |
当前HTTP响应统计信息
|
private |
统计开始时间