capture 1.2.0
这是一个基于 PcapPlusPlus、PF_RING 和 ClickHouse 构建的高性能网络流量分析系统,专注于实时流量捕获、解析与存储。
Loading...
Searching...
No Matches
packet_handler Class Reference

包处理类回调:统计、批量存入 More...

#include <packet_handler.h>

Collaboration diagram for packet_handler:
[legend]

Public Member Functions

 packet_handler (std::string tb_prefix="")
 构造函数
 ~packet_handler ()
 析构函数
void handle_packet (pcpp::Packet *packet)
 处理函数
void flush ()
 清空所有数据列
void send2db ()
 发送数据到数据库

Private Attributes

int queue_len
 当前队列长度
std::string table_prefix
 数据库表前缀
Client client
 ClickHouse客户端
std::shared_ptr< ColumnUInt32 > col_hash_val
 哈希值列
std::shared_ptr< ColumnInt32 > col_packet_len
 包长度列(类型待确认)
std::shared_ptr< ColumnUInt32 > col_tv_sec
 时间戳秒数列(类型待确认)
std::shared_ptr< ColumnUInt32 > col_tv_nsec
 时间戳纳秒数列
std::shared_ptr< ColumnString > col_src_ip
 源IP地址列
std::shared_ptr< ColumnString > col_dst_ip
 目标IP地址列
std::shared_ptr< ColumnUInt8 > col_ttl
 TTL列
std::shared_ptr< ColumnUInt8 > col_tos
 TOS列
std::shared_ptr< ColumnUInt16 > col_id
 IP标识列
std::shared_ptr< ColumnUInt16 > col_offset
 片偏移列
std::shared_ptr< ColumnUInt8 > col_protocol_ip
 IP协议列
std::shared_ptr< ColumnUInt8 > col_protocol
 传输层协议列
std::shared_ptr< ColumnUInt16 > col_len_load
 负载长度列
std::shared_ptr< ColumnUInt16 > col_src_port
 源端口列
std::shared_ptr< ColumnUInt16 > col_dst_port
 目标端口列
std::shared_ptr< ColumnUInt32 > col_ack_num
 确认号列
std::shared_ptr< ColumnUInt32 > col_seq_num
 序列号列
std::shared_ptr< ColumnUInt16 > col_flag
 标志位列
std::shared_ptr< ColumnUInt16 > col_window
 窗口大小列
std::shared_ptr< ColumnUInt16 > col_len_udp
 UDP长度列
std::shared_ptr< ColumnUInt8 > col_icmp_type
 ICMP类型列
std::shared_ptr< ColumnUInt8 > col_icmp_code
 ICMP代码列
HttpStatsCollector collector
 HTTP统计收集器

Detailed Description

包处理类回调:统计、批量存入

此类负责处理网络包,收集统计信息,并批量存储到ClickHouse数据库。 包含各种网络层的数据列以及HTTP统计收集功能。

Constructor & Destructor Documentation

◆ packet_handler()

packet_handler::packet_handler ( std::string tb_prefix = "")
inline

构造函数

Parameters
tb_prefix数据库表前缀,默认为空字符串

初始化所有ClickHouse数据列和HTTP统计收集器, 建立与本地ClickHouse数据库的连接

◆ ~packet_handler()

packet_handler::~packet_handler ( )
inline

析构函数

线程池销毁时执行,如果队列中还有数据则发送到数据库

Member Function Documentation

◆ flush()

void packet_handler::flush ( )
inline

清空所有数据列

清空所有ClickHouse数据列的内容,为下一批数据做准备

◆ handle_packet()

void packet_handler::handle_packet ( pcpp::Packet * packet)
inline

处理函数

Parameters
packet要处理的网络包指针

解析包的各种属性并添加到相应的数据列中,收集HTTP统计信息。 当队列达到最大长度时,批量发送数据到数据库并清空队列。

◆ send2db()

void packet_handler::send2db ( )
inline

发送数据到数据库

将收集的包数据批量插入到ClickHouse数据库的多个表中, 包括主包表、源IP哈希表和协议哈希表。包含错误处理和重试机制。

Member Data Documentation

◆ client

Client packet_handler::client
private

ClickHouse客户端

◆ col_ack_num

std::shared_ptr<ColumnUInt32> packet_handler::col_ack_num
private

确认号列

◆ col_dst_ip

std::shared_ptr<ColumnString> packet_handler::col_dst_ip
private

目标IP地址列

◆ col_dst_port

std::shared_ptr<ColumnUInt16> packet_handler::col_dst_port
private

目标端口列

◆ col_flag

std::shared_ptr<ColumnUInt16> packet_handler::col_flag
private

标志位列

◆ col_hash_val

std::shared_ptr<ColumnUInt32> packet_handler::col_hash_val
private

哈希值列

◆ col_icmp_code

std::shared_ptr<ColumnUInt8> packet_handler::col_icmp_code
private

ICMP代码列

◆ col_icmp_type

std::shared_ptr<ColumnUInt8> packet_handler::col_icmp_type
private

ICMP类型列

◆ col_id

std::shared_ptr<ColumnUInt16> packet_handler::col_id
private

IP标识列

◆ col_len_load

std::shared_ptr<ColumnUInt16> packet_handler::col_len_load
private

负载长度列

◆ col_len_udp

std::shared_ptr<ColumnUInt16> packet_handler::col_len_udp
private

UDP长度列

◆ col_offset

std::shared_ptr<ColumnUInt16> packet_handler::col_offset
private

片偏移列

◆ col_packet_len

std::shared_ptr<ColumnInt32> packet_handler::col_packet_len
private

包长度列(类型待确认)

◆ col_protocol

std::shared_ptr<ColumnUInt8> packet_handler::col_protocol
private

传输层协议列

◆ col_protocol_ip

std::shared_ptr<ColumnUInt8> packet_handler::col_protocol_ip
private

IP协议列

◆ col_seq_num

std::shared_ptr<ColumnUInt32> packet_handler::col_seq_num
private

序列号列

◆ col_src_ip

std::shared_ptr<ColumnString> packet_handler::col_src_ip
private

源IP地址列

◆ col_src_port

std::shared_ptr<ColumnUInt16> packet_handler::col_src_port
private

源端口列

◆ col_tos

std::shared_ptr<ColumnUInt8> packet_handler::col_tos
private

TOS列

◆ col_ttl

std::shared_ptr<ColumnUInt8> packet_handler::col_ttl
private

TTL列

◆ col_tv_nsec

std::shared_ptr<ColumnUInt32> packet_handler::col_tv_nsec
private

时间戳纳秒数列

◆ col_tv_sec

std::shared_ptr<ColumnUInt32> packet_handler::col_tv_sec
private

时间戳秒数列(类型待确认)

◆ col_window

std::shared_ptr<ColumnUInt16> packet_handler::col_window
private

窗口大小列

◆ collector

HttpStatsCollector packet_handler::collector
private

HTTP统计收集器

◆ queue_len

int packet_handler::queue_len
private

当前队列长度

◆ table_prefix

std::string packet_handler::table_prefix
private

数据库表前缀


The documentation for this class was generated from the following file: