记录一道有趣的数据存取,以及攻击行为判断的题目

Posted draymonder

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记录一道有趣的数据存取,以及攻击行为判断的题目相关的知识,希望对你有一定的参考价值。

题目

三元组(IP1, IP2, T) 描述了行为: 在T时刻,IP1对IP2进行了访问行为;其中将IP1称为源地址,IP2称为目的地址;地址为IPV4格式,如192.168.0.1 10.10.101.10 时间T为字符串格式,例如2019-06-21 23:02:31

现在有一批数据(总数据量为100亿条),期中每一条数据描述了一次访问行为

问题

  1. 请设计一中存储方式,实现数据的存储,并大致描述存储所需要的磁盘空间大小
  2. 若在一定时间X(单位:秒)内,IP1对IP2的访问行为次数超过了N,则称IP1对IP2发生了攻击行为

解答问题一

ip一个int存,时间unix时间long存
这样一个数据是16个字节
100亿数据 就是 1016 10亿 = 160GB

解答问题二

开一个大一些的缓存
用lru,新加入的ip计数为0,已经访问过就加一
这样短时间访问的应该,内存够大的话,是可以把访问频率高的,拦截到的吧?

然后一个头条小姐姐这么回答

redis:计数:key可以构造为ip1toip2的字符串,value是一个list列表,里面存放时间戳,每次都从尾部插入。如果list长度超过n就发生了攻击(判断列表头部的时间戳是否已经在当前时间–x之前了,是的话弹出lpop)在代码端ip1->ip2的时候,rpush ip1toip2

返回解答问题一

存储的话,可不可以做成和文件目录那样,分成二级目录,第二级目录里面存时间戳

以上是关于记录一道有趣的数据存取,以及攻击行为判断的题目的主要内容,如果未能解决你的问题,请参考以下文章

一道有趣的js题以及个人的理解

JavaScript实现本地数据简单存取以及Json数据存取

(web)记录自己从零起步搭建网站遇到的问题以及思路

(web)记录自己从零起步搭建网站遇到的问题以及思路

网络安全以及常见的网络攻击

pwn记一道shellcode侧信道攻击