AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1779722
Accepted
Taro
Taro
Asked: 2023-04-19 15:28:01 +0800 CST2023-04-19 15:28:01 +0800 CST 2023-04-19 15:28:01 +0800 CST

IPv4 APIPA 是不确定的吗?

  • 772

链接本地地址的日语维基百科文章页面提到链接本地地址的创建几乎总是不确定的(日语中的非决定论的)。相应的英文页面不包含等效声明。

我的问题是如何实施 APIPA 以及如何选择(或计算)候选地址。它真的是一个不确定的算法吗?

ipv4
  • 2 2 个回答
  • 693 Views

2 个回答

  • Voted
  1. Best Answer
    user1686
    2023-04-19T15:43:53+08:002023-04-19T15:43:53+08:00

    RFC 3927是关于如何实现它的规范。它有一个2.1 节。链路本地地址选择指定 PRNG 的使用,并建议每次都使用相同的初始值(例如 MAC 地址)为 PRNG 播种。

    PRNG 是确定性的——它们唯一的随机性来源来自外部种子;用相同的种子重新初始化相同的 PRNG 将始终给出相同的输出序列(因此是伪随机的)。因此,任何使用 MAC 地址作为其 PRNG 种子的 APIPA 实现也应该确定性地生成 IPv4 地址。

       The pseudo-random number generation algorithm MUST be chosen so that
       different hosts do not generate the same sequence of numbers.  If the
       host has access to persistent information that is different for each
       host, such as its IEEE 802 MAC address, then the pseudo-random number
       generator SHOULD be seeded using a value derived from this
       information.  This means that even without using any other persistent
       storage, a host will usually select the same IPv4 Link-Local address
       each time it is booted, which can be convenient for debugging and
       other operational reasons.  Seeding the pseudo-random number
    

    除非通过实验测试它们,否则不可能知道是否所有 APIPA 实现都遵循此建议(其中许多实现是封闭源代码的,例如 Windows 中的实现)。如果我没记错的话,Linux 上的 Avahi 是兼容的。

    作为一个不同的例子,我似乎记得 Ubiquiti 的 airOS 固件使用的实现在设备文档中特别提到直接使用设备的最后两个 MAC 八位字节作为初始 APIPA 地址(有点不合规但仍然是确定性的)。

    • 3
  2. hobbs
    2023-04-20T01:00:33+08:002023-04-20T01:00:33+08:00

    来自RFC 3927:

    这意味着即使不使用任何其他持久存储,主机每次启动时通常也会选择相同的 IPv4 链路本地地址,这可以方便调试和其他操作原因。

    注意通常在那里。PRNG 用于生成一系列 IP 地址,设备从该序列中选择第一个未被其他设备声明的地址。这意味着结果是路径相关的。即使所有设备都确定性地播种它们的 PRNG,在发生冲突的情况下,结果取决于不同设备联机和声明地址的顺序。如果您关闭所有内容,然后以与上次不同的顺序再次启动,结果可能会有所不同。即使只是改变两个设备的相对顺序也可能会产生连锁反应,导致任意数量的设备接收到不同的地址(尽管从统计学上讲这不太可能,除非您在同一网段上有数千台设备)。

    那么这是确定性的还是非确定性的?这完全取决于您对系统的看法。狭义的观点是算法是确定性的——每次给定相同的输入(即相同的种子和同一组当前在线的网络对等点),它都会做出相同的选择。

    但是,如果我们认为网络由一组具有各种种子(我们可能不知道其中一些种子)的设备组成,这些设备在不可预测的时间加入和离开网络,那么我们得出的结论是,我们不能确定地预测任何设备在未来任何时间的地址。我们只能在分配时通过对网络进行普查来弄清楚。从这个意义上说,自动 IP 分配是不确定的,因为它取决于不确定的外部因素(比如人们带着手机和笔记本电脑进出大楼)。

    • 3

相关问题

  • 可用网络域的数量是否有限?

  • 是否可以使用混合 DNS 服务器(例如,Google 作为主要服务器,Quad9 作为备用服务器)?

  • 我的 DNS 服务器可以在 Internet 之外访问吗?

  • 广播到所有子网

  • /etc/network/interfaces 文件未找到

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Vickel Firefox 不再允许粘贴到 WhatsApp 网页中? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve