目前在

分为两个层次:其一是应用分析,学会如何使用;其二是原理分析,看懂它如何实现。

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.

nDPI-dev分析的更多相关文章

  1. 协议的注冊与维护——ndpi源代码分析

    在前面的文章中,我们对ndpi中的example做了源代码分析.这一次我们将尽可能深入的了解ndpi内部的结构和运作.我们将带着以下三个目的(问题)去阅读ndpi的源代码. 1.ndpi内部是怎么样注 ...

  2. Linux网络之设备接口层:发送数据包流程dev_queue_xmit

    转自:http://blog.csdn.net/wdscq1234/article/details/51926808 写在前面 本文主要是分析kernel-3.8的源代码,主要集中在Network的n ...

  3. 系统磁盘空间/dev/xvda1占满原因分析

    由于项目原因需要定期检查磁盘空间占用情况,常用检查命令如下: 1.查看磁盘空间大小 df -lh 2.查看对应文件大小 du --max-depth=1 -h / 于一日发现在使用Flume + Ka ...

  4. plsql dev中Dynamic Performance Tables not accessible分析解决(转)

    使用plsql dev的朋友多遇到过类此如下面的提示: Dynamic Performance Tables not accessible, Automatic Statistics Disabled ...

  5. [dev][ipsec][dpdk] strongswan/dpdk源码分析之ipsec算法配置过程

    1 简述 storngswan的配置里用一种固定格式的字符串设置了用于协商的预定义算法.在包协商过程中strongswan将字符串转换为固定的枚举值封在数据包里用于传输. 协商成功之后,这组被协商选中 ...

  6. <转> plsql dev中Dynamic Performance Tables not accessible分析解决

    相信很多使用plsql dev的朋友多遇到过类此如下面的提示: Dynamic Performance Tables not accessible, Automatic Statistics Disa ...

  7. 根文件系统的构建与分析(三)之根文件目录及最简/dev目录

    根文件系统的构建与分析(三) 转载请注明 http://blog.csdn.net/jianchi88   Author:Lotte   邮箱:baihaowen08@126.com 一.FHS(Fi ...

  8. 前端性能优化之利用 Chrome Dev Tools 进行页面性能分析

    背景 我们经常使用 Chrome Dev Tools 来开发调试,但是很少知道怎么利用它来分析页面性能,这篇文章,我将详细说明怎样利用 Chrome Dev Tools 进行页面性能分析及性能报告数据 ...

  9. Dev C++编写C/C++程序 出现[Error] ld returned 1 exit status报错分析及解决

    debug系列第一弹,不知道大家写程序的时候是不是都遇到过如题的报错. 我本人是经常遇到这行熟悉的令人不知所措的报错,可能是我太笨了 有时候百度无果也差不到原因,那就汇总一下目前我遇到的情况吧--持续 ...

  10. android studio的Beta, Canary, Dev, Stable四种Channel版本介绍、分析与选择

    一.概述 在Android Studio下载官网上,有如下介绍: ` Android Studio's built-in update mechanism can be set to receive ...

随机推荐

  1. JDBC 查询

    //查询""SMITH"的empno import java.sql.Connection; import java.sql.DriverManager; import ...

  2. Linux升级python3之后yum不能正常使用解决方法一:重新配置yum源

    [转]linux下yum安装及配置 分步阅读 公司使用的是linux搭建服务器,linux安装软件能够使用yum安装依赖包是一件非常简单而幸福的事情,所以这里简单介绍一下linux安装yum源流程和操 ...

  3. React之ref

    作为响应式开发框架React,我们知道他是数据驱动的,但有时候避免不了还是得动用到DOM操作,这个时候我们就可以用到ref:用法如下: 然后这样做有个弊端,当一个 ul 下面的 li 是动态添加的时候 ...

  4. 【QT】Pycharm add QT Desinger

    1. https://www.cnblogs.com/dalanjing/p/6978373.html -m PyQt5.uic.pyuic  $FileName$ -o $FileNameWitho ...

  5. 2019年IntelliJ IDEA 最新注册码,亲测可用(截止到2020年3月11日)

    2019年IntelliJ IDEA 最新注册码(截止到2020年3月11日) 操作步骤: 第一步:  修改 hosts 文件 ~~~ 在hosts文件中,添加以下映射关系: 0.0.0.0 acco ...

  6. 论文速读(Chuhui Xue——【arxiv2019】MSR_Multi-Scale Shape Regression for Scene Text Detection)

    Chuhui Xue--[arxiv2019]MSR_Multi-Scale Shape Regression for Scene Text Detection 论文 Chuhui Xue--[arx ...

  7. Windows 10 关闭Hyper-V

    以管理员身份运行命令提示符 关闭 bcdedit /set hypervisorlaunchtype off 启用 bcdedit / set hypervisorlaunchtype auto 禁用 ...

  8. sql server中的while循环语句

    语法格式: while 条件 begin ....... end declare @num begin update SDetail end

  9. Excel坐标自动在AutoCad绘图_4

    众所周知,Excel对数据处理的功能非常强大,它可以进行数据处理.统计分析已经辅助决策的操作,该软件已经渗透到各个领域.作为一个测绘人,GISer, 也经常利用excel完成一些测量表格的自动化计算, ...

  10. MyBatis探究-----核心配置文件mybatis-config.xml中配置mappers的几种方式

    1.package name="映射文件所在包名" 必须保证接口名(例如IUserDao)和xml名(IUserDao.xml)相同,还必须在同一个包中 例如:<packag ...