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

news2024/11/18 11:20:40

许多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实现了一些启发式来交换流向,但这种启发式不能太激进,因为我们可能会报告无效信息。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/437925.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++11新特性(下)

文章目录 1. 可变参数模板1.1 empalce相关接口函数 2. lambda表达式2.1 C98中的一个例子2.2 lambda表达式语法2.3 函数对象与lambda表达式 3. 包装器3.1 function包装器3.2 bind 1. 可变参数模板 C11的新特性可变参数模板能够让您创建可以接受可变参数的函数模板和类模板。相比…

Matlab与ROS---Action与Gazebo(六)

0. 简介 对于ROS1而言&#xff0c;其在Matlab当中相较于ROS2还有一些比较高级的用法&#xff0c;比如说我们接下来要说的Action和Gazebo仿真。 1. ROS Action ROS的Action行为模式当中也存在有一个客户端到服务器的通信关系。Action行为模式使用ROS主题将目标消息从客户机发…

【技巧】飞书多维表格零代码连接飞书多维表格,实现表单自动同步

飞书多维表格用户使用场景&#xff1a; 在公司日常工作中&#xff0c;各个部门使用飞书多维表格记录签订合同、文件审核、归档等事务&#xff0c;常需要行政人员辅助处理&#xff0c;将这些子表单的数据汇总到一个总表单中。但每个部门对应的事务较为复杂&#xff0c;子表单数量…

OpenCV例程赏析

OpenCV例程赏析 ①SITF特征检测匹配(目标查找)例程&#xff1a;…\opencv\sources\samples\python2\find_obj.py(asift.py) #!/usr/bin/env python ‘’’ Feature-based image matching sample. Note, that you will need the https://github.com/opencv/opencv_contrib r…

什么是内容交付网络?

内容交付网络&#xff08;CDN&#xff09;是一个全球分布的网络服务器或存在点&#xff08;PoP&#xff09;&#xff0c;其目的是提供更快的内容交付&#xff0c;内容被复制并存储在整个CDN中&#xff0c;因此用户可以访问存储在地理上离用户最近的位置的数据。这与仅在一个中央…

Flinkx/Datax/Flink-CDC 优劣势对比

Flinkx/Datax/Flink-CDC 优劣势对比_HiBoyljw的博客-CSDN博客 一、FlinkX简介 FlinkX是一款基于Flink的分布式离线/实时数据同步插件&#xff0c;可实现多种异构数据源高效的数据同步&#xff0c;其由袋鼠云于2016年初步研发完成&#xff0c;目前有稳定的研发团队持续维护&…

微前端解决方案

目录 微前端解决方案微前端的整体架构微前端部署平台 微前端解决方案 在理想的情况下&#xff0c;期望能达到&#xff0c;将一个复杂的单体应用以功能或业务需求垂直的切分成更小的子系统&#xff0c;并且能够达到以下能力&#xff1a; 子系统间的开发、发布从空间上完成隔离…

java学员学生综合测评管理系统

目 录 摘 要 I ABSTRACT II 第一章 绪论 1 1.1课题背景 1 1.2目的和意义 1 1.3开发工具及技术 2 1.3.1开发工具 2 1.3.2 JSP技术 2 1.4软硬件需求 3 第二章 系统分析 5 2.1可行性分析 5 2.1.1技术可行性 5 2.1.2经济可行性 5 2.1.3操…

GrassRouter多链路聚合通信系统保障公路网络稳定全面覆盖解决方案

近年来国内经济不断发展&#xff0c;城市道路交通能力迅速提高&#xff0c;各省市道路交通体系不断完善&#xff0c;促使高速公路运能得到极大提高&#xff0c;公路运输的通达性、舒适性得到明显提高。随着现代化高速公路的建设&#xff0c;新一代无线网络监控系统&#xff0c;…

Jmeter控制器 Logic Controller

控制器包含&#xff1a; 1.Loop Controller 作⽤&#xff1a;指定其⼦节点运⾏的次数&#xff0c;可以使⽤具体的数值&#xff0c;也可以使⽤变量    Forever选项&#xff1a;表示⼀直循环下去   如果同时设置了线程组的循环次数和循环控制器的循环次数&#xff0c;那循环…

大屏使用echart开发省市地图,并点击省获取市地图

