根据Wireshark捕获数据包时间和长度绘制路由器发送给电脑数据的信号波形

上一期讲了:
根据Wireshark捕获数据包时间和长度绘制电脑发射信号波形-CSDN博客

这一期绘制路由器路由器发送给电脑数据的信号波形,这样可以比对电脑、路由器互相发送数据信号波形的关系。

一、筛选数据

192.168.1.103是我电脑的ip:

从Wireshark导出的数据中筛选发送给我电脑的部分:

无论Source是不是我的路由器ip:

数据包最终都是经由路由器发送给我的电脑。因为我的电脑连接路由器WiFi上网:

二、绘制波形

程序:

Matlab 复制代码
%zhouzhichao
%2025年8月20日
%把Wireshark捕获的数据绘制为波形图
%路由器发送给电脑的信号

clc
clear
close all

% 读取 Excel 文件
data = readtable('time and length direction=192.168.1.103.xlsx');

% 查看前几行
head(data)

% 单独取出时间和长度
time = data.Time;
length = data.Length;
% 基本清洗
mask = ~isnan(time) & ~isnan(length);
time   = time(mask);
length = length(mask);

%% 参数:每字节耗时
t_per_byte = 26.7e-9;     % 26.7 ns/Byte

%% 计算每个包的起止时间
t_end   = time(:);
t_start = t_end - length(:) .* t_per_byte;

% 若有负起点,截到 0(可按需要注释)
t_start = max(t_start, 0);

% 以起点升序排序
intervals = sortrows([t_start t_end], 1);

%% (可选)合并重叠或紧邻的区间,减少锯齿段数量
% "紧邻"的阈值(例如 < 1 ns 认为相连)
touch_eps = 1e-9;  % 1 ns
merged = [];
for k = 1:size(intervals,1)
    s = intervals(k,1); e = intervals(k,2);
    if isempty(merged)
        merged = [s e];
    else
        if s <= merged(end,2) + touch_eps
            % 重叠/相邻:向后扩展
            merged(end,2) = max(merged(end,2), e);
        else
            merged = [merged; s e];
        end
    end
end

%% 生成阶梯波形的 (t, y) 点列
t_plot = [];
y_plot = [];
for k = 1:size(merged,1)
    s = merged(k,1); e = merged(k,2);
    % 对于每个区间 [s, e],追加四个点: (s,0)->(s,1)->(e,1)->(e,0)
    t_plot = [t_plot; s; s; e; e];
    y_plot = [y_plot; 0; 1; 1; 0];
end

% 若希望在图上从 0 持续到首个 s 前也显示 0,可以在最前面加一个点
if ~isempty(t_plot)
    t_plot = [min(0, t_plot(1)); t_plot];
    y_plot = [0; y_plot];
end

%% 绘图
figure; 
stairs(t_plot, y_plot, 'LineWidth', 1.5);
ylim([-0.2 1.2]);
xlabel('Time (s)');
ylabel('Signal Wave');
title('Waveform from Wireshark Packets');
grid on;

set(gca, 'FontName', 'Times New Roman')
set(gca, 'FontSize', 15)

绘制效果:

相关推荐
寻星探路9 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
盟接之桥13 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
会员源码网13 小时前
理财源码开发:单语言深耕还是多语言融合?看完这篇不踩坑
网络·个人开发
米羊12114 小时前
已有安全措施确认(上)
大数据·网络
ManThink Technology15 小时前
如何使用EBHelper 简化EdgeBus的代码编写?
java·前端·网络
珠海西格电力科技16 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
QT.qtqtqtqtqt16 小时前
未授权访问漏洞
网络·安全·web安全
半壶清水16 小时前
[软考网规考点笔记]-软件开发、项目管理与知识产权核心知识与真题解析
网络·笔记·压力测试
JMchen12316 小时前
Android后台服务与网络保活:WorkManager的实战应用
android·java·网络·kotlin·php·android-studio
yuanmenghao17 小时前
Linux 性能实战 | 第 7 篇 CPU 核心负载与调度器概念
linux·网络·性能优化·unix