1. 什么是Running mode
1.1. 基本概念
Sruciata由线程、线程模块、队列组成。
- 数据包在线程间传递通过队列实现,线程由多个线程模块组成,每个线程模块实现一种功能
- 一个数据包可以由多个线程处理,数据包将通过队列传递到下一个线程。包每次由一个线程处理,但是引擎可以同时处理多个包
- 一个线程可以有一个或多个线程模块,如果包含多个模块,那么一次只能激活一个模块工作。
线程、模块和队列的排列方式称为运行模式
每一种运行模式都会初始化一些threads,queues等。模式的具体任务是由线程模块来完成
可以通过 ./suricata --list-runmodes查看运行模式,运行模式又细分为autofp, single,wokers

1.2. 线程模块
线程模块是对packet处理任务的抽象。线程模块大概有以下几种:
- Receive模块:收集网络数据包,封装成Packet对象后将其传递给Decode线程模块2.
- Decode模块:
- 对Packet按协议4层模型(数据链路层、网络层、传输层、应用层)进行解码,
- 获取协议和负荷信息,解码完成后将 Packet传递给F













![[Git] 系列四Push Pull —— Git 远程仓库和高级操作](https://img-blog.csdnimg.cn/fda11a18958d4465896a2ab58e3e14af.png#pic_center)





