初步了解DPI技术以及开源工具nDPI------下

nDPI

nDPI用于检测通信流中应用程序所属的应用层协议,针对对象为互联网流量,并能够解析互联网社区中的标准协议(HTTP和SMTP)和专用协议(Skype和Citrix)。对于标准协议,可以根据公开的协议规范进行协议解析和元数据提取。对于专用协议,由于其协议规范未公开,可以通过网络抓包,反向推断其协议结构并创建解析器。nDPI可以在Linux内核空间和用户空间中使用,并可以移植到Linux,Windows,MacOS X和BSD系列等大多数操作系统。

对于nDPI,一条数据流的协议识别生命周期为:

  1. nDPI首先解析数据报文的第3、4层,即IP包头和传输层包头,IP包头有源目的地址,传输层包头有端口号。IP包头中可以通过识别协议字段分析其为TCP还是UDP。
  2. 如果存在注册端口号,则首先通过端口号进行判断。
  3. 如果未进行匹配,则会通过协议规则库进行进一步识别。此时注意,如果运输层为TCP,则只用TCP承载服务的协议插件进行匹配。UDP同理。插件和数据包匹配失败存在两种情况,第一种是该数据包并不对应插件所属的协议,例如DNS数据包用SNMP插件进行匹配。第二种是与该数据包属于同一条流的后续数据包会匹配成功,这种情况下会继续进行匹配过程。
  4. 只要有协议匹配成功,则终止本条流的匹配过程。

DPI典型问题是多少数据报文能够识别出未知数据流所属的应用层协议。对大多数基于UDP的协议例如DNS、NetFlow或者SNMP等而言,一个数据报文足以。但是对于BT协议,需要8个数据报文才能获取签名信息。因此得出经验法则,最多单向的8个数据报文即可识别所属协议。

除了以上特点之外,nDPI也可应用于加密流量。虽然也有很大的作用,但实际仍然是在分析HTTPS明文的握手阶段。

  • SNI(不可靠,走CDN服务器)
  • 证书(TLS1.3证书加密)

另外相对OpenDPI,也增加了配置功能。

nDPI作为优秀的开源工具包,能够处理170种类型协议。并通过第三方验证其性能优于其他商业和开源工具包。采用双核CPU与硬件结合,能够处理满载10G的流量。该工具包适用于高性能和高检准率的场景。

nDPI的具体设计,例如流表管理,线程设计等主要体现在源码中,源码链接见上篇

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

往晓风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值