许多ntop产品,如ntopng、nProbe和PF_RING FT等都是基于网络流的。然而,并不是所有的用户都详细知道什么是网络流,以及它在实践中是如何工作的。这篇博客文章描述了它们是什么以及它们在实践中是如何工作的。

什么是网络流量

网络流是一组具有公共财产的数据包。它们通常由5元组密钥标识,这意味着给定流的所有数据包都具有相同的源和目的IP、源和目的端口以及应用协议(例如TCP)。在实践中,流密钥还至少包括VLAN Id,并且最终包括诸如封装业务的隧道ID之类的其他属性。流是一种通过使用公共密钥对数据包进行聚类然后对流量进行分类的方法,它与运行netstat-na等命令时在计算机上看到的情况类似。每个流都有各种计数器,用于跟踪流数据包/字节和各种其他属性,如流计时器(第一个和最后一个流数据包的时间)、统计信息(重传、数据包无序等)和安全属性(例如流风险)。

流量是如何存储在内存中的?

网络流保存在一个名为流缓存的数据结构中(通常使用哈希表实现),该数据结构不断地提供传入的数据包。流高速缓存在存储器中存储活动流(即,当接收到属于流的分组时仍然活动的那些流)。下面您可以看到ntopng如何显示实时流缓存及其5元组密钥。

网络流何时开始?

一旦观察到第一个流分组,网络流就开始。在启动时,流缓存是空的,并且随着数据包的接收而被填满。对每个传入的数据包进行解码,并计算流密钥。在流缓存中搜索这样的密钥:如果没有找到,则向流缓存中添加新的条目,否则更新具有这样的密钥的现有条目,即更新流数据包/字节和计时器的计数器。因此,本质上,当观察到第一个流分组时,流就开始了。

网络流何时结束?

每个流都有两个老化计时器:空闲计时器(它跟踪自接收到最后一个流数据包以来已经过去了多少时间)和持续时间计时器(它记录流持续的时间)。当这两个老化定时器中的一个到期时,即当流空闲太长(例如,有一段时间没有接收到分组)或当流在流高速缓存中存储太长时,流结束。在nProbe和PF_RING FT中,当流过期时,它将从流缓存中删除并发送到收集器。相反,在ntopng中,从流缓存中删除流只是为了空闲,因为持久流不会从缓存中删除。原因是像nProbe这样的流量探测器需要定期向收集器(例如ntopng)报告有关监控流量的信息,因此流量会被“剪切”并发送到收集器。相反,在ntopng中,不需要通知收集器,因此只要在首选项中配置了必要的内容,流就会留在内存中。

流的关键点和方向

如果流是在接收到第一个流数据包时创建的,那么我们可以将流客户端视为真正的网络客户端。例如,从主机1.2.3.4上的客户端到主机5.6.7.8的SSH,这种通信的流程将是1.2.3.4:X<->5.6.7.8:22(我们假设SSH在端口22上运行)。看起来是对的吧?但有时你会看到,在流缓存中,这样的流被报告为5.6.7.8:22<->1.2.3.4:X。为什么?这可能是由于各种原因造成的:

  • 应用程序(例如ntopng)在流开始后启动,ntopng观察到的第一个数据包是5.6.7.8:22->1.2.3.4:X,而不是1.2.3.4:X->5.6.7.8:22。
  • 流使用正确的密钥存储在缓存中,但有一段时间(例如2分钟)没有交换数据包,因此应用程序已将流声明为过期,并将其从流缓存中删除。然后,如果突然观察到一个新的数据包,则该数据包可能会被发送到错误的方向(例如5.6.7.8:22->1.2.3.4:X),因为这可能是服务器的保存数据包。在这种情况下,流以相反的方向(9,因此是错误的)放置在高速缓存中。

可以配置ntopng(通过首选项)和nProbe(使用带有-t和-d的命令行)流超时,因此这些问题得到了缓解(尽管没有完全解决)。然而,仅仅调整超时是不够的,特别是对于UDP流,因为与TCP相反,没有TCP标志可以用来猜测真实的流方向。因此,ntopng实现了一些启发式来交换流向,但这种启发式不能太激进,因为我们可能会报告无效信息。

我们希望这篇文章能让大家明白基于流量的网络流量分析是如何工作的,以及为什么有时会观察到一些“意外”行为,不是因为漏洞,而是因为这些测量的性质。

