我有两台电脑。
第一个是作为工作站。它运行深度学习代码并通过有线连接连接AP。
第二个是作为机器人的计算机。它发送来自其他传感器的视频和其他信息,并通过 LAN 卡连接 AP。
我想使用终端中的命令了解它们之间实时交换的数据包的数据大小。
如何测量它们通过网络相互传输的数据?
笔记:我仅使用本地无线局域网(没有互联网)
答案1
如果不了解更多,我会说 tcpdump 是一个好的开始
tcpdump -s0 -ni <WIFI-DEVICE> host <ROBO-IP> -w data.pcap
将 linux 机器和机器人之间的所有数据写入 data.pcap。
从那里您可以分析数据,例如
- scapy(python-lib)
- 线鲨
您可以跳过 data.pcap 文件
- 直接使用wireshark(需要Linux主机上的X)或
- 直接写入标准输出
tcpdump -s0 -ni <WIFI-DEVICE> host <ROBO-IP> -w -
那么你需要一个从 stdin 读取包并分析它们的程序:
tcpdump -s0 -ni <WIFI-DEVICE> host <ROBO-IP> -w - | <ANALYZER_PROG>
这个 ANALYZER_PROG 可以用 scapy 编写
对于 scapy 解决方案,我还会搜索堆栈溢出。
华泰
答案2
iftop
提供此功能。在 Ubuntu 上你可以使用以下命令安装它:
sudo apt-get install -y iftop
如果你想监控特定服务器的流量,你可以使用-f filter code
,例如:
iftop -f 'host <HOSTNAME/IP ADDRESS>'
你会看到类似这样的东西:
12.5Kb 25.0Kb 37.5Kb 50.0Kb 62.5Kb
+---------------+----------------+----------------+----------------+----------------
10.184.240.3 => 10.184.125.147 10.0Kb 8.00Kb 11.6Kb
<= 2.75Kb 2.29Kb 2.86Kb
------------------------------------------------------------------------------------
TX: cum: 58.0KB peak: 54.2Kb rates: 10.0Kb 8.00Kb 11.6Kb
RX: 14.3KB 10.2Kb 2.75Kb 2.29Kb 2.86Kb
TOTAL: 72.3KB 64.4Kb 12.8Kb 10.3Kb 14.5Kb
当然,您可以在手册中阅读该命令的不同标志。