nDPI分析

article/2025/10/30 8:12:19

nDPI分析

一.概述

nDPI是保持高度欢迎的OpenDPI,在GPL证书下发布,它的目标是增加新的协议,扩展原有的库;为了支持多平台的体验,它除了支持UNIX系列外,还支持windows版本;而且,可以改动nDPI来适配流量监控的应用,当网络流量不需要监控时,可以减掉nDPI的某些特性。

nDPI可检测应用层的协议,它可检测非标准端口,如非80端口的http协议;或者检测标准端口,如80端口上的skype协议。

目前nDPI支持多种协议,如下:FTP POP SMTP IMAP DNS IPP HTTP MDNS NTP NETBIOS NFS SSDP BGP SNMP XDMCP SMB SYSLOG DHCP PostgreSQL MySQL TDS DirectDownloadLink l23V5 AppleJuice DirectConnect Socrates WinMX VMware PANDO Filetopia iMESH Kontiki OpenFT Kazaa Gnutella eDonkey Bittorrent OFF AVI FLASH OGG MPEG QuickTime RealMedia Windowsmedia MMS XBOX QQ MOVE RTSP Feidian lcecast PPLive ………………下略。

 

二.nDPI原理

2.1检测模块的初始化

初始化检测模块完善参考数据结构

 

typedef struct ndpi_detection_module_struct

{

包含主要的结构:

1.       TCP协议带payload检测函数

2.       TCP协议不带payload检测函数

3.       UDP协议带payload检测函数

4.       UPD协议不带payload检测函数

5.       其他的协议检测函数

}

     

2.2数据检测流程

2.3 数据检测模块(以skype为例)

skype为例,简述skype检测过程

2.3.1 skype注册函数 ndpi_search_skype()

标题中的函数在2.1中检测模块初始化的时候被注册到ndpi_detection_module_struct中:

 

void ndpi_search_skype(struct ndpi_detection_module_struct *ndpi_struct, struct ndpi_flow_struct *flow)

{

}

 

参数分析:1. struct ndpi_detection_module_struct  *ndpi_struct

              即上文2.1中检测模块初始化时生成的结构体,包含了协议分析函数;

2. struct ndpi_flow_struct  *flow

    该结构体包含了网络包中的数据。

2.3.2 skype协议检测函数

Void ndpi_search_skype(struct ndpi_detection_module_struct *ndpi_struct, struct ndpi_flow_struct *flow)

{

    ndpi_check_skype(ndpi_struct, flow);

}

 

void ndpi_check_skype(struct ndpi_detection_module_struct *ndpi_struct, struct ndpi_flow_struct *flow)

{

    具体的skype协议解析过程;

}

 

三.nDPInetfilter的结合

linux内核的插件netfilter中注册nDPI的协议分析引擎,

3.1注册的函数结构体

static struct xt_match

ndpi_mt_reg __read_mostly = {

         .name = "ndpi",

         .revision = 0,

         .family = AF_INET,

         .match = ndpi_mt,   //在该函数中协议检测引擎分析路过的数据包

         .checkentry = ndpi_mt_check,

         .destroy = ndpi_mt_destroy,

         .matchsize = sizeof(struct xt_ndpi_mtinfo),

         .me = THIS_MODULE,

};

 

3.2 引擎的初始化

整个引擎可以通过netfilter注册到内核中或者可以编译成单独的模块进行动态加载和卸除,具体如下:

module_init(ndpi_mt_init);

module_exit(ndpi_mt_exit);

 

static int __init ndpi_mt_init(void)

{

1.       引用前文2.1中检测模块的初始化;

2.       ret = xt_register_match(&ndpi_mt_reg);即这侧3.1中定义的函数结构体;

}

 


http://chatgpt.dhexx.cn/article/aIOd4dNj.shtml

相关文章

如何实现在on ethernetPacket中自动回复NDP response消息

对于IPv4协议来说,如果主机想通过目标ipv4地址发送以太网数据帧给目的主机,需要在数据链路层填充目的mac地址。根据目标ipv4地址查找目标mac地址,这是ARP协议的工作原理 对于IPv6协议来说,根据目标ipv6地址查找目标mac地址,它使用的不是ARP协议,而是邻居发现NDP(Neighb…

IPv6 NDP邻居发现协议 1

NDP(Neighbor Discovery Protocol,邻居发现协议)是IPv6的一个关键协议,它组合了IPv4中的ARP、ICMP路由器发现和ICMP重定向等协议,并对它们作了改进。作为IPv6的基础性协议,NDP还提供了前缀发现、邻居不可达…

NPDP是什么?

NPDP由美国产品开发与管理协会(PDMA)发起,是国际公认的唯一的新产品开发专业认证,集理论、方法与实践为一体的全方位知识体系。 一,为什么要考NPDP认证? 1.对于个人: 1)确保精通新…

802.11 NDP Sounding

NDP Sounding 1.NDP原理2.NDP 过程3.帧结构3.1 NDPA结构3.2 CBF帧 1.NDP原理 802.11n标准提供的波束成形技术,可以通过预先补偿发射天线的相位,让两条波束进行叠加以实现最好的效果 显式波束成形需要终端反馈信道信息: AP向STA发送探测数据…

【IPv6】IPv6 NDP邻居状态详解