虹科分享 | 基于流的流量分类的工作原理 | 网络流量监控相关推荐

  1. 虹科分享|太赫兹成像技术的分类与原理

    太赫兹波定义为0.1-10THz范围内的电磁波,处于微波与红外之间,具有许多独特的性质,比如穿透性.非电离辐射.吸水性.指纹频谱等,在材料识别.安全检查与无损检测方面有诸多应用. 图1 太赫兹波在电磁 ...

  2. 虹科分享 | 带您了解太赫兹成像技术及系统方案

    上篇 太赫兹波定义为0.1-10THz范围内的电磁波,处于微波与红外之间,具有许多独特的性质,比如穿透性.非电离辐射.吸水性.指纹频谱等,在材料识别.安全检查与无损检测方面有诸多应用. 图1 太赫兹波 ...

  3. 虹科分享 | 如何测试与验证复杂的FPGA设计(3)——硬件测试

    仿真和验证是开发任何高质量的基于 FPGA 的 RTL 编码过程的基础.在之前的文章中,我们介绍了面向实体/块的仿真以及如何在IP核中执行面向全局的仿真,即通过在每个输入信号上生成激励并验证 RTL ...

  4. 虹科分享 | 简单实用的CANopen介绍,看完你就明白了(2)——CANopen框架与七种服务类型

    目前,CANopen通讯协议已经在工业领域得到了广泛的使用,由于其面向对象的设计思路,CANopen协议已成为欧洲等国家的自动化公司标配的通讯接口之一.在本系列文章中,我们将介绍CANopen协议的基 ...

  5. 虹科分享 | 虹科智能自动化2022文章精选

    虹科智能自动化事业部一直围绕着工业自动化.能源管理与楼宇自动化三大方向,为客户提供最满意的技术服务和最适合的解决方案,并结合客户需求.行业发展动向和产品资讯,虹科智能自动化团队为大家带来了丰富的技术文 ...

  6. 虹科分享 | 《面向金融行业的商业智能解决方案》白皮书

    在以数据为中心的商业环境中,金融业面临着众多挑战,包括瞬息万变的市场动态.监管要求以及客户期望.金融行业从各种来源生成大量数据,包括交易.客户互动.市场数据和内部运营等.然而,如果缺乏有效的数据管理和 ...

  7. 编码器的分类及工作原理

    编码器的分类及工作原理 编码器(encoder)是将信号(如比特流)或数据进行编制.转换为可用以通讯.传输和存储的信号形式的设备.编码器把角位移或直线位移转换成电信号,前者称为码盘,后者称为码尺.按照 ...

  8. 光立方原理讲解_电工基础知识——光电耦合器的分类、工作原理和检测以及应用...

    大家好,今天我们主要讲解一下光电耦合器的分类.工作原理和检测以及其在生活中的应用. 光电耦合器 1.光电耦合器的分类 光电耦合器分两类:普通光电耦合器和线性光电耦合器.普通光电耦合器的输入.输出间传输 ...

  9. 网络变压器的介绍分类及工作原理

    网络变压器的介绍分类及工作原理 1.网络变压器的介绍 网络变压器也被称作"数据汞",也可称为网络隔离变压器.它在一块网络接口上所起的作用主要有两个,一是传输数据,它把PHY送出来的 ...

最新文章

  1. 2022-2028年中国电熔镁行业市场研究及发展趋势分析报告
  2. 1.6 字符串的比较
  3. 【译】深入理解LSTM网络
  4. Java序列化接口Serializable接口的作用总结
  5. Opportunity的chance of success的赋值逻辑
  6. rabbitmq 取消消息_认识RabbitMQ从这篇文章开始
  7. Python——正则表达式特殊符号及用法
  8. PostgreSQL 12系统表(11)pg_user
  9. mysql读数据入库es_ES 实现实时从Mysql数据库中读取热词,停用词
  10. c#面试3(选择题)
  11. linux下实现在程序运行时的函数替换(热补丁)
  12. Windows server 2012 R2 服务器强制删除文件夹
  13. apk部分手机安装失败_安装APK文件时提示“解析包出现错误”,看完就知道怎么做了!...
  14. 张小龙是高球冠军,大前研一是物理学家:​为什么牛人在很多领域都是世界第一?...
  15. Pro Tools正确卸载姿势大全
  16. 两种方法实现卸载apk应用程序
  17. ubuntu安装opencv viz模块
  18. 微型计算机的常规内存是指,PC机性能指标中的内存容量一般指的是是什么啊?
  19. QuickSearch eXtended配置
  20. python新建文件夹和文件夹_Python创建文件夹与文件的快捷方法

热门文章

  1. 质因数分解,(结果简化版)
  2. 苹果账号被盗用户:支付宝、微信被盗刷追偿难
  3. 遥控汽车的编程c语言,智能小车循迹、避障、红外遥控C语言代码.docx
  4. 22071班华清远见(上海中心)
  5. Authing 背后的计算哲学
  6. Backpack VI
  7. Free校园小程序 开源发布,一款集合表白墙、失物招领、兼职和闲置二手买卖的云开发微信小程序
  8. 保留两位小数(四舍五入)
  9. js将文件大小字节转换成B,KB,MB,GB,TB方法
  10. 如何注册和设置 zoom Background