nDPI-dev分析
目前在
分为两个层次:其一是应用分析,学会如何使用;其二是原理分析,看懂它如何实现。
1. 打包该数据帧,搜集l3、l4层报头信息
2. 查询链接跟踪(如果已被标识,则直接获取到该数据帧所属协议类型)
3. 从链接跟踪中未获取流量所属协议类型,则进入深度报文分析过程
4. 率先进行协议猜测,调用相应的协议分析器分析
5. 猜测协议错误、此时ndpi会分类遍历相关类型的协议分析器进行分析,直至分析出结果或遍历完所有相关的协议分析器
6. 将分析出的协议类型标记到链接跟踪中,以便下次可直接从连接跟踪中拿到协议类型
ndpi_set_proto_defaults函数是设置每个协议号对应的属性:协议标号,名称,默认端口范围,breed属性分类,类型分类,是否有子协议
u_int16_t tcp_master_protoId[2], u_int16_t udp_master_protoId[2] 不知道什么用?
nDPI综合了各种识别方式
IP list ASN分配的
默认端口范围port
Host URL关键字,模式匹配
开放了一个内容匹配的接口,但是未使用。
ndpi_guess_protocol_id() 针对flow提到的端口信息在默认端口协议树中guess protocol id,体现在flow->guessed_protocol_id上。
ndpi_guess_host_protocol_id()针对flow的IP Layer在IP List中查找配置的协议号,体现在flow->guessed_host_protocol_id上。
guessed_category这个猜测根据什么,貌似目前没用到。
guessed_header_category这个是来源ndpi_fill_ip_protocol_category()函数返回,是从IP划分的分类方式。
用户自定义的端口识别优先级最高。
原则:
1. 如果根据端口guess猜测出来的协议号是自定义协议(用户加载配置进来的),那么此时就直接判定该flow是此协议,返回的
ndpi_protocol.master_protocol = NDPI_PROTOCOL_UNKNOWN,
ndpi_protocol.app_protocol = flow->guessed_protocol_id
ndpi_protocol.category是该协议在加载时配置的分类
2. 如果端口guess出来的协议号是非自定义的,或者是unknown的,那么就用IP guess出来的判断,如果Ip guess 出来的是自定义协议号,那么
3. tcp流最多判断10条包,udp流最多判断8条,就不再检测。
一条流flow在什么时候停止继续识别?
1. A TCP flow,whose first packet is NOT a SYN,no protocol has been detected,We don't see how future packets can match anything,hence we giveup here.
转载于:https://www.cnblogs.com/shafei/p/10740692.html
nDPI-dev分析相关推荐
- python nDPI 流量分析框架 Nfstream 简介
Nfstream本质上来说是一款Python包,它可以提供快速.灵活且有效的数据结构,支持针对在线或离线状态的网络数据进行分析,这种方式既简单又直观.在Nfstream的帮助下,广大研究人员可以直接在 ...
- 【NDPI】源码解析之深度包检测分析(一)
(Albert.2019.4.28) 文章目录: 前言: 正文: 一.nDPI深度包检测流程: 二.重要结构体的源码分析 1.ndpi_ethdr.ndpi_iphdr.ndpi_tcphdr.ndp ...
- 【智能路由器】ndpi深度报文分析源码框架
[智能路由器]系列文章连接 http://blog.csdn.net/u012819339/article/category/5803489 某些需求可能会要求路由能精确的分析出流经路由的流量是属于什 ...
- 【智能路由器】ndpi深度报文分析之协议分析器
[智能路由器]系列文章连接 http://blog.csdn.net/u012819339/article/category/5803489 本篇博客讲述ndpi已经实现的QQ协议分析器的实现 以及 ...
- Android内存分析和调优
最近我们的android app占用了大量内存,于是领导安排做减少内存占用的工作. 要优化内存,首先要做的就是分析内存占用情况.android提供了多个工具和命令进行内存分析. 第一层 Procran ...
- android 内存分析 名词解释,Android内存分析和调优(下)
出自:http://www.cnblogs.com/zdwillie/p/3287150.html 最后一部分是关于native heap,.dex,/dev/other的优化. Native He ...
- 深度数据包检测DPI开发解析
深度数据包检测(Deep packet inspection,缩写为 DPI)是一种特殊的网络技术,一般网络设备只会查看以太网头部.IP头部而不会分析TCP/UDP里面的内容这种被称为浅数据包检测;与 ...
- linux网络接口数据重新封包,Linux网络之设备接口层:发送数据包流程dev_queue_xmit...
写在前面 本文主要是分析kernel-3.8的源代码,主要集中在Network的netdevice层面,来贯穿interface传输数据包的流程,kernel 博大精深,这也仅仅是一点个人愚见,作为一 ...
- 手摸手教学 - Docker(五) 超级爽!持久化数据库-bind mounts!
若有疑问参考前面几篇Docker文章,循序渐进 不懂算我输,话不多说,实战为主! 作者:变优秀的小白 Github:关注YX-XiaoBai 爱好:Americano More Ice ! QQ学习交 ...
- Android/Linux系统性能分析及工具
1. CPU 1.1 CPU架构 CPU推动了所有软件的运行,因此通常是系统性能分析的首要目标.现代系统一般有多颗CPU,通过内核调度器共享给所有运行软件.当需求的CPU资源超过了系统力所能及的范围时 ...
最新文章
- 资本|五大科技巨头并购投资布局分析
- iPhone拍人像,人头直接不见了,什么情况?
- python实现logistic_用Python实现机器学习算法—Logistic 回归算法
- DC课程笔记-数字逻辑综合工具-DC Environment Attributes
- jQuery框架的简单使用(H5)
- 更改Tomcat虚拟内存大小
- UVALive - 7511 Multiplication Table(暴力+模拟)
- 成功,要“借力”,不要“尽力”(深刻!)
- 跨站点脚本(xss)_跨站点脚本(XSS)和预防
- DM达梦创建表空间用户
- 通配符的匹配很全面, 但无法找到元素 'mvc:annotation-driven' 的声明
- 最简单、图解:阿里云服务器上装 Docker 、 CentOS上 docker安装(3分钟装完)
- 文件服务器ping延时大,windowns 2008 ping 127.0.0.1延迟大的解决方法。
- cdr图片随意拉伸变形_如何操作才能使照片拉伸不变形
- 吴恩达深度学习5.2笔记_Sequence Models_自然语言处理与词嵌入
- 二叉搜索树-php实现 插入删除查找等操作
- [转]c# winform tcp connect timeout 连接超时设置
- m4a转换mp3格式怎么弄?
- excel 第15讲:条件格式与公式
- 安装 Linux mint后的一些设置
热门文章
- HackerRank Nimble Game
- hadoop NameNode HA 和ResouceManager HA
- Qt 读写XML文件
- Convert(varchar(8),Getdate(),108) 什么意思
- Java 将excel中的内容导入数据库中
- 相对熵(relative entropy或 Kullback-Leibler divergence,KL距离)的java实现(三)
- git第一次提交代码至远程仓库-强制推送
- vue路由切换时内容组件的滚动条回到顶部
- vue为什么要求组件模板只能有一个根元素
- 单片机中断机制对日常生活的启示_单片机原理部分课后习题解