1. 本文在基础上进行改进&#xff0c;后端使用若依后端 IofTV-Screen: &#x1f525;一个基于 vue、datav、Echart 框架的物联网可视化&#xff08;大屏展示&#xff09;模板&#xff0c;提供数据动态刷新渲染、屏幕适应、数据滚动配置&#xff0c;内部图表自由替换、Mixins注…

ZooKeeper的安装和配置过程

ZooKeeper的安装和配置过程 ZooKeeper服务器是用Java创建的&#xff0c;它需要在JVM上运行&#xff0c;所以需要使用JDK1.6及以上版本。 查看是否安装了Java环境: java -version没有安装的先去安装JDK&#xff1a;Linux 安装 JDK 官网下载zooKeeper 官网下载zooKeeper&…

基于 YOLOv8 的自定义数据集训练

图1.1&#xff1a;YOLOv8初始测试 YOLOv8&#x1f525;于 2023年1月10日由Ultralytics发布。它在计算机视觉方面提供了进展&#xff0c;带来了对我们感知、分析和理解视觉世界的巨大创新。它将为各个领域带来前所未有的可能性。 在速度、准确性和架构方面进行了相当大的改进。它…

vs的常用配置【以及vs常用的快捷键】

1、颜色设置 (1) 编译器的主题颜色设置 (2) 字体和颜色设置 (3) 字体大小 更快捷的修改字体大小方式&#xff1a;ctr鼠标滚轮 2、行号设置 默认就有&#xff0c;不用设置了 3、把解决方案资源管理器移动到左边 4、设置打开错误列表 5、自动保存-要手动使用快捷键 ctrs 代码…

DolphinScheduler×T3出行 | 打造车联网一站式数据应用交互体验

点击蓝字 关注我们 用户案例 | T3 出行 业务挑战 作为一家车联网驱动的公司&#xff0c;T3出行汇聚了“人、车、路、云”各端的海量数据。为了承载如此多元化的数据以更好地释放数据价值&#xff0c;T3出行构建了以Apache Hudi为基础的企业级的数据湖&#xff0c;并在此之上搭建…

Nginx rewrite ——重写跳转

Nginx常见模块 http http块是Nginx服务器配置中的重要部分&#xff0c;代理、缓存和日志定义等绝大多数的功能和第三方模块的配置都可以放在这模块中。作用包括&#xff1a;文件引入、MIME-Type定义、日志自定义、是否使用sendfile传输文件、连接超时时间、单连接请求数上限等…

代码随想录算法训练营第三十六天|435. 无重叠区间、763.划分字母区间 、56. 合并区间

文章目录 重叠问题435. 无重叠区间763.划分字母区间:star:56. 合并区间 重叠问题 这几道题都是判断区间重叠&#xff0c;区别就是判断区间重叠后的逻辑。 435. 无重叠区间 链接:代码随想录 解题思路&#xff1a; 这道题和射气球的题几乎思路一样 不断求出重叠的最小右区间&a…

【Spring篇】Spring相关概念

&#x1f353;系列专栏:Spring系列 &#x1f349;个人主页:个人主页 目录 一、介绍 &#x1f34a;1.为什么要学? &#x1f34d;2.学什么? &#x1f353;3.怎么学? 二、Spring相关概念 &#x1f352;1.Spring家族 &#x1f345;2.了解Spring发展史 &#x1f350;3.Spr…

Centos7 系列:磁盘挂载和磁盘扩容(新加硬盘方式)

磁盘挂载和磁盘扩容 一、系统环境二、磁盘挂载到新目录&#xff08;磁盘挂载&#xff09;2.1 查找新硬盘2.2 创建挂载目录2.3 创建新分区2.4 创建新物理卷2.5 创建新卷组2.6 创建新逻辑卷2.7 挂载到空目录 三、挂载到已有目录&#xff08;磁盘扩容&#xff09;3.1 查找新硬盘3.…

【Linux】冯诺依曼体系结构与进程的基础知识点

目录 1.冯诺依曼体系结构硬件[2~5]2.为什么要有内存&#xff1f;3.为什么不用CPU中的寄存器做存储单元&#xff1f;4.为什么我们的程序必须先被加载到内存中&#xff1f;5.在硬件层面数据流是如何流向的&#xff1f; 软件[6~10]6.操作系统Operator System7.操作系统的作用8.操作…