ndpi源码分析一--几个重要的结构体

本文探讨了ndpi源码中的核心结构体,包括ndpi_iphdr, ndpi_tcphdr, ndpi_udphdr, ndpi_ethdr等数据包头信息结构,以及ndpi_detection_module_struct、ndpi_packet_struct和ndpi_flow_struct。这些结构体在ndpi检测模块的初始化和数据包处理中扮演重要角色。后续文章将进一步分析ndpi的检测流程。" 97941783,2177861,JSON日志换行处理:Logstash的gsub解决 问题,"['elk', 'logstash', 'gsub']
摘要由CSDN通过智能技术生成

最近研究了ndpi的源代码,过程中看到关于这方面的资料很少,所以就想把自己的收获写下来分享一下,也让之后的同学有所参考。首先简单介绍一下ndpi源码中几个比较重要的结构体,这些结构体的定义一般都在ndpi_typedefs.h头文件中,有兴趣的同学可以参考。
1,ndpi_iphdr, ndpi_tcphdr,ndpi_udphdr, ndpi_ethdr(这几个是在 linux_compat.h头文件中)
这几个结构题比较简单,主要用于存储各层的数据包头信息。如果学过计算机网络都应该知道网络数据在传输时经过每一层都会加上相应的信息,比如IP包头一般有20个字节固定长度,下面是ndpi_iphdr结构体的定义,可以看出来是跟IP数据包格式一一对应的,在此不做过多解释。ndpi_ethdr是对应数据链路层。

struct ndpi_iphdr {
#if defined(__LITTLE_ENDIAN__) 
  u_int8_t ihl:4, version:4;
#elif defined(__BIG_ENDIAN__)
  u_int8_t version:4, ihl:4;
#else
# error "Byte order must be defined"
#endif
  u_int8_t tos;//区分服务
  u_int16_t tot_len;//总长度
  u_int16_t id;//标志
  u_int16_t frag_off;//片偏移
  u_int8_t ttl;//跳数
  u_int8_t protocol;//协议
  u_int16_t check;//
  u_int32_t saddr;//源IP
  u_int32_t daddr;//目的IP
};

2,ndpi_detection_module_struct
这个结构体比较重要,主要用于存储一些全局变量ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值