登录
  • #码农类general
  • #工作信息
  • #求职
  • #找工就业
  • #illumio

一道‌‌‍‍‌‍‍‌‍‌‍‍‌‍‍‍‌‍‌‍‍‍‌‍‌‍‍‍‍‍‌‍比较难的题,没有思路

xiaokeishaobo35
540
0
拿到了一家小公司的oa, 需要写一个模拟 host-based 防火墙,给了一个input list ,每一个包含了四个值:方向,协议, port number, ip address

方向和协议都只包含了两个变量: "inbound", "outbound". 协议 有: tcp or udp. 但是port number 定义了范围为1~65535. ip address: 为0.0.0.0 -255.255.255.255)

现在根据input list 定义都规则,问给你一个新的输入list,是否能够match之前定义的规则, 通入防火墙.

举一个栗子,输入有4个list,则定义了四个规则:(但是实际上有500k ~ 1million 个list,来定义规则)

inbound,tcp,80,192.168.1.2

outbound,tcp,10000-20000,192.168.10.11

inbound,udp,53,192.168.1.1-192.168.2.5

outbound,udp,1000-2000,52.12.48.92







我现在有一个新的 输入:

"outbound", "tcp", 10234, "192.168.10.11"







问是否有match 之前都规则,显然 match 了第二个 (因为10234 在10000-20000的范围)所以可以通过防火墙

另外一个 输入

"inbound", "tcp", 81, "192.168.1.2" 没有match到任何一个规则。不能通过防火墙



文件输入的list定义的规则,有500k~1million 个。

如果每一个ip address,都对应了一个 port number,对应了一个协议和方向 那岂不是 要存 255,255,255,255 * 65535 * 2* 2 种情况?远远超出了hashmap的范围。楼主想了很久,菜鸡 实在不知道该如何下手,请大神们赐教~{:4_112:}
0条回复
热度排序

发表回复