V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
RedFlag2233
V2EX  ›  数据库

把整个 IPV4 存储到数据库里,仅仅记录某个 IP 开放的 TCP 端口。该选用什么数据库和数据格式??

  •  1
     
  •   RedFlag2233 · 2021-05-31 15:18:25 +08:00 · 1477 次点击
    这是一个创建于 1302 天前的主题,其中的信息可能已经有所发展或是发生改变。

    把整个 IPV4 存储到数据库里,仅仅记录某个 IP 开放的 TCP 端口。该选用什么数据库和数据格式?? 比如,8.8.8.8 开放了 53 就记录一下。

    RedFlag2233
        1
    RedFlag2233  
    OP
       2021-05-31 15:22:47 +08:00
    UP
    zpfhbyx
        2
    zpfhbyx  
       2021-05-31 15:23:34 +08:00
    134744072.53
    Kinnice
        3
    Kinnice  
       2021-05-31 15:25:16 +08:00
    ip 转 int 做主键,后面端口用 list[80,53]
    imdong
        4
    imdong  
       2021-05-31 15:25:39 +08:00
    记录一些 IP 的话,估计就是 Long IP?

    如果要记录所有 IPv4 地址的话,那就是面试题中有限空间存数据的问题,需要 0xffffffff 长度的完整空间,对应点位置 0 / 1
    knives
        5
    knives  
       2021-05-31 15:41:41 +08:00
    如果用 PostgreSQL 的话,可以试试 cidr/inet 类型来存储 IP 。端口号独立字段,可以考虑使用数组存储。
    moen
        6
    moen  
       2021-05-31 15:43:03 +08:00
    pg 直接 inet 类型存 IP,integer[] 存端口。想抠存储空间用 smallint[] 也不是不行,就是得转成有符号数
    ch2
        7
    ch2  
       2021-05-31 15:44:07 +08:00
    mongo
    yukiww233
        8
    yukiww233  
       2021-05-31 15:50:16 +08:00
    是想扫一份全网的开放端口么 😮
    RedFlag2233
        9
    RedFlag2233  
    OP
       2021-05-31 15:52:44 +08:00
    @yukiww233 是的 :)
    RedFlag2233
        10
    RedFlag2233  
    OP
       2021-05-31 15:54:19 +08:00
    @imdong 是的,就是想记录所有的 IPV4 。能把您说的面试题的问题给一个参考链接吗?我去学习一下。
    imdong
        11
    imdong  
       2021-05-31 16:02:03 +08:00
    啊这,我随便说的,之前的面试题大概是这样的:

    大量 url 去重但内存有限怎么做.

    你这个思路就是 255.255.255.255:65535 可以对应到一个内存 /文件地址上.

    0xFFFFFFFF-0xFFFF 上,开放 1,不开放 0.
    Akkuman
        12
    Akkuman  
       2021-05-31 23:07:52 +08:00 via Android
    ipv4 用 int 存,因为 ipv4 是 32 位的数,这个可以直接定义为主键,然后 port 可以用 smallint 存,16 位,也可以定义为主键,然后看你是用中间表多对多关联,还是像上面说的 port 存成一个 list,还是怎样存,看你的查询需求了
    qyvlik
        13
    qyvlik  
       2021-06-01 08:52:50 +08:00
    ipv4 用 int 存,一个 ip 的可用端口数的理论值是 65535 左右,用 bitmap + 压缩保存。
    然后查询可以用 redis 的 位操作命令加速。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2908 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 73ms · UTC 00:19 · PVG 08:19 · LAX 16:19 · JFK 19:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.