网络流量处理中的协议解析四:状态机
既然解析的过程就是状态转换,那自然想到状态机。如果能把解析过程分为不同的状态,然后作为一个状态机来轮转。那协议解析过程可以切分为不同的阶段,每个阶段仅关注自己的事儿。解析就是解析,状态转换就是转换,他们分开。这样的解析过程会清晰直观简洁。整个解析过程就是有多个状态组合起来的状态机。其实,所有协议都是状态机。 首先确定都需要划分哪些状态,比如SMTP可以分成下面几个状态: enum ...
既然解析的过程就是状态转换,那自然想到状态机。如果能把解析过程分为不同的状态,然后作为一个状态机来轮转。那协议解析过程可以切分为不同的阶段,每个阶段仅关注自己的事儿。解析就是解析,状态转换就是转换,他们分开。这样的解析过程会清晰直观简洁。整个解析过程就是有多个状态组合起来的状态机。其实,所有协议都是状态机。 首先确定都需要划分哪些状态,比如SMTP可以分成下面几个状态: enum ...
Since the parsing process is essentially a process of state transitions, it is natural to think of a state machine. If the parsing process can be divided into different states and then rotated as a...
能从链接中拿到一行一行的数据,就可以开始解析SMTP了。 解析过程 解析过程就是循环读取一行数据,然后按照协议顺序逐行解析。伪代码如下: while (get_line() != 0) { if (state == ERROR) return; if (state == HEAD) { // 处理head的过程 state = BOD...
Once you can obtain line-by-line data from a connection, you can start parsing SMTP. Parsing Process The parsing process involves looping through each line of data and parsing them sequentially a...
对数据的假设 在数据包基础上开始协议解析不是不可以,甚至有时候还更简单。比如我们想解析SMTP的maifrom命令,它几乎在所有邮件通信过程中都完整地在一个单独的包中。甚至字符数量更多的邮件头也是如此。但是却不能作出它们一定就完整地在一个包中的假设,因为TCP协议并没有这种要求。虽然在绝大多数邮件服务器的实现中都会表现如上面描述,但是如果你想故意逃避被流量检测程序还原你的邮件通信,你完全可...
Assumptions About Data Starting protocol parsing directly on packets is not impossible; sometimes, it can even be simpler. For example, if we want to parse the SMTP mailfrom command, it is almost ...
这里所说的网络流量处理,包括常说的IDS,IPS,NTA, NDR,XDR,DPI,网络行为审计,防火墙之类需要在数据包层面对流量进行判断审计之类的操作。如果只需要简单的处理比如流量统计,那只需要++就行了。如果要做更准确深入的分析判断,就得需要对这些数据解码。从IP TCP 一直到应用层如SMTP。要针对SMTP的协议内容作出判断分析审计,就需要解析SMTP协议。 IDS,IPS等流量处...
The network traffic processing discussed here includes common systems such as IDS, IPS, NTA, NDR, XDR, DPI, network behavior auditing, firewalls, and other operations that require judgment and audi...