NDP 邻居状态 任意两个通信的主机在通信之前,先要建立邻居。(省的去查找arp了) 因为接下来的文字会很乱,排版费劲,所以用这个来。 未完成(Incomplete),可达(Reachable),陈旧(Stale),延迟(Delay),探查(Probe) 正常过程…

ICMPV6协议及NDP协议

一、ICMPV6 1、基于ipv6的ICMPv6(Internet control message protocol for IPv6)是 IPv6 下的 Internet 控制报文协议;在 IPv6 中,ICMPv6 整合实现了 IPv4 中的 ICMP(ping命令)、ARP 以及 IGMP 的所有功能&a…

IPV6 邻居发现协议(NDP)

IPV6除了显著增加了地址空间外,另一个最显著的特征就是它的即插即用性。 邻居发现协议(Neighbor Discovery Protocol,NDP)就是使用以下的功能实现即插即用特性的协议: 路由器发现:当一个节点连接到一个IPV6的链路时,它…

802.11 - NDP反馈报告

目录 概述 帧格式 能力指示 NFRP Trigger帧格式 Common Info字段 HE TB feedback NDP帧格式 NDP Feedback Report Parameter Set element格式 NDP反馈报告流程 概述 STA行为 NDP反馈报告的TXVECTOR参数 STA处理流程 NDP反馈报告流程中的Power save操作 概述 NDP反…

ipv6的NDP协议有哪些功能,是如何进行工作的

ipv6的NDP协议有哪些功能 NDP(neighbor Discovery protocol)是ICMPv6的子协议是IPV6协议体系中一个重要的基础协议,邻居发现协议替代了IPV4的ARP,ICMP路由器发现。它定义了使用ICMPv6报文实现地址解析,跟踪邻居状态&a…

IPV6邻居发现协议(NDP)

概述 NDP(Neighbor Discovery Protocol,邻居发现协议)是IPv6的一个关键协议,它组合了IPv4中的ARP、ICMP路由器发现和ICMP重定向等协议,并对它们作了改进。作为IPv6的基础性协议,NDP还提供了前缀发现、邻居不…

11.NDP协议分析与实践

NDP 协议分析与实践 1. 概述 1.1 简介 Neighbor Discovery Protocol 基于 ICMPv6 实现,用于替代 IPv4 中的 ARP 和 ICMP 路由器发现基于 ICMPv6 实现节点发现(主机和路由)、重复地址检测、地址解析、邻居不可达检测和重定向等功能 1.2 NDP 报文格式 1.2.1 路由…

IPv6邻居发现协议--NDP详解

一、ICMPv6 -Internet控制报文协议 ICMPv6是IPV6的基础协议之一,用于向源节点传递报文转发的信息或错误 协议类型号(即:IPv6Next Header)为58 icmpv6可以提供icmpv4的的对应功能之外,还有其他一些功能的基础如邻居发…

IPv6中NDP协议简介

本文介绍IPv6中一种重要协议——NDP协议。NDP协议是实现IPv6通信的重要协议之一,本文将详细介绍IPv6中NDP的协议实现过程和技术细节。 阅读本文,您需要又有一定的IPv6基础知识,您如果对此还存在困惑,欢迎查阅下列文章:…

5. NDP

NDP(Neighbor Discovery Protocol)NDP实现了IPv6中诸多重要机制。 路由器发现:该功能帮助设备发现链路上的路由器,并获得路由器通告的信息。 无状态自动配置:无状态自动配置是IPv6的一个亮点功能,它使得IP…

NDP原理详解

概述: 节点使用ND,可以确定连接在同一链路上的邻居的链路层地址,快速清除已经变成无效的缓存值。主机也使用ND发现能为其转发报文的路由器。最后,节点使用此协议主动跟踪哪一个邻居可达,哪一个邻居不可达,…

NDP 协议介绍

邻居发现协议NDP(Neighbor Discovery Protocol)是IPv6协议体系中一个重要的基础协议。 邻居发现协议替代了IPv4的ARP(Address Resolution Protocol)和ICMP路由器 发现(RouterDiscovery),它定义了…

一文解释NDP协议(IPv6邻居发现协议)ICMPv6

目录 目录 一、前言介绍: 1.1、NDP简单说明: 1.2、ICMPv6-Internet控制报文协议 1.3、IPv6和IPv4相比有哪些优势? 二、IPv6邻居发现协议--NDP详解 2.1、IPv6地址解析 2.1.1、邻居请求(Neighbor solicition)NS …

欧拉道路与欧拉回路

1. 相关的概念如下: ① 有向图G为欧拉回路:当且仅当G的基图连通,且所有顶点的入度等于出度 ② 有向图G为欧拉路:当且仅当G的基图连通,而且只存在一个顶点u的入度比出度大于1,只存在一个顶点v的出度比入度…

欧拉回路及例题

欧拉回路 几个定义性质与定理 定理1 推论1 定理2 推论2 性质1性质2 算法主体例题 uoj117求给定图的欧拉回路poj1041求字典序最小的欧拉回路poj1386Play on Wordspoj2230求无向图欧拉图要求每条边走两遍且方向不同poj2513字符串的欧拉图poj2337字典序poj1637Sightseeing tour求…

欧拉回路和Hanmilton回路

1、 一个是对点的,一个是对边的。 2、欧拉回路、欧拉图。有欧拉回路的,就做欧拉图?其实,还有欧拉通路的概念,一笔画完一个图的概念。理一理。 欧拉图:就是从起点出发,可以回到起点的图&#x…