网络流量预测的学习——持续更新ing

news2024/11/29 11:29:48

文章目录

    • 前情提要
      • 何为网络流量
      • 网络流量分析(NTA)
      • 网络流量组成
      • 网络流量处理过程
    • 预测网络流量的工具
      • wireshark
      • brim(zui)
    • 机器学习中的网络流量预测
    • 参考文章

前情提要

记录一些有关网络流量的学习

何为网络流量

网络流量是指在计算机网络中数据的传输量,通常是在一段时间内通过网络的数据包的数量或大小。它可以是一种指标,用于衡量网络的使用情况和负载。网络流量可以分析网络的性能、监控资源使用情况、优化网络结构、确保网络安全,并帮助诊断网络问题。它对于网络运营商、网站管理员和网络安全专家来说都是非常重要的,因为它影响到网络的性能、可用性和安全性。

网络流量分析(NTA)

1.检查网络流量以表征所使用的常用端口和协议
2.为我们的环境建立监视和响应威胁以及确保尽可能深入地了解我们组织的网络行为

网络流量的管理和分析是确保网络健康、安全和高效运行的关键组成部分。

网络流量组成

网络流量的主要组成部分包括以下几个方面:

  1. 应用层数据:这是用户实际传输和接收的数据,如网页内容、电子邮件、文件传输、视频流、音频流等。这些数据是网络流量的主要载体,直接为用户提供服务。

  2. 传输层协议

    • TCP(传输控制协议):提供面向连接的、可靠的数据传输,确保数据包按顺序且无误地到达目的地。常用于网页浏览、电子邮件等需要可靠传输的应用。
    • UDP(用户数据报协议):提供无连接、不保证可靠性的快速传输,适用于对速度要求高且能容忍一定数据丢失的应用,如视频直播、在线游戏。
  3. 网络层协议

    • IP(互联网协议):负责定义数据包的地址和路由,使数据能够在不同的网络之间传输。包括IPv4和IPv6版本。
  4. 链路层协议:如以太网协议、Wi-Fi协议等,负责在同一网络段内传输数据。

  5. 控制和管理流量

    • ARP(地址解析协议):用于将IP地址解析为物理MAC地址。
    • ICMP(互联网控制消息协议):用于网络诊断和错误报告,如ping命令。
    • 路由协议:如OSPF、BGP,用于更新和维护路由信息。
  6. 安全协议和加密数据

    • SSL/TLS:用于安全的网页浏览和数据传输。
    • VPN(虚拟专用网络)流量:用于建立安全的网络连接,保护数据的机密性和完整性。
  7. 多媒体流量

    • VoIP(网络语音协议):用于语音通信。
    • 视频会议和流媒体:占用较大带宽,对实时性要求高。
  8. 广播和组播流量:用于在网络中向多个节点发送数据,如网络服务发现、IPTV等。

  9. 文件共享和P2P流量:如BT下载、eMule等,涉及大量的数据传输。

  10. 恶意流量

    • 网络攻击:如DDoS攻击、网络入侵等。
    • 病毒和蠕虫传播:消耗网络带宽,可能导致网络性能下降。

网络流量处理过程

在这里插入图片描述
获取流量、过滤降噪、分析探索、检测和警报、修复和监控

预测网络流量的工具

以下提到两款工具,一个是经典的wireshark,另外一个是birm

wireshark

官网地址:https://www.wireshark.org/
很多网络安全学习者对于这款工具并不陌生,在集成工具库镜像kali中,自带有这款工具
若是与CTF、取证分析等方面上,则更是需要与这款工具打很多交道。
网络分析工具——WireShark的使用(超详细)

brim(zui)

这款工具我也是近日接触,还没过多上手,不过ui界面方面的话会比wireshark更加舒服些(功能上可以与wireshark联动使用)

