在suricata应用层解析上,常常能看到这个类型AppProto,下面介绍它的定义。
AppProto的定义在app-layer-protos.h中,如下:
typedef uint16_t AppProto;
其中就是一个16位的无符号整型,指代的应用层协议如下:
enum AppProtoEnum {
ALPROTO_UNKNOWN = 0,
ALPROTO_HTTP,
ALPROTO_FTP,
ALPROTO_SMTP,
ALPROTO_TLS, /* SSLv2, SSLv3 & TLSv1 */
ALPROTO_SSH,
ALPROTO_IMAP,
ALPROTO_MSN,
ALPROTO_JABBER,
ALPROTO_SMB,
ALPROTO_SMB2,
ALPROTO_DCERPC,
ALPROTO_IRC,
ALPROTO_DNS,
ALPROTO_MODBUS,
ALPROTO_ENIP,
ALPROTO_DNP3,
ALPROTO_NFS,
ALPROTO_NTP,
ALPROTO_TEMPLATE,
/* used by the probing parser when alproto detection fails
* permanently for that particular stream */
ALPROTO_FAILED,
#ifdef UNITTESTS
ALPROTO_TEST,
#endif /* UNITESTS */
/* keep last */
ALPROTO_MAX,
};
就是一个枚举,未检测时为 ALPROTO_UNKNOWN = 0,其他的协议如HTTP为1,FTP为2,依次类推。如果是不支持的协议,则返回ALPROTO_FAILED。