【发布时间】:2016-02-14 22:33:21
【问题描述】:
IPv4 网络中的每台主机都有一个分辨率为 1 秒的实时时钟,带有备用电池。每台主机每秒需要生成多达 1000 个唯一标识符。假设每个主机都有一个全球唯一的 IPv4 地址。为此设计一个 50 位的全球唯一 ID。主机生成的标识符会在多长时间(以秒为单位)后回绕?
答案是 256。
这个问题是数据结构的话题,因为在这里,我需要找到正确的 50 位全局 id。它问here before。我不满意,但没有足够的声誉在那里发表任何评论。
我的尝试:
我们在唯一 ID 中有 50 位。 50 位可能的唯一 ID 总数 = 2^{50}
幸运的是,我们每个主机都有 32 位唯一的 IP 地址。为了使 ID 唯一,我们可以在每个唯一 ID 前面加上这 32 位。
因此,我们只需要生成剩余的 18 位。因此可以有 2^{18} 种组合。
假设每个主机每秒生成 1000 个 ID。
因此,要生成 2^{18} 个组合,需要 2^{18} / 1000 秒 ~= 262.144 秒
我缺少什么来找到正确的答案?你能解释一下吗?
【问题讨论】:
-
除了 50 位大小之外,听起来您正在重塑 UUID。
标签: data-structures ip-address ipv4