网络算法学:原理、优化与实践
1. 算法背景与初步优化
在网络数据处理中,检测异常数据包是一项重要任务。最初的设想是只跟踪最大字符计数 c ,在处理完 URL 后,仅检查 c 是否超过相对于总 URL 长度 L 的阈值。然而,这种方法存在缺陷。例如,像 “e” 这样常见的字符可能计数很高,但它的阈值也可能较高;而 “#” 计数可能相对较低,但阈值更小。如果只跟踪 “e”,可能会遗漏 “#” 计数异常的情况,导致误判为正常数据包(假阴性)。
为了解决这个问题,芯片在寄存器中跟踪相对于阈值的最高计数器。具体来说,芯片记录对应某个字符 k 的最高相对计数器 Max ,使得 C[k]/T[k] = Max 是到目前为止所有遇到字符中的最大值。当读取到新字符 i 时,芯片将 C[i] 加 1;如果 C[i]/T[i] > Max ,则用 C[i]/T[i] 替换当前存储的 Max 值。在 URL 处理结束时,如果 Max ≥ L ,芯片发出警报。这样做的原因是,如果 Max = C[k]/T[k] ≥ L ,说明字符 k 超过阈值,数据包应被标记;反之,如果 C[k]/T[k] < L ,则所有字符都未超过阈值,不会出现假阴性。
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



