- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【智能路由器】ndpi深度报文源码框架讲义
【智能路由器】ndpi深度报文分析源码框架
某些需求可能会要求路由能精确的分析出流经路由的流量是属于什么类型,比如qq,facebook,支付宝、京东……
正好,有这么一个基于opendpi框架的深度报文分析的工具——ndpi
ndpi是在opendpi的基础上编写而来的协议分析工具。源代码编译后生成两个部分,一个是内核层的xt_ndpi.ko模块,用来实时分析流量,另一个是应用层的lib库,给ndpiReader这个工具提供库,用来分析抓包工具提供的文件或者底层网卡提供的数据包。
开发者必须为其想要分析的app的流量 对应开发一个 协议分析器,ndpi已经提供了不少现成的协议分析器,如http,QQ,twitter,vmware,yahoo,mysql,pplive等等。
本篇博客中作者arvik只叙述ndpi源码中形成 内核层的xt_ndpi.ko模块 的源码部分。
之后可能会写一篇介绍ndpi中已有的QQ协议分析器是怎么分析出OICQ协议以识别流量类型 和一篇实战型依葫芦画瓢编写 微信协议分析器的博客。
ndpi的分析过程:
当底层一帧数据被送入ndpi钩子的时候,流经结构大致如下:
1. 打包该数据帧,搜集l3、l4层报头信息
2. 查询链接跟踪(如果已被标识,则直接获取到该数据帧所属协议类型)
3. 从链接跟踪中未获取流量所属协议类型,则进入深度报文分析过程
4. 率先进行协议猜测,调用相应的协议分析器分析
5. 猜测协议错误、此时ndpi会分类遍历相关类型的协议分析器进行分析,直至分析出结果或遍历完所有相关的协议分析器
6. 将分析出的协议类型标记到链接跟踪中,以便下次可直接从连接跟踪中拿到协议类型
先来看内核模块代码:
几个重要结构
ndpi_detection_module_struct:各种协议分析器都将自己的信息都保存在该结构中
struct ndpi_detection_module_struct {
NDPI_PROTOCOL_BITMASK detection_bitmask; //等价于 struct xxx { uint32_t fds_bits[8]}; struct xxx dection; 其中fds_bits[8]每一位可代表一种协议,最多可代表256中协议
NDPI_PROTOCOL_BITMASK generic_http_packet_bitmask;
u_int32_t current_ts;
u_int32_t ticks_per_second;
#ifdef NDPI_ENABLE_DEBUG_MESSAGES
void *user_data;
#endif
/* 各种类型回调函数数组,每个协议都会对应一个回调函数 */
struct ndpi_call_function_struct callback_buffer[NDPI_MAX_SUPPORTED_PROTOCOLS + 1];
u_int32_t callback_buffer_size;
struct ndpi_call_function_struct callback_buffer_tcp_no_payload[NDPI_MAX_SUPPORTED_PROTOCOLS + 1];
u_int32_t callback_buffer_size_tcp_no_payload;
struct ndpi_call_function_struct callback_buffer_tcp_payload[NDPI_MAX_SUPPORTED_PROTOCOLS + 1];
u_int32_t callback_buffer_size_tcp_payload;
struct ndpi_call_function_struct callback_buffer_udp[NDPI_MAX_SUPPORTED_PROTOCOLS + 1];
u_int32_t callback_buffer_size_udp;
struct ndpi_call_function_struct callback_buffer_non_tcp_udp[NDPI_MAX_SUPPORTED_PROTOCOLS + 1];
u_int32_t callback_buffer_size_non_tcp_udp;
ndpi_default_ports_tree_node_t *tcpRoot, *udpRoot;
#ifdef NDPI_ENABLE_DEBUG_MESSAGES
/* 调试信息相关回
您可能关注的文档
- 【排队叫号系统】维诺触控方案书讲义.doc
- 【掌控中考】2016中考物理(湖北专版)复习配套课件(共320张PPT)讲义.ppt
- 【数学】1.1.2《程序框图课件》课件1(人教A版必修3)_1_讲义.ppt
- 【教学】中考复习公开课:文言文句子朗读节奏划分讲义.ppt
- 【教学课件】山人版思品8.4.2《交往讲艺术》讲义.ppt
- 【数学】1.5函数y=Asin(ωx+φ)的图象(人教A版必修4)1讲义.ppt
- 【新】2016年必威体育精装版一上语文第七单元教案讲义.docx
- 【数学】3.2 独立性检验的基本思想及其初步应用 课件(人教A版选修2-3)讲义.ppt
- 【数学导航】2016届高考数学大一轮复习 第一章 集合与常用逻辑用语同步练习 文讲义.doc
- 【数学】3.1 不等关系与不等式(人教A版必修5) 课件1讲义.ppt
- 必威体育精装版六年级下册道德与法治期末测试卷【典优】.docx
- 部编版六年级下册道德与法治第二单元《爱护地球 共同责任》测试卷及答案【名师系列】.docx
- 浙教版五年级上册数学第一单元 小数的意义与加减法 测试卷附答案(巩固).docx
- 部编版四年级上册道德与法治期末测试卷附答案【能力提升】.docx
- 部编版二年级上册道德与法治期末测试卷精品(名校卷).docx
- 南京银行股份有限公司校园招聘模拟试题附带答案详解1套.docx
- 南京化纤股份有限公司校园招聘模拟试题附带答案详解必考题.docx
- 升华集团控股有限公司校园招聘85人公开引进高层次人才和急需紧缺人才笔试参考题库答案详解版附答案.docx
- 南京德朔实业有限公司校园招聘模拟试题附带答案详解及参考答案1套.docx
- 四川怡和企业(集团)有限责任公司校园招聘85人公开引进高层次人才和急需紧缺人才笔试参考题库答案详解版.docx
最近下载
- 辩论赛培训PPT课件.pptx
- 2025年天津继续教育公需课考试答案-为中国式现代化提供强大动力和制度保障.docx VIP
- 一起非法运输烟花爆竹药料爆炸事故-事故案例-案例分析-爆炸事故.docx
- 11-《卓有成效的管理者》电子版.pdf
- 新青岛版六年级下册科学15太阳系(动画版).pptx
- Haier海尔241升风冷定频两门冰箱 BCD-241WDCV说明书用户手册.pdf
- 2025年部编版新教材语文小学一年级下册全册教案(含教学计划).docx
- 【高考生物】备战2025年高考易错题(新高考专用)易错点14 群落常见的“四个”理解误区(原卷版).docx
- 党风培训ppt课件.pptx VIP
- 领湃科技:衡阳弘新建设厂房和附属设施设备、机器设备租金价值资产评估报告.docx
文档评论(0)