报文批量处理方法简介

       有这样一个场景,有一大堆历史报文,但是这些报文中有很多无用的流量,我需要把这些有用的流量提取出来以一个报文形式进行存储。在Linux上处理的脚本如下:

#!/bin/bash
find allPcap -name '*.pcap' > pcapFileName.txt
fileDic="newPcap"
mkdir -p $fileDic
while read LINE
do
  echo ${LINE##*/}
  echo $LINE
  tshark -r $LINE -Y "http.host contains \"baidu\"" -w $fileDic/${LINE##*/}
 
 done < pcapForFileName.txt
 
mergecap -w newBigPcap.pcap $fileDic"/*.pcap"
reordercap -n newBigPcap.pcap newBigPcap_in_order.pcap

       这里面主要运用到如下的命令:

       1,find命令,该命令主要用于文件的遍历,find allPcap -name '*.pcap' > pcapFileName.txt,即将allPcap目录下面所有的以.pcap结尾的文件名输入到pcapFileName.txt文件中,同时find支持递归。

       2,tshark命令,该命令是wireshark这个图形化分析工具的命令行版本,在windows和linux均可以使用。本人习惯在linux使用,值的注意的是在centos上面使用yum install wireshark就会自动的安装tshark,但是由于一般的yum源的wireshark版本还都是停留在1.X的版本。我一般是到wireshark的官网下载源码,进行编译安装,安装的一些事项我在这里也有提及。因为tshark的一些特性在高版本会有些优化,同时lua也只有在1.10之后的版本才会支持。

       3,mergecap 命令,该命令将fileDic文件下新生成的所有pcap文件进行合并生成一个新的pcap文件newBigPcap.pcap。该命令的作用是将pcap文件进行简单的拼接,并不会按照时间进行排序。
       4,reordercap的作用是对pcap报文按照时间进行排序。newBigPcap.pcap 为输入的文件,而newBigPcap_in_order.pcap则为按时间戳增长之后的文件。

       以上的工具都是wireshark所提供的使用频率比较高的工具,比如tshark,mergecap 以及reordercap,可以看到这些工具都是按照报文为单位进行处理的。如果对报文进行排序,比如按照流进行排序,由于wireshark没有提供类似的工具,而且着属于单片报文粒度的操作,这个时候就只能借助于wireshark的插件功能。关于wireshark的lua插件功能,可以参照这里

       5,当然,脚本中所用到的关于while循环以及${LINE##*/}这样的字符串截取的操作是属于shell的一些基础知识,不再赘述。

       综上可以看出利用wireshark提供的工具以及shell脚本能够很方便的处理大量的报文,当然如果追求速度的话,可以在多个docker中运行该脚本,就相当于堆机器。如果对于速度追求更高,那就只能够使用C语言+libpcap,但是一系列的解码会导致工作量增加。

       本文为CSDN村中少年原创文章,转载记得加上小尾巴偶,博主链接这里

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 要使用C++通过欧姆龙 Ethernet/IP CIP协议批量写入数据,您可以使用以下步骤: 1. 首先,您需要了解如何连接到您的欧姆龙设备。这通常涉及到建立一个TCP/IP连接,然后使用Socket发送和接收数据。 2. 接下来,您需要了解如何使用CIP协议。CIP是欧姆龙的一种协议,用于在工业环境中进行通信。您需要了解CIP报文结构,如何构建CIP报文以及如何解析CIP报文。 3. 然后,您需要确定要写入的数据的地址和格式。您可以使用欧姆龙的CX-Programmer软件来查找设备上的数据地址。 4. 接着,您需要编写C++代码来构建CIP报文,将要写入的数据含在报文中,并将报文发送到设备。这可能涉及到使用C++的Socket库来发送和接收数据。 5. 最后,您需要处理设备返回的响应,以确保数据已经成功写入设备。 总体来说,这是一个相对复杂的过程,需要对Socket编程和CIP协议有深入的了解。建议您参考欧姆龙的官方文档和示例代码来实现这个过程。 ### 回答2: 通过欧姆龙EntherNet/IP CIP(Common Industrial Protocol)报文批量写入是一种在工业领域中常用的通信协议,可以实现对欧姆龙设备进行批量写入操作。 在进行批量写入之前,首先需要建立与目标设备的通信连接。通常,可以使用以太网作为通信介质,通过配置正确的IP地址和端口号,确保与设备建立可靠的网络连接。 一旦建立了连接,就可以开始进行批量写入操作。批量写入是指一次性向多个设备写入数据。通过发送CIP报文,可以指定要进行写入的数据的地址和数值。 CIP协议中的报文格式括报头、数据区和校验位。报头中含了发送者和接收者的信息,数据区含了要写入的数据的具体内容,校验位用于验证报文的完整性,确保无误传输。 在CIP报文中,可以指定要写入的设备地址、存储器地址和写入的数据类型。欧姆龙设备支持多种数据类型,如位、字、双字等。通过正确设置这些参数,可以保证数据按照预期被写入指定的设备和地址。 通过批量写入功能,可以实现对多个设备的同时控制和操作,提高工业生产的效率和精度。例如,可以批量写入多个传感器的阈值设定,同时修改多个执行器的动作状态等。 总之,通过欧姆龙EntherNet/IP CIP报文批量写入,可以实现对欧姆龙设备进行一次性写入操作,提高工业生产的效率和可靠性。这种通信协议在工业自动化领域得到广泛应用,并且具有较高的稳定性和可扩展性。 ### 回答3: 欧姆龙的EntherNet/IP CIP报文是一种用于批量写入的通信协议。EntherNet/IP是工业自动化领域中的一种标准化协议,用于在网络上传输和交换数据。CIP(Common Industrial Protocol)是EntherNet/IP的子协议,用于定义数据通信的详细规范。 在使用EntherNet/IP CIP报文进行批量写入时,首先要建立起与目标设备的网络连接。然后,通过发送CIP报文来向设备发送写入的指令。 CIP报文中需要含以下信息: 1. 目标设备的网络地址:这是需要写入数据的设备在网络中的唯一标识。通过这个地址,可以确定要将数据写入哪个设备。 2. 写入的对象标识:这是要写入的对象在设备中的唯一标识。通过这个对象标识,可以确定要对哪个对象进行写入操作。 3. 写入的数据:这是要写入的具体数据。可以根据需要将一个或多个数据写入到目标设备的指定对象中。 4. 写入的数据类型:对于不同类型的对象,可能需要使用不同的数据格式进行写入。CIP报文中需要指定数据的类型,以确保正确解析和存储。 5. 其他参数:根据实际需要,还可以在CIP报文含其他参数,如写入的起始位置、写入的长度等。 通过发送合适的CIP报文,可以实现对目标设备的批量写入操作。这种批量写入的方式可以提高效率,减少通信开销,适用于一次性向多个设备或对象写入数据的场景。 总而言之,EntherNet/IP CIP报文批量写入是一种通过网络进行数据通信的协议,可以实现同时向多个设备或对象写入数据的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

村中少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值