官网下载地址:https://www.brimdata.io/download/,如图可以下载桌面版软件
在这里插入图片描述
安装后,名称实际为zui
我试着测试了下载的pcap数据包(https://aistudio.baidu.com/datasetdetail/52162),加载了差不多半小时才好。
在这里插入图片描述
可以进行一些查询,比如模糊查询secret
在这里插入图片描述
还有http id.orig_h==203.181.20.82
在这里插入图片描述

机器学习中的网络流量预测

深度学习

主要应用算法:
卷积神经网络CNN、循环神经网络RNN、长短记忆网络、自编码器、卷积递归神经网络

环境准备

pip install numpy pandas keras tensorflow scikit-learn

数据处理
flowdata.csv下载地址:https://github.com/ftconan/python3/blob/master/pandas_demo/flowdata.csv

import numpy as np
import pandas as pd
from sklearn.preprocessing import MinMaxScaler

# 加载数据
data = pd.read_csv('flowdata.csv')

# 选择时间序列数据
time_series = data['flow'].values

# 归一化数据
scaler = MinMaxScaler()
time_series_scaled = scaler.fit_transform(time_series.reshape(-1, 1))

# 分割数据集,定义lookback窗口大小
lookback = 60
X, y = [], []

# 创建输入X和输出y
for i in range(lookback, len(time_series_scaled)):
    X.append(time_series_scaled[i-lookback:i, 0])
    y.append(time_series_scaled[i, 0])

X, y = np.array(X), np.array(y)

# Reshape输入数据以适应LSTM的输入格式
X = np.reshape(X, (X.shape[0], X.shape[1], 1))

# 分割训练集和测试集
train_size = int(len(X) * 0.8)
X_train, X_test = X[:train_size], X[train_size:]
y_train, y_test = y[:train_size], y[train_size:]

from keras.models import Sequential
from keras.layers import Dense, LSTM

# 构建LSTM模型
model = Sequential()
model.add(LSTM(50, activation='relu', input_shape=(X_train.shape[1], 1)))
model.add(Dense(1))

# 编译模型
model.compile(optimizer='adam', loss='mean_squared_error')

# 训练模型
model.fit(X_train, y_train, epochs=100, batch_size=32)

# 进行预测
predicted_flow = model.predict(X_test)

# 将预测的结果反归一化
predicted_flow = scaler.inverse_transform(predicted_flow)

# 输出预测结果
print(predicted_flow)

MinMaxScaler 用于归一化数据,因为LSTM对数据的缩放比较敏感。
LSTM 模型 是一个简单的两层结构,适合处理时间序列数据。
训练数据 被分割为80%的训练集和20%的测试集。

另有一个使用R语言来处理网络流量的项目:https://github.com/rankinjl/internet-traffic-stats-project/blob/master/DataSetProject.R
在这里插入图片描述

我将之转换成了对应python代码

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.arima.model import ARIMA
from statsmodels.tsa.stattools import acf, pacf
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from statsmodels.tsa.holtwinters import ExponentialSmoothing
from statsmodels.tsa.seasonal import seasonal_decompose

# 加载数据
inttraffic = pd.read_csv('inttraffic.csv')

# 解析时间和流量数据
inttraffic['Time'] = pd.to_datetime(inttraffic['Time'], format='%m.%d.%Y %H:%M')
time = inttraffic['Time']
traffic = inttraffic['Internet traffic data (in bits) from a private ISP with centres in 11 European cities. The data corresponds to a transatlantic link and was collected from 06:57 hours on 7 June to 11:17 hours on 31 July 2005. Data collected at five minute intervals.'].astype(float)

T = len(time)
t = np.arange(1, T + 1)

# 绘制时间和流量图
plt.plot(t, traffic)
plt.title('Internet Traffic vs Time')
plt.xlabel('Time (every 5 minutes)')
plt.ylabel('Traffic (bits)')
plt.show()

# 去除最后100个数据点
traffic = traffic[:-100]
T -= 100
t = t[:-100]

# 线性拟合
linearfit = LinearRegression()
linearfit.fit(t.reshape(-1, 1), traffic)
traffic_pred = linearfit.predict(t.reshape(-1, 1))

# 绘制线性拟合
plt.plot(t, traffic, label='Actual Traffic')
plt.plot(t, traffic_pred, label='Linear Fit', color='red', linestyle='dashed')
plt.title('Linear Fit of Traffic')
plt.xlabel('Time (every 5 minutes)')
plt.ylabel('Traffic (bits)')
plt.legend()
plt.show()

# 残差图
residuals = traffic - traffic_pred
plt.plot(t, residuals)
plt.title('Residuals vs Time')
plt.xlabel('Time (every 5 minutes)')
plt.ylabel('Residuals')
plt.show()

# 检查自相关
plt.acorr(residuals, maxlags=50)
plt.title('Autocorrelation of Residuals')
plt.show()

# 使用ARIMA模型进行拟合
model = ARIMA(traffic, order=(1, 2, 3))
fit_model = model.fit()

# 预测100个未来数据点
forecast = fit_model.forecast(steps=100)

# 绘制预测结果
plt.plot(t, traffic, label='Actual Traffic')
plt.plot(np.arange(T, T + 100), forecast, label='Forecast', color='blue')
plt.title('Forecasts from ARIMA(1,2,3)')
plt.xlabel('Time (every 5 minutes)')
plt.ylabel('Traffic (bits)')
plt.legend()
plt.show()

# 计算预测误差 (SSE)
last_forecasts = traffic[-100:]
sse = mean_squared_error(last_forecasts, forecast[:len(last_forecasts)]) * len(last_forecasts)
print(f'Sum of Squared Errors (SSE): {sse}')

代码说明

数据加载:
使用 pandas 加载CSV文件并解析时间序列数据。

绘图和线性拟合:
1.使用 Matplotlib 绘制时间和流量图。
2.通过 LinearRegression 进行线性拟合,并绘制拟合曲线。
3.计算残差,并绘制残差图以检查线性模型的残差。

ARIMA模型:
1.使用 statsmodels 库的 ARIMA 模型来拟合流量数据,预测未来100个数据点。
2.使用 mean_squared_error 计算最后100个点的预测误差 (SSE)。

绘制预测结果:
绘制ARIMA模型的预测值,与实际流量进行比较。

结果
1.线性拟合 将简单地拟合趋势,绘制出实际流量数据的线性趋势。
2.ARIMA预测 则捕捉了数据的自相关特性,提供了更加复杂的预测结果。
3.SSE(误差) 表示模型预测与实际数据的误差大小。

参考文章

借鉴

网络流量详解
深度学习中的网络流量预测

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

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

相关文章

【D3.js in Action 3 精译_033】4.1.0 DIY 实战:如何通过学习 d3.autoType 函数深度参与 D3 生态建设

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一部分 D3.js 基础知识 第一章 D3.js 简介(已完结) 1.1 何为 D3.js?1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践(上)1.3 数据可…

又被特斯拉演了?继续“画饼式”发布Robotaxi,产业链静观其变

9月底的暴涨后,A股资产正经历回调,科技板块变现参差。不过,无人驾驶领域的预期依然很强。 10月10日科技股全线调整之际,无人驾驶板块盘中的巨幅震荡拉升就是典型的预热动作。东箭科技、天龙股份等多只智能驾驶个股涨停。核心驱动…

ACR、PZ、AMC仪表接线说明及通讯协议解析

1.ACR/PZ/AMC多功能表接线说明 三相三线接线说明 使用场合负载是平衡系统,并且没有零线的场合。 1. 端子号1,2为辅助电源: 如上图,接入相电压220V输入。其中辅助电源的火线加装5A保险丝,零线直接接到零排上。 2&am…

iPhone使用指南:如何在没有备份的情况下从 iPhone 恢复已删除的照片

本指南将向您展示如何在没有备份的情况下从 iPhone 恢复已删除的照片。我们所有人在生活中的某个时刻都一定做过一些愚蠢的事情,例如从手机或电脑中删除一些重要的东西。这是很自然的,没有什么可羞耻的。您可能在辛苦工作一天后回来。当突然想看一些照片…

C++开发五子棋游戏案例详解

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

JavaSE——集合3:ArrayList、Vector

目录 一、ArrayList的注意事项 二、ArrayList的扩容机制(重要) 三、Vector底层结构和源码剖析 1.Vector类的定义说明 2.Vector底层也是一个对象数组 3.Vector是线程同步的,即线程安全,Vector类的操作方法带有synchronized 4.在开发中&#xff0c…

obs录屏怎么样?四大优秀录屏工具亲测好用!

录屏需求日盛,接下来我们就来聊聊几款市面上较为热门的录屏软件——福昕录屏大师、转转大师录屏、爱拍录屏以及经典的obs录屏,希望能给寻找合适录屏工具的您带来一些灵感。 福昕录屏大师 直达链接:www.foxitsoftware.cn/REC/ 如果你刚开始…

如何在组织内推广和应用六西格玛设计?

六西格玛设计(Design for Six Sigma, DFSS)作为一种先进的流程设计和优化方法论,旨在通过设计阶段的创新与严谨,确保产品或服务从一开始就具备高度的质量和客户满意度。本文,深圳天行健企业管理咨询公司将深入探讨如何…

HCIP--以太网交换安全(三)MAC地址漂移防止与检测

MAC地址漂移防止与检测 一、MAC地址漂移防止与检测知识点 1.1MAC地址漂移的概述 MAC地址漂移是指交换机上一个vlan内有两个端口学习到同一个MAC地址,后学习到的MAC地址表项覆盖原MAC地址表项的现象。 1.2.MAC地址漂移的防止方法 (1)配置…

浸入式电磁流量计如何工作?

磁力如何产生可感应电压? 所有磁流量计都利用法拉第感应定律的指导原理,该定律显示了“表达变化的磁场在电路中感应出电压的定量关系”。 该感应定律可用于测量导体液体(如水)的速度,而无需移动部件。与其他类型的仪…

『网络游戏』游戏数据库管理类查询插入账号存储【23】

新建数据库连接 新建数据库 打开数据库 新建表 账号数据 设计表 - 添加属性 对照服务器工程GameMsg增加对应字段 保存后在服务器脚本中操作数据库数据 添加数据层文件夹 创建脚本:DBMgr 编写脚本:DBMgr.cs 修改脚本:ServerRoot.cs 将MySql.d…

两个数相加(c语言)

1./给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target // 的那 两个 整数,并返回它们的数组下标。 //你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。你可以按任意顺序返回答案。 /…

“城市酷选”排队免单模式:创新机制引领本地消费新风尚

近期,众多朋友对排队免单模式展现出浓厚兴趣,旨在借助商家优惠吸引顾客,激活本地商业活力,推动实体消费。自去年下半年起,本地生活服务平台热度持续攀升,其中,排队免单模式作为多商家联合的优惠…

DGX的优势

NVIDIA DGX 的 AI 领导力 文章目录 前言一、概述推动跨行业的 AI 创新二、优势客户体验到哪些好处?1. 利用生成式 AI 释放研究人员的潜力2. 加快现代应用程序的上市时间3. 利用 AI 改善客户体验三、性能性能很重要1. 为世界上最先进的超级计算机提供动力2. 打破世界纪录3. 提高…

『网络游戏』进入游戏主城UI跳转主城【26】

首先在Unity客户端中创建一个空节点重命名为MainCityWnd 设置父物体为全局 创建空节点钉在左上角作为角色信息UI 在钉子下创建Image 创建脚本:MainCityWnd.cs 编写脚本:MainCityWnd.cs 挂载脚本 创建脚本:MainCitySys.cs 编写脚本&#xff1a…

《Programming from the Ground Up》读后感

之所以看这本书,是想了解一些跟汇编相关的知识,打开这本书后就被作者的观点——“If you don’t understand something the first time, reread it. If you still don’t understand it, it is sometimes best to take it by faith and come back to it …

MeterSphere接口自动化平台调试

1。后置脚本节目 //导入json包 import org.json.*; import com.decode.DecodeMain; String responseprev.getResponseDataAsString(); String result DecodeMain.DecodeUtil(response); log.info(“获取批次账单id result:”result); //转换为Object对象类型 JSONObject data_…

Linux基础项目开发day2:量产工具——输入系统

文章目录 前言一、数据结构抽象1、数据本身2、数据本身3、input_manager.h 二、触摸屏编程1、touchscreen.c 三、触摸屏单元测试1、touchscreen.c2、上机测试 四、网络编程netiput.c 五、网络单元测试1、netiput.c2、client.c3、上机测试 六、输入系统的框架1、框架思路2、inpu…

5.STM32的串口通信

5.STM32的串口通信 两个串口之间的通信 发送端口:TX 接受端口:RX 注意一台设备的TX 与 另一台RX相连接 共地:还需要将两端地线相连接,将设备的参考电势在同一水平(通讯的前提) 建立连接 在cubeIDE中 图…

独家揭秘!新手铲屎官不可错过的宠物空气净化器选购攻略就在这

终于给我等到了双十一,这可是一年一度的促销力度最大的购物狂欢节,不要问我为什么这么期待,因为我养了猫,猫咪掉毛太严重了,必须得买一个宠物空气净化器,不然我在这个家就呆不下去了。 最近国庆节刚带猫回…