zl程序教程

您现在的位置是:首页 >  大数据

当前栏目

【BCT_RFC 3927】IPv4 链路本地地址的动态配置

配置地址 动态 本地 链路 ipv4 RFC BCT
2023-06-13 09:15:24 时间

本文件规定了一个因特网标准跟踪协议互联网社区,并请求讨论和建议改进。请参考当前版本的“互联网标准化国家的官方协议标准”(STD1)和该协议的状态。

抽象的

要参与广域 IP 网络,主机需要为其接口配置 IP 地址,可以通过以下方式手动配置用户或自动来自网络上的源,例如动态主机配置协议 (DHCP) 服务器。很遗憾,此类地址配置信息可能并不总是可用。因此,主机能够依赖于即使没有地址,IP 网络功能的有用子集配置可用。本文档描述了主机如何自动配置具有 IPv4 地址的接口与其他设备通信有效的 169.254/16 前缀连接到相同的物理(或逻辑)链路。

IPv4 链路本地地址不适合与未直接连接到同一物理(或逻辑)的设备链接,并且仅在稳定的、可路由的地址不可用的情况下使用可用(例如在 ad hoc 或隔离网络上)。这个文件不建议 IPv4 链路本地地址和可路由地址在同一个接口上同时配置。

一、简介

随着 Internet 协议越来越受欢迎,它成为能够使用熟悉的 IP 工具(如 FTP)越来越有价值 不仅用于全球通信,还用于本地通信出色地。例如,两个拥有支持 IEEE 的笔记本电脑的人802.11 无线 LAN [802.11] 可以满足并希望交换文件。

这些人希望能够使用IP应用程序

无需手动配置的不便静态 IP 地址或设置 DHCP 服务器 [RFC2131]。

本文档描述了一种方法,通过该方法主机可以自动在 169.254/16 前缀中配置具有 IPv4 地址的接口对于该接口上的链路本地通信有效。这在没有其他配置的环境中特别有价值 机制可用。已注册 IPv4 前缀 169.254/16 为此目的与 IANA 合作。分配 IPv6 Link-Local 地址在“IPv6 Stateless Address Autoconfiguration”中描述[RFC2462]。

使用 IPv4 链路本地地址的链路本地通信仅适用于与连接到同一设备的其他设备通信物理(或逻辑)链接。使用 IPv4 的链路本地通信链路本地地址不适合与设备通信不直接连接到同一物理(或逻辑)链路。

Microsoft Windows 98(及更高版本)和 Mac OS 8.5(及更高版本)已经支持这种能力。本文档标准化了用法,规定如何处理 IPv4 链路本地地址的规则通过主机和路由器。特别是,它描述了路由器如何在接收到带有 IPv4 链路本地地址的数据包时的行为源地址或目标地址。关于主机,它讨论了声明和捍卫地址,维护链路本地和可路由同一接口上的 IPv4 地址和多宿主问题。

1.1.要求

关键字“必须”、“不得”、“必需”、“应”、“不应”、“应该”、“不应该”、“推荐”、“可以”和“可选”文件将被解释为在“关键词中使用的描述RFC”[RFC2119]。

1.2.术语

本文档描述了用于 IPv4 通信的链路本地寻址在单个链路上的两个主机之间。一组主机被认为是 是“在同一个链接上”,如果:

  • 当该集合中的任何主机 A 向任何其他主机 B 发送数据包时 在该集合中,使用单播、多播或广播,整个链路层数据包负载未修改地到达,并且
  • 由该组主机中的任何主机通过该链接发送的广播可以被该集合中的所有其他主机接收链路层 header 可能会被修改,例如在 Token Ring Source 中 路由 [802.5],但不是链路层 payload。特别是,如果转发数据包的任何设备修改 IP 标头的任何部分或 IP payload 那么这个包就不再被认为是在同一个关联。这意味着数据包可能会通过设备,例如中继器、网桥、集线器或交换机,并且仍然被认为是打开的用于本文档目的的相同链接,但不是通过诸如 IP 路由器之类的设备会减少 TTL 或其他方式

修改 IP 标头

本文档使用术语“可路由地址”来指代所有有效169.254/16 前缀之外的单播 IPv4 地址可能是通过路由器转发。这包括所有全球 IP 地址和私有地址,例如 Net 10/8 [RFC1918],但不是环回地址,如 127.0.0.1。 本文档在描述使用时使用术语“主机”的任何地方 IPv4 链路本地地址,当文本同样适用于路由器时它们是包含以下内容的数据包的来源或预期目的地

IPv4 链路本地源或目标地址

本文档在任何地方使用术语“发件人 IP 地址”或“目标IP 地址”在 ARP 数据包的上下文中,它指的是ARP 规范 [RFC826] 中标识的 ARP 数据包的字段作为“ar

spa”(发送方协议地址)和“ar

tpa”(目标协议地址)分别。对于本文中描述的 ARP 的使用文档,其中每个字段始终包含一个 IP 地址。

在本文档中,术语“ARP 探测”用于指代 ARP请求数据包,在本地链路上广播,带有全零“发送者”IP地址’。 “发送方硬件地址”必须包含硬件发送数据包的接口地址。 '目标硬件地址’字段被忽略,应该设置为全零。这“目标 IP 地址”字段必须设置为被探测的地址。

在本文档中,术语“ARP 公告”用于指代ARP请求报文,在本地链路上广播,与ARP相同上面描述的探测,除了发件人和目标 IP地址字段包含正在公布的 IP 地址。

常量以全部大写字母引入。他们的价值观是 在第 9 节中给出。

1.3.适用性

此规范适用于所有 IEEE 802 局域网 (LAN)[802],包括以太网 [802.3]、令牌环 [802.5] 和 IEEE 802.11无线局域网 [802.11],以及其他链路层技术以至少 1 Mbps 的数据速率运行,具有往返延迟最多一秒,并支持 ARP [RFC826]。无论何地本文档使用术语“IEEE 802”,该文本同样适用于任何这些网络技术。

支持 ARP 但以低于 1 的速率运行的链路层技术Mbps 或超过一秒的延迟可能需要指定不同的以下参数的值:

(a) ARP 探测的数量和间隔,参见 PROBE_NUM, 2.2.1 节定义的 PROBE_MIN、PROBE_MAX

(b) ARP 公告的数量和间隔,参见 2.4 节中定义的 ANNOUNCE_NUM 和 ANNOUNCE_INTERVAL

© 可以尝试地址声明的最大速率,参见 2.2.1 节中定义的 RATE_LIMIT_INTERVAL 和 MAX_CONFLICTS

(d) 主机冲突的 ARP 之间的时间间隔 必须重新配置而不是试图捍卫其地址,请参阅2.5 节中定义的 DEFEND_INTERVAL不支持 ARP 的链路层技术可以使用确定特定 IP 地址是否可用的其他技术目前正在使用中。但是,主张和抗辩的应用此类网络的机制超出了本文档的范围。本规范适用于小型自组织网络——仅包含少数主机的单个链接。虽然 65024 IPv4链接本地地址原则上可用,尝试使用单个链接上的所有这些地址将导致高地址冲突的可能性,要求主机采取寻找可用地址的时间过多。

在单个链路上拥有超过 1300 台主机的网络运营商可能希望考虑将该单个链路划分为两个或多个子网。 A 连接到已经有 1300 台主机的链接的主机,选择一个随机 IPv4 链路本地地址,有 98% 的机会选择一个第一次尝试未使用的 IPv4 链路本地地址。主机有 99.96%

在两个时间内选择未使用的 IPv4 链路本地地址的机会尝试。必须尝试十次以上的概率大约是 10^17 分之一。

1.4.应用层协议注意事项

IPv4 链路本地地址及其动态配置具有对使用它们的应用程序产生深远的影响。这是在第 6 节中讨论。许多应用程序从根本上假设通信对等方的地址是可路由的,相对不变和独特的。这些假设不再适用于 IPv4 Link-Local地址,或链路本地和可路由 IPv4 地址的混合。

因此,虽然许多应用程序可以正常使用 IPv4 Link-本地地址,或链路本地和可路由 IPv4 的混合地址,其他人只能在修改后这样做,或者会展示减少或部分功能。

在某些情况下,修改应用程序可能是不可行的在这样的条件下运行。因此,IPv4 链路本地地址应该只在稳定的地方使用,可路由地址不可用(例如临时或隔离网络)或在受控情况下,这些限制和它们对应用程序的影响被理解和接受。这文档不建议 IPv4 链路本地地址和可路由地址同时配置在同一个界面。

可能在离线通信中使用 IPv4 链路本地地址导致应用程序失败。这可能发生在任何应用程序中包括嵌入式地址,如果 IPv4 链路本地地址是与不在链路上的主机通信时嵌入。嵌入地址的应用程序示例包括 IPsec、Kerberos 4/5、FTP、RSVP、SMTP、SIP、X-Windows/Xterm/Telnet、真实音频、H.323、 和 SNMP [RFC3027]。

排除在离线链路中使用 IPv4 链路本地地址沟通,建议采取以下预防措施:

A。不得在 DNS 中配置 IPv4 链路本地地址。 按照惯例完成从 IPv4 地址到主机名的映射通过对表单名称发出 DNS 查询,“x.x.x.x.in-addr.arpa。”当用于链路本地地址时,只对本地链路有意义,不适合将此类 DNS 查询发送到本地链接之外。 DNS 客户端不得发送 DNS 查询以查找属于“254.169.in-addr.arpa。”领域。

DNS 递归名称服务器接收来自不合规要求的查询名称在“254.169.in-addr.arpa”中的客户。域必须默认返回 RCODE 3,权威地断言没有这样的名称存在于域名系统中。

b.全局可解析为可路由地址的名称应该是在应用程序可用时在应用程序中使用。 命名那个只能在本地链接上解析(例如通过使用链路本地多播名称解析 [LLMNR] 等协议)不得用于离线通信。 IPv4 地址和 只能在本地链接上解析的名称不应该转发到本地链接之外。 IPv4 链路本地地址应该仅在链接本地地址用作源时发送和/或目的地地址。这个强烈的建议应该阻碍限制范围的地址和名称,以免将上下文留在 他们适用。

C。如果可解析为全局可路由地址的名称不是可用,但全球可路由地址是,它们应该是用于代替 IPv4 链路本地地址。

1.5.自动配置问题

IPv4 链路本地地址自动配置的实现必须 期望地址冲突,并且必须准备好处理它们 优雅地通过自动选择一个新地址每当一个检测到冲突,如第 2 节所述。检测和处理地址冲突适用于整个期间主机正在使用 169.254/16 IPv4 链路本地地址,而不仅仅是在初始接口配置期间。例如,地址 如果两个主机完成引导后很可能会发生冲突如第 4 节所述,以前分开的网络被加入。

1.6.替代使用禁令

请注意,不应配置 169.254/16 前缀中的地址手动或通过 DHCP 服务器。手动或 DHCP 配置可能会导致 主机使用 169.254/16 前缀中的地址而不遵循关于重复检测和自动的特殊规则与此前缀中的地址相关的配置。虽然DHCP 规范 [RFC2131] 表明 DHCP 客户端应该使用 ARP 探测新收到的地址,这不是强制性的。

同样,虽然 DHCP 规范建议 DHCP 服务器在分配之前应该使用 ICMP Echo Request 探测地址它,这也不是强制性的,即使服务器这样做,IPv4 链路本地地址不可路由,因此 DHCP 服务器不可直接连接到链路无法检测到主机是否位于该链路上链接已经在使用所需的 IPv4 链接本地地址。

希望配置自己本地地址的管理员(使用手动配置、DHCP 服务器或任何其他机制不本文档中描述的)应该使用现有的私人地址前缀 [RFC1918],而不是 169.254/16 前缀。

1.7.多个接口

其他注意事项适用于支持多个的主机活动接口,其中一个或多个接口支持 IPv4链路本地地址配置。讨论了这些注意事项在第 3 节中。

1.8.与可路由地址的通信

在某些情况下,具有配置的链路本地地址的设备将需要与具有可路由地址的设备通信配置在同一物理链路上,反之亦然。中的规则第 2.6 节允许这种通信。这允许,例如,只有一个可路由的膝上型计算机使用其与全球网络服务器通信的地址全球可路由地址,同时打印那些网页仅具有 IPv4 链接本地地址的本地打印机上的页面。

1.9.何时配置 IPv4 链路本地地址

将多个不同范围的地址分配给一个接口,没有足够的方法来确定在什么情况下每个地址都应该被使用,导致应用程序的复杂性和给用户带来困惑。链接上有地址的主机可以与该链路上的所有其他设备通信,无论是那些设备使用链路本地地址或可路由地址。对于这些原因,主机不应该同时具有可操作的可路由地址和在同一接口上配置的 IPv4 链路本地地址。

这术语“可操作地址”用于表示有效的地址在当前网络上下文中有效地进行通信(请参阅以下)。当可操作的可路由地址在接口,主机也不应该分配 IPv4 链路本地地址在那个界面上。然而,在过渡期间(无论是方向)在使用可路由和 IPv4 链路本地地址之间可以在遵守这些规则的情况下立即使用:

1.接口上IPv4 Link-Local地址的分配是仅基于接口的状态,并且是独立的任何其他协议,例如 DHCP。主机不得更改其行为和使用其他协议,如 DHCP,因为主机已将 IPv4 链路本地地址分配给接口。

2.如果主机发现之前的接口 配置有 IPv4 链路本地地址现在有一个可操作的可路由地址可用,主机必须使用可路由地址地址开始新的通信时,必须停止通告 IPv4 链路本地地址的可用性通过任何已知的解决机制其他的。主机应该继续使用 IPv4 Link-Local通信地址已经在进行中,可能会继续接受寻址到 IPv4 Link-Local 的新通信地址。可操作的可路由地址可能的方式在界面上可用包括:

  • 手动配置
  • 通过DHCP分配地址
  • 主机漫游到以前有过的网络 分配的地址变得可操作

3.如果主机发现某个接口不再有可操作的可路由地址可用,主机可以识别可用的 IPv4链路本地地址(如第 2 节所述)并分配接口的地址。可操作可路由的方式地址可能在接口上不再可用,包括:

  • 通过接口移除地址 手动配置
  • 通过分配的地址的租约到期 DHCP
  • 主机漫游到新网络地址不再可操作。 系统判断一个地址是否“可操作”不是明确的,系统上下文中有很多变化(例如,路由器更改)可能会影响地址的可操作性。在主机从一个网络到另一个网络的特定漫游是可能的——但不确定——更改已配置地址的可操作性但检测这样的举动并不总是微不足道的。“检测 IPv4 中的网络附件 (DNA)”[DNAv4] 提供地址分配和可操作性的进一步讨论决心。
  1. 地址选择、防御和投递以下部分解释了 IPv4 链路本地地址选择算法,如何保护 IPv4 链路本地地址,以及 IPv4 如何传送具有 IPv4 链路本地地址的数据包。

已经实现 Link-Local IPv4 的 Windows 和 Mac OS 主机地址自动配置与中提出的规则兼容本节。然而,如果任何互操作性问题是发现,这个文档,而不是任何先前的实现,定义了标准。

2.1.链路本地地址选择

当主机希望配置 IPv4 链路本地地址时,它 使用伪随机数生成器选择地址 均匀分布在169.254.1.0到169.254.254.255范围内 包括的。 IPv4 前缀 169.254/16 为此向 IANA 注册 目的。 169.254/16 中的前 256 个和后 256 个地址 前缀保留供将来使用,不得由主机选择 使用这种动态配置机制。 必须选择伪随机数生成算法,以便 不同的主机不会生成相同的数字序列。如果 主机可以访问每个不同的持久信息 主机,例如它的 IEEE 802 MAC 地址,然后是伪随机数 生成器应该使用从这个派生的值来播种 信息。这意味着即使不使用任何其他持久性 存储,主机通常会选择相同的 IPv4 链路本地地址 每次开机,方便调试和 其他运营原因。播种伪随机数 使用实时时钟或任何其他信息的发电机 (或可能)每个主机都相同不适合此目的, 因为一组同时开机的主机 然后可能都会生成相同的序列,从而导致永远不会 随着主持人步调一致地结束一系列冲突 完全相同的伪随机序列,在每个地址上都有冲突 他们探查。 配备持久存储的主机可以,对于每个 接口,记录他们选择的 IPv4 地址。在启动时, 具有先前记录地址的主机应该使用该地址作为 他们在试探时的第一个候选人。这增加了稳定性 地址。例如,如果一组主机在 晚上,然后当他们第二天早上通电时,他们都会 恢复使用相同的地址,而不是选择不同的 地址并可能不得不解决出现的冲突。

2.2.声明链接本地地址 在选择了 IPv4 链路本地地址后,主机必须测试 在开始之前查看 IPv4 链路本地地址是否已被使用 使用它。当网络接口从非活动状态转换为 处于活动状态时,主机不知道什么是 IPv4 链路- 该链接当前可能正在使用本地地址,因为该点 附件可能已更改或网络接口可能已更改 声称有冲突的地址时不活动。 主机是否立即开始使用 IPv4 链路本地地址 已经被另一台主机使用,这会破坏 那个其他主机。由于主机可能已更改其 连接点,一个可路由的地址可以在新的 网络,因此不能假定 IPv4 链路本地 地址是首选。 在使用 IPv4 链路本地地址之前(例如,将其用作 IPv4 数据包中的源地址,或作为发件人 IPv4 地址 ARP 数据包)主机必须执行下面描述的探测测试以 获得更好的信心,即使用 IPv4 链路本地地址将 不会造成中断。 涉及接口变为活动状态的事件示例包括: 重启/启动 从睡眠中唤醒(如果网络接口在睡眠期间处于非活动状态) 调出以前不活动的网络接口 IEEE 802 硬件链接状态更改(适用于 适用的媒体类型和安全机制)表示 接口已激活。 与无线基站或临时网络的关联。 主机不得定期执行此检查 课程。这会浪费网络带宽,而且 由于主机被动发现的能力而不必要 冲突,如第 2.5 节所述。 2.2.1.探头详情 在支持 ARP 的链路层(例如 IEEE 802)上,冲突 检测是使用 ARP 探针完成的。关于链路层技术 不支持 ARP 其他技术可用于确定 当前是否正在使用特定的 IPv4 地址。但是,那 将声明和防御机制应用于此类网络是 超出本文档的范围。

主机通过广播探测地址是否已被使用 对所需地址的 ARP 请求。客户必须填写 带有硬件的 ARP 请求的“发送者硬件地址”字段 发送数据包的接口地址。这 “发件人 IP 地址”字段必须设置为全零,以避免 在这种情况下污染同一链路上其他主机中的 ARP 缓存 该地址原来已被另一台主机使用。 “目标硬件地址”字段被忽略,应该设置为 全为零。 “目标 IP 地址”字段必须设置为地址 被探查。以这种方式构造的 ARP 请求具有全零 “发件人 IP 地址”称为“ARP 探测”。 当准备好开始探测时,主机应该等待一个随机的 在零到 PROBE_WAIT 范围内统一选择的时间间隔 秒,然后应该发送 PROBE_NUM 探测数据包,其中的每一个 探测数据包随机间隔,相隔 PROBE_MIN 到 PROBE_MAX 秒。 如果在此期间,从探测过程开始 直到发送最后一个探测数据包后的 ANNOUNCE_WAIT 秒, 主机在接口上接收到任何 ARP 数据包(请求 * 或 * 回复) 正在执行探测的位置数据包的“发送方 IP” 地址’是被探测的地址,那么主机必须对待 该地址正被其他主机使用,并且必须选择一个 新的伪随机地址并重复该过程。此外,如果 在此期间,主机收到任何 ARP 探测,其中数据包的 ‘target IP address’ 是被探测的地址,数据包的 ‘sender hardware address’ 不是发送者的硬件地址 主机试图配置的接口,那么主机必须 同样将此视为地址冲突并选择一个新地址 如上。如果两个(或更多)主机尝试配置 同时使用相同的 IPv4 链路本地地址。 主机应该维护地址冲突次数的计数器 它在尝试获取地址的过程中经历过, 如果冲突的数量超过 MAX_CONFLICTS 那么主机 必须限制它探测新地址的速率不超过 每个 RATE_LIMIT_INTERVAL 一个新地址。这是为了防止 病理性故障案例中的灾难性 ARP 风暴,例如 响应所有 ARP 探测的流氓主机,导致合法主机 进入无限循环尝试选择可用地址。 如果,在发送最后一个 ARP 后的 ANNOUNCE_WAIT 秒 Probe no conflicting ARP Reply or ARP Probe has been received, 然后 主机已成功声明所需的 IPv4 Link-Local 地址。

2.3.更短的超时 可能会出现延迟更短的网络技术 比本文件要求的更合适。随后的 IETF 可能会制作出版物,为不同的价值观提供指导方针 对于那些上的 PROBE_WAIT、PROBE_NUM、PROBE_MIN 和 PROBE_MAX 技术。 2.4.宣布地址 在探测确定要使用的唯一地址后,主机必须 然后通过广播 ANNOUNCE_NUM ARP 宣布其声明的地址 公告,间隔 ANNOUNCE_INTERVAL 秒。一个ARP 公告与上述 ARP 探测相同,除了 现在发件人和目标 IP 地址都设置为 主机新选择的 IPv4 地址。这些 ARP 的目的 公告是为了确保链接上的其他主机不 有一些其他主机遗留下来的陈旧 ARP 缓存条目,这些条目可能 以前一直使用相同的地址。 2.5.冲突检测与防御 地址冲突检测不限于地址选择 阶段,当主机发送 ARP 探测时。地址冲突检测 是一个持续的过程,只要主机是有效的 使用 IPv4 链路本地地址。在任何时候,如果主机收到 “发送方 IP”所在接口上的 ARP 数据包(请求 * 或 * 回复) address’ 是主机为其配置的 IP 地址 接口,但“发送方硬件地址”与 该接口的硬件地址,那么这是一个冲突的 ARP 数据包,表明地址冲突。 主机必须响应冲突的 ARP 数据包,如 以下 (a) 或 (b): (a) 在收到一个冲突的 ARP 数据包后,主机可以选择 立即按照说明配置新的 IPv4 链路本地地址 以上,或 (b) 如果主机当前有活动的 TCP 连接或其他原因 宁愿保留相同的 IPv4 地址,也没有看到任何 最后一个 DEFEND_INTERVAL 内的其他冲突 ARP 数据包 秒,然后它可以选择尝试通过以下方式捍卫其地址 记录收到冲突 ARP 数据包的时间,以及 然后广播一个单独的 ARP 公告,给出自己的 IP 和 硬件地址作为 ARP 的发送者地址。做完了 这样,主机就可以继续正常使用该地址而无需 任何进一步的特别行动。但是,如果这不是第一次

主机看到的冲突 ARP 数据包,以及记录的时间 先前的冲突 ARP 数据包是最近的,在 DEFEND_INTERVAL 内 秒,然后主机必须立即停止使用该地址,并且 如上所述配置新的 IPv4 链路本地地址。这是 有必要确保两个主机不会陷入无尽的困境 两台主机都试图保护同一个地址。 主机必须响应冲突的 ARP 数据包,如 (a) 或 (b) 以上。主机不得忽略冲突的 ARP 数据包。 强制地址重新配置可能会造成破坏,导致 TCP 要断开的连接。不过,预计此类 中断将很少见,如果不小心地址重复 发生,那么通信中断是不可避免的,无论 地址是如何分配的。两个人是不可能的 同一网络上的不同主机使用相同的IP地址 运行可靠。 在由于冲突而放弃地址之前,主机应该主动 尝试使用该地址重置任何现有连接。这 减轻地址重新配置带来的一些安全威胁,如 在第 5 节中讨论。 一旦冲突立即配置新地址 检测到是尽快恢复有用通信的最佳方式 尽可能。上面描述的广播单个的机制 保护地址的 ARP 公告缓解了该问题 在某种程度上,通过帮助提高两者之一的机会 冲突的主机可能能够保留其地址。 所有包含 Link- 的 ARP 数据包(回复以及请求) 必须使用链路层广播发送本地“发送方 IP 地址” 而不是链路层单播。这有助于及时发现 重复地址。给出了一个说明这有何帮助的示例 在第 4 节中。 2.6.地址使用和转发规则 实现此规范的主机有额外的规则 符合,它是否有一个接口配置 IPv4 链路本地地址。 2.6.1.源地址使用 由于主机上的每个接口都可能有一个 IPv4 链路本地地址 除了通过其他方式配置的零个或多个其他地址 (例如,手动或通过 DHCP 服务器),主机可能必须创建一个 选择发送数据包时使用的源地址或 发起 TCP 连接。 IPv4 Link-Local 和可路由地址都可用的地方 相同的接口,可路由的地址应该是首选 新通信的源地址,但数据包发送自或发送至 IPv4 链路本地地址仍按预期传送。这 IPv4 链路本地地址可以继续用作源地址 在切换到首选地址会导致的通信中 因上层要求导致通讯失败 协议(例如,现有的 TCP 连接)。有关详细信息,请参阅 第 1.7 节。 多宿主主机需要选择传出接口,无论是 not the destination 是 IPv4 链路本地地址。那件事的详情 过程超出了本规范的范围。选择后 接口,多宿主主机应发送涉及 IPv4 的数据包 本文档中指定的链接本地地址,就好像 所选接口是主机的唯一接口。请参阅第 3 节 进一步讨论多宿主主机。 2.6.2.转发规则 无论使用哪个接口,如果目标地址在 169.254/16 前缀(不包括地址 169.254.255.255,即 链路本地前缀的广播地址),然后是发送者 必须对目标地址进行 ARP,然后发送其数据包 直接到达同一物理链路上的目的地。这必须是 done 接口是否配置了 Link-Local 或 可路由的 IPv4 地址。 在许多网络堆栈中,实现此功能可能很简单 添加一个路由表条目表明 169.254/16 是 在本地链接上可直接访问。这种方法行不通 用于路由器或多宿主主机。有关更多信息,请参阅第 3 节 多宿主主机的讨论。 主机不得发送带有 IPv4 链路本地目的地的数据包 地址到任何路由器转发。 如果目标地址是外部的单播地址 169.254/16 前缀,那么主机应该使用适当的可路由 IPv4 源地址(如果可以)。如果房东出于任何原因选择 发送带有 IPv4 链路本地源地址的数据包(例如,没有 可路由地址在所选接口上可用),然后它 必须对目标地址进行 ARP,然后发送它的数据包, 一个 IPv4 链路本地源地址和一个可路由的目标 IPv4 地址,直接到同一物理链路上的目的地。这 主机不得将数据包发送到任何路由器进行转发。 如果设备只有一个接口且只有一个 Link- 本地 IPv4 地址,这个要求可以解释为“ARP for 一切”。 在许多网络堆栈中,实现这种“ARP for everything”行为 可能就像没有配置主 IP 路由器一样简单,有 主 IP 路由器地址配置为 0.0.0.0,或具有 主 IP 路由器地址设置为与主机自己的 Link- 本地 IPv4 地址。有关多宿主主机中的建议行为,请参阅 第 3 节。 2.7.不转发链路本地数据包 从 IPv4 发送的应用程序的合理默认值 Link-Local地址是将IPv4 TTL显式设置为1。这是 并非在所有情况下都适用,因为某些应用程序可能需要 IPv4 TTL 设置为其他值。 一个 IPv4 数据包,其源地址和/或目标地址在 不得将 169.254/16 前缀发送到任何路由器进行转发,并且 任何接收此类数据包的网络设备不得转发它, 不管 IPv4 标头中的 TTL。同样,路由器或 其他主机不得不分青红皂白地回答所有 ARP 请求 169.254/16 前缀中的地址。路由器当然可以回答 ARP 请求它拥有的一个或多个 IPv4 链路本地地址 根据声明和- 捍卫本文档中描述的协议。 此限制也适用于多播数据包。 IPv4数据包 具有链接本地源地址的 MUST NOT 被转发到外部 本地链接,即使它们具有多播目标地址。 2.8.链路本地数据包是本地的 非转发规则意味着主机可以假定所有 169.254/16 目标地址是“on-link”并且直接 可达。 169.254/16 地址前缀不得划分子网。 该规范利用基于 ARP 的地址冲突检测, 它通过在本地子网上广播来发挥作用。既然这样 不转发广播,然后允许子网划分 地址冲突可能仍未被发现。

这并不意味着 Link-Local 设备被禁止从任何 本地链接之外的通信。实现两者的 IP 主机 链路本地和传统的可路由 IPv4 地址仍可使用 他们的可路由地址不受限制,就像他们今天所做的那样。 2.9.高层协议注意事项 类似的考虑适用于 IP 之上的层。 例如,网页的设计者(包括自动 生成的网页)不应包含带有嵌入式 IPv4 的链接 链接本地地址,如果这些页面可以从外部主机查看 地址有效的本地链接。 由于 IPv4 链路本地地址可能随时更改并且具有有限的 范围,IPv4 链路本地地址不得存储在 DNS 中。 2.10.隐私问题 限制 IPv4 链路本地地址泄漏的另一个原因 本地链接之外是隐私问题。如果 IPv4 链路本地 地址是从 MAC 地址的散列派生的,有人认为 他们可能与个人间接相关,从而 用于跟踪该个人的活动。在本地链接内 数据包中的硬件地址都是直接可见的,所以 只要 IPv4 链路本地地址不离开本地链路,它们 向入侵者提供的信息不超过可以通过以下方式获得的信息 直接观察硬件地址。 2.11. DHCPv4 客户端与 IPv4 链路本地状态之间的交互 机器 如附录 A 中所述,IPv4 Link-Local 的早期实现 修改了 DHCP 状态机。现场经验表明 这些修改降低了 DHCP 服务的可靠性。 同时实现 IPv4 Link-Local 和 DHCPv4 客户端的设备 不应改变 DHCPv4 客户端的行为以适应 IPv4 链路本地配置。特别是配置一个 IPv4 链路本地地址,无论当前是否有 DHCP 服务器 响应,不是取消配置有效 DHCP 的充分理由 租用,以阻止 DHCP 客户端尝试获取新 IP 地址,更改 DHCP 超时或更改行为 任何其他方式的 DHCP 状态机。 在“网络检测”中提供了对该问题的进一步讨论 IPv4 中的附件(DNA)”[DNAv4]。

  1. 多接口注意事项 此处概述的注意事项也适用于主机具有 多个 IP 地址,无论它是否具有多个物理地址 接口。多个接口的其他示例包括不同的 逻辑端点(隧道、虚拟专用网络等)和 同一物理介质上的多个逻辑网络。这经常 简称“多户”。 具有多个活动接口并选择的主机 在一台设备上实现 IPv4 链路本地地址的动态配置 或更多这些接口将面临各种问题。本节 列出这些问题,但仅说明一个人可能如何 解决它们。在撰写本文时,还没有灵丹妙药 它以一般方式解决了所有情况下的这些问题。 实施者在实施之前必须考虑清楚这些问题 本文档中指定的协议在一个系统上可能有更多 比一个活动接口作为 TCP/IP 堆栈的一部分能够 多宿主。 3.1.作用域地址 一台主机可以同时连接到多个网络。它 如果每一个都使用一个地址空间就好了 网络,但事实并非如此。在一个网络中使用的地址是 它是 NAT 后面的网络或 IPv4 Link-Local 所在的链路 地址被使用,不能在另一个网络中使用并且具有 同样的效果。 如果地址不暴露给应用程序也很好, 但他们是。大多数使用等待消息的 TCP/IP 的软件 从特定端口号的任何接口接收,对于 特定的传输协议。应用程序通常只知道 (并关心)他们收到了一条消息。应用知道 应用程序将回复的发件人地址。 第一个作用域地址问题是源地址选择。 A 多宿主主机有多个地址。应该是哪个地址 发送到特定目的地时用作源地址? 这个问题通常通过参考路由表来回答, 它表示在哪个接口(使用哪个地址)上发送,以及 如何发送(应该转发到路由器,还是直接发送)。这 作用域地址使选择变得复杂,因为地址 目的地所在的范围可能不明确。该表可能 无法给出好的答案。这个问题与 下一跳选择,这在第 3.2 节中讨论。

第二个作用域地址问题来自作用域参数 泄漏到他们的范围之外。这在第 7 节中讨论。 有可能克服这些问题。一种方法是暴露 应用程序的范围信息,以便他们始终知道 对等点在什么范围内。这样,正确的接口可能是 选择,并且一个安全的程序可以遵循相对于 转发地址和其他作用域参数。还有其他 可能的方法。这些方法都没有标准化 对于 IPv4 也没有在本文档中指定。好的API设计 可以通过将地址范围暴露给 “作用域地址感知”应用程序或巧妙地封装 确定信息和逻辑的范围,以便应用程序做正确的事情 不知道地址范围。 实施者可以承诺解决这些问题,但不能 简单地忽略它们。有足够的经验,希望 规范将出现,解释如何克服作用域地址 多宿主问题。 3.2.地址歧义 这是关于 IPv4 链路本地目标的核心问题 在多个接口上可达的地址。应该做什么 主机在需要发送到链路本地目的地 L 时执行,L 可以 在多个链路上使用 ARP 可以解决吗? 即使一个链接本地地址只能在一个链接上解析 给定的时刻,不能保证它会保持明确 将来。其他接口上的其他主机可能会声明 地址L也是。 一种可能性是仅在 应用程序明确表示从哪个接口发送。 这个问题没有标准或明显的解决方案。现存的 为 IPv4 协议族编写的应用软件主要是 无法处理地址歧义。这并不排除 一个实施者从寻找解决方案,编写应用程序 能够使用它,并提供一个可以支持动态的主机 在多个设备上配置 IPv4 链路本地地址 界面。这个解决方案几乎肯定不会被普遍使用 适用于现有软件并对更高层透明, 然而。 鉴于IP栈必须关联出接口 带有需要发送到链路本地目的地的数据包 地址,接口选择必须发生。出接口 不能从数据包的标头参数(例如源)中导出 或目标地址(例如,通过使用转发表查找)。 因此,出接口关联必须显式进行 通过其他方式。规范没有规定那些 方法。 3.3.与具有可路由地址的主机交互 在本规范中注意从使用过渡 IPv4 链路本地地址到可路由地址(参见第 1.5 节)。 目的是让具有单一接口的主机首先 支持 Link-Local 配置,然后优雅地过渡到 使用可路由地址。自主机过渡到使用 一个可路由地址可能暂时有多个地址 活动,第 3.1 节中描述的范围地址问题将 申请。当主机获得可路由地址时,它不需要 保留其链接本地地址以便与 链路上的其他设备本身仅使用 Link-Local 地址:任何符合本规范的主机都知道 无论源地址如何,IPv4 链路本地目标必须是 通过直接转发到目的地而不是通过路由器到达; 该主机不必具有链路本地源地址 为了发送到链路本地目标地址。 具有 IPv4 链路本地地址的主机可以发送到目的地 它没有 IPv4 链路本地地址。如果主机不是 多宿主,过程简单且明确:使用 ARP 和 直接转发到链接上的目的地是默认路由。如果 主机是多宿主的,但是路由策略更复杂, 特别是如果其中一个接口配置了可路由的 地址和默认路由(明智地)指向路由器 通过该接口访问。下面的例子说明 这个问题并提供了一个通用的解决方案。

上图中,HOST1分别连接了link1和link2。 接口 i1 配置有可路由地址,而 i2 是一个 IPv4 链路本地地址。 HOST1 的默认路由设置为 ROUTER 的 地址,通过 i1。 HOST1 将路由到 169.254/16 中的目的地 到 i2,直接发送到目的地。 HOST2 已配置(非链路本地)IPv4 地址分配给 i3。

使用名称解析或服务发现协议 HOST1 可以发现 HOST2 的地址。由于 HOST2 的地址不在169.254/16,HOST1的路由策略会通过i1,到路由器。除非有从 ROUTER 到 HOST2 的路由,否则 从 HOST1 发送到 HOST2 的数据报将无法到达它。

此问题的一种解决方案是让主机尝试访问任何本地主机(使用 ARP),它接收到无法访问的 ICMP错误消息(ICMP 消息代码 0、1、6 或 7 [RFC792])。主人以循环方式尝试所有附加链接。这已经为某些 IPv6 主机成功实施,以完全规避这个问题。就此示例而言,HOST1 在无法到达时HOST2 通过 ROUTER,将尝试通过 i2 转发到 HOST2,并且成功。也可以使用技术来克服这个问题3.2 节中描述的,或此处未讨论的其他方式。这规范不提供标准解决方案,也不阻止实施者支持多宿主配置,只要他们解决了本节中的问题主机将支持的应用程序。

3.4.无意的自身免疫反应

如果多宿主主机可以支持多个,则必须小心同一链路上的接口,所有接口都支持 IPv4 Link-Local自动配置。如果这些接口试图分配相同的地址,他们将保护主机免受自身攻击——导致声称算法失败。这个问题最简单的解决方案是在配置的每个接口上独立运行算法IPv4 链路本地地址。

特别是,ARP 数据包似乎要求一个地址是分配给一个特定的接口,只有当它们是在该接口上收到,它们的硬件地址是一些其他接口。如果主机在同一链路上有两个接口,则声明和在这些接口上进行防御必须确保它们最终以不同的地址就像它们在不同的主机上一样。笔记主机可能发现自己有两个接口的某些方式相同的链接可能是意想不到的和不明显的,例如当一个主机有以太网和 802.11 无线,但这两个链接是(可能即使在主机用户不知情的情况下)桥接在一起。

4.网络分区的修复

不相交网络链路上的主机可能配置相同的 IPv4 Link-本地地址。如果这些单独的网络链接稍后加入或桥接在一起,那么可能有两个主机现在在相同的链接,试图使用相同的地址。当任一主机尝试要与网络上的任何其他主机通信,它会在某些时候点广播一个 ARP 数据包,这将启用有问题的主机检测是否存在地址冲突。当检测到这些地址冲突时,随后的强制重新配置可能会中断,导致 TCP 连接破碎的。但是,预计此类中断将很少见。

加入网络应该相对不常见这些网络上的主机处于活动状态。此外,65024 地址是可供 IPv4 Link-Local 使用,因此即使两个小型网络被加入,任何给定主机发生冲突的机会是公平的小的。

当加入两个大型网络(定义为具有每个网段有大量主机)有更大的机会冲突。在这样的网络中,很可能加入先前分离的段将导致一个或多个主机需要更改其 IPv4 链路本地地址,随后丢失TCP 连接数。在分离和重新结合的情况下频繁,如在远程桥接网络中,这可以证明破坏性的。但是,除非加入的主机数量段非常大,连接产生的流量和后续的地址冲突解决会很小。通过以下方式发送具有 IPv4 链路本地发件人地址的 ARP 回复广播而不是单播确保这些冲突可以一旦它们成为潜在问题就会被发现,但不会更早。

例如,如果连接了两个不相交的网络链接,其中主机 A和 B 都配置了相同的链路本地地址 X,他们可以保持这种状态,直到 A、B 或其他主机尝试发起沟通。如果某个其他主机 C 现在发送一个 ARP请求地址 X,主机 A 和 B 都回复传统的单播 ARP 回复,那么主机 C 可能会感到困惑,但是A 和 B 仍然不知道有问题,因为他们也不知道看过对方的包裹。通过广播发送这些回复允许 A 和 B 看到彼此冲突的 ARP 数据包和做出相应回应。

请注意,定期发送无偿 ARP 以尝试检测这些冲突越快越好,浪费网络带宽,并且实际上可能是有害的。例如,如果网络链接只是短暂地结合,并在任何新的之前再次分离涉及 A 或 B 的通信被发起,然后是临时的冲突本来是良性的,不会强制重新配置已被要求。触发不必要的强制重新配置在这种情况下不会起到任何有用的作用。主机不应该发送定期免费 ARP。

5. 安全考虑

使用 IPv4 链路本地地址可能会打开一个网络主机到新的 攻击。特别是以前没有IP的主机地址,并且没有运行 IP 堆栈,不易受到基于 IP 的影响攻击。通过配置工作地址,主机现在可以容易受到基于 IP 的攻击。

ARP 协议 [RFC826] 是不安全的。恶意主机可能会发送网络上的欺诈性 ARP 数据包,干扰正确的其他主机的操作。例如,主机很容易回答所有 ARP 请求,回复给出自己的硬件地址,从而声称拥有网络上每个地址的所有权。

注意:有某些类型的本地链接,例如无线 LAN、不提供人身安全。因为这些的存在链接 实现者假设什么时候是非常不明智的设备仅在它可以免除的本地链路上通信正常的安全预防措施。未能实施适当的安全措施可能会使用户面临相当大的风险。

实现 IPv4 链路本地配置的主机有一个额外的选择性重新配置和中断的脆弱性。这是链接上的攻击者可能会发出 ARP 数据包,这将导致主机通过切换到一个新的断开所有连接地址。攻击者可以强制主机实现 IPv4 Link-本地配置选择某些地址,或阻止它完成地址选择。这是一个明显的威胁由上一段中描述的欺骗性 ARP 造成的。实现和用户还应该注意放弃的节点一个地址和重新配置,如第 2.5 节所要求的,允许另一个节点可以轻松成功劫持的可能性现有的 TCP 连接。

实施者被告知互联网协议架构期望每个联网设备或主机都必须实现安全性足以保护设备或主机拥有的资源访问,包括网络本身,针对已知或可信的威胁。即使使用 IPv4 链路本地地址可能会减少设备暴露的威胁数量,实施者支持 Internet 协议的设备不得假设客户本地网络无安全隐患。

虽然可能有特定种类的设备,或特定的环境,网络提供的安全性是足以保护设备可访问的资源,作出一般性声明,大意是使用 IPv4 的设备降低了提供安全性的要求链接本地地址作为唯一的访问方式。在所有情况下,无论是否使用 IPv4 链路本地地址,它对于支持互联网的设备的实施者来说是必要的分析已知和可信威胁的协议特定的主机或设备可能会受到影响,并在一定程度上是可行的,提供安全机制,改善或减少与此类威胁相关的风险。

6. 应用程序编程注意事项

使用 IPv4 链路本地自动配置地址会带来额外的挑战应用程序的作者,并可能导致现有应用软件故障。

6.1.地址更改、故障和恢复

应用程序使用的 IPv4 链路本地地址可能会改变时间。一些遇到地址变化的应用软件会失败。例如,现有的客户端 TCP 连接将被中止,地址改变的服务器将不得不被重新发现、封锁读取和写入将以错误条件退出,等等。

生产将在 IP 上使用的应用软件的供应商支持 IPv4 链路本地地址配置的实现应该检测并处理地址更改事件。供应商生产支持 IPv4 链路本地地址配置的 IPv4 实现应该向应用程序公开地址更改事件。

6.2.定位器的有限转发

不得通过应用程序转发 IPv4 链路本地地址协议(例如在 URL 中),到不在相同的链接。这将在第 2.9 节和第 3 节中进一步讨论。

现有的转发地址的分布式应用软件信息可能会失败。例如,FTP [RFC959](当不使用被动模式)传输客户端的 IP 地址。

假设一个客户端启动并在它启动时获取其 IPv4 配置只有一个链接本地地址。后来,主机获得了一个全球IP地址,并且客户端联系本地以外的 FTP 服务器关联。如果 FTP 客户端改为传输其旧的链接本地地址在 FTP“端口”命令中输入其新的全局 IP 地址,然后 FTP服务器将无法打开返回客户端的数据连接,并且 FTP 操作将失败。

6.3.地址歧义

在支持 IPv4 的多宿主主机上运行的应用软件 多个接口上的链路本地地址配置可能会失败。 这是因为应用程序软件假定 IPv4 地址是 明确的,它只能指代一个主机。 IPv4 链路本地 地址仅在单个链接上是唯一的。主机连接到 多个链接很容易遇到相同的情况 地址出现在多个接口上,或者第一个出现在一个接口上 接口,稍后再说;在任何情况下与超过 一个主机。大多数现有软件都没有为这种歧义做好准备。 将来可以开发应用程序编程接口 来防止这个问题。这个问题在第 3 节中讨论。 7.路由器注意事项 路由器不得转发具有 IPv4 链路本地源或 目的地址,与路由器的默认路由无关 从动态路由协议获得的配置或路由。 接收带有 IPv4 Link-Local 源的数据包的路由器或 目的地址不得转发数据包。这可以防止 将数据包转发回它们所在的网段 起源,或任何其他段。 8. IANA 考虑 IANA 已分配前缀 169.254/16 用于描述的用途 这个文件。此范围内的第一个和最后一个 256 个地址 (169.254.0.x 和 169.254.255.x)由 Standards Action 分配,如 在“编写 IANA 指南”(BCP 26) [RFC2434] 中定义。不 本文档要求其他 IANA 服务。

9.常量 本协议中使用了以下时间常数;他们是 不打算由用户配置。 PROBE_WAIT 1 秒(初始随机延迟) PROBE_NUM 3(探测包数量) PROBE_MIN 1 秒(重复探测前的最小延迟) PROBE_MAX 2 秒(重复探测前的最大延迟) ANNOUNCE_WAIT 2 秒(宣布前​​延迟) ANNOUNCE_NUM 2(公告包的数量) ANNOUNCE_INTERVAL 2 秒(公告包之间的时间) MAX_CONFLICTS 10(速率限制前的最大冲突) RATE_LIMIT_INTERVAL 60 秒(连续尝试之间的延迟) DEFEND_INTERVAL 10 秒(防御之间的最小间隔 ARP)。 10. 参考资料 10.1.规范性参考文献 [RFC792] Postel, J.,“互联网控制消息协议”,STD 5,RFC 792,1981 年 9 月。 [RFC826] Plummer, D.,“以太网地址解析协议:或 将网络协议地址转换为 48 位以太网 在以太网硬件上传输的地址”,STD 37,RFC 826,1982 年 11 月。 [RFC2119] Bradner, S.,“RFC 中用于指示的关键词 要求级别”,BCP 14,RFC 2119,1997 年 3 月。 [RFC2434] Narten, T. 和 H. Alvestrand,“编写 RFC 中的 IANA 考虑部分”,BCP 26,RFC 2434, 1998 年 10 月。 10.2.信息参考 [802] IEEE 局域网和城域网标准: 概述和架构,ANSI/IEEE Std 802,1990。 [802.3] ISO/IEC 8802-3 信息技术-电信 和系统之间的信息交换 - 本地和 城域网通用规范第1部分 3:带冲突检测的载波侦听多路访问 (CSMA/CD) 访问方法和物理层规范, (还有 ANSI/IEEE 标准 802.3-1996),1996 年。

[802.5] ISO/IEC 8802-5 信息技术-电信 和系统之间的信息交换 - 本地和 城域网通用规范第1部分 5:令牌环接入方式及物理层 规范,(还有 ANSI/IEEE Std 802.5-1998),1998 年。 [802.11]信息技术——电信和信息 系统之间的交换 - 本地和大都市区 网络 - 特定要求第 11 部分:无线 LAN 媒体访问控制 (MAC) 和物理层 (PHY) 规范,IEEE 标准。 802.11-1999,1999。 [RFC959] Postel, J. 和 J. Reynolds,“文件传输协议”,STD 9,RFC 959,1985 年 10 月。 [RFC1918] Rekhter, Y., Moskowitz, B., Karrenberg, D., de Groot, G., 和 E. Lear,“专用互联网的地址分配”, BCP 5,RFC 1918,1996 年 2 月。 [RFC2131] Droms, R.,“动态主机配置协议”,RFC 2131, 1997 年 3 月。 [RFC2462] Thomson, S. 和 T. Narten,“IPv6 无状态地址 自动配置”,RFC 2462,1998 年 12 月。 [RFC3027] Holdrege, M. 和 P. Srisuresh,“协议并发症与 IP 网络地址转换器”,RFC 3027,2001 年 1 月。 [DNAv4] Aboba, B.,“检测 IPv4 中的网络附件 (DNA)”, 进行中的工作,2004 年 7 月。 [LLMNR] Esibov, L.、Aboba, B. 和 D. Thaler,“Linklocal Multicast 名称解析 (LLMNR)”,正在进行的工作,2004 年 6 月。 致谢 我们要感谢(按字母顺序排列)Jim Busse、Pavani Diwanji, Donald Eastlake 3rd, Robert Elz, Peter Ford, 斯宾塞 贾卡隆、乔什·格雷斯利、布拉德·哈兹、迈伦·海蒂格、休·霍尔布鲁克、 克里斯蒂安·惠特玛、理查德·约翰逊、金容云、米卡·里尔耶伯格、 罗德·洛佩兹、基思·摩尔、萨蒂什·蒙德拉、托马斯·纳尔滕、埃里克·诺德马克、 菲利普·奈、霍华德·里德诺、丹尼尔·塞尼、迪特·西格蒙德、瓦列里 Smyslov 和 Ryan Troll 的贡献。

附录 A - 先前的实施 A.1. Apple Mac OS 8.x 和 9.x。 Mac OS 在伪随机基础上选择 IP 地址。被选中的 地址保存在持久存储中以供以后继续使用 重启,如果可能的话。 Mac OS 发送 9 个 DHCPDISCOVER 数据包,间隔为 2 数据包之间的秒数。如果没有收到任何回应 这些请求(18 秒),它将自动配置。 当发现所选地址正在使用时,Mac OS 将选择一个 新的随机地址并重试,速率限制为不超过 每两秒尝试一次。 自动配置的 Mac OS 系统检查是否存在 DHCP 服务器 每五分钟。如果找到 DHCP 服务器但未找到 Mac OS 成功获得新的租约,它保留现有的 自动配置的 IP 地址。如果 Mac OS 成功获得 新租约,它会在没有警告的情况下丢弃所有现有连接。这 可能会导致用户丢失正在进行的会话。一旦新的租约 获得后,Mac OS 将不会使用 自动配置的 IP 地址。 Mac OS 系统不发送寻址到链路本地地址的数据包 到默认网关(如果存在);这些地址总是 在本地段上解决。 Mac OS 系统默认发送所有传出的单播数据包 TTL 为 255。所有多播和广播数据包也与 如果源地址位于 169.254/16 前缀中,则 TTL 为 255。 Mac OS 实现媒体感知,其中硬件(和驱动程序 软件)支持这一点。只要网络连接是 检测到,将在接口上发送 DHCPDISCOVER。这意味着 系统将立即退出自动配置模式 一旦连接恢复。 A2。 Apple Mac OS X 版本 10.2 Mac OS X 在伪随机基础上选择 IP 地址。这 选定的地址保存在内存中,以便在 单次引导期间的后续自动配置尝试 系统。

链路本地地址的自动配置取决于 DHCP 进程。 DHCP 发送两个数据包,超时时间为 1 和 两秒钟。如果没有收到响应(三秒),它开始 自动配置。 DHCP 继续并行发送数据包一段时间 总时间 60 秒。 在自动配置开始时,它会生成 10 个唯一的随机 IP 地址,并依次探测每个 2 秒。它停止 在找到未使用的地址或列表后进行探测 地址用完了。 如果 DHCP 不成功,它会等待五分钟,然后重新开始 再次。一旦 DHCP 成功,自动配置的 Link-Local 地址已放弃。然而,Link-Local 子网仍然存在配置。

任何情况下,仅在单个接口上尝试自动配置给定的时刻。Mac OS X 确保连接的接口具有最高优先级与链路本地子网相关联。数据包地址到链接本地地址永远不会发送到默认网关,如果一个存在。链路本地地址总是在本地解析部分。Mac OS X 在硬件和驱动程序支持的地方实现媒体感知它。当网络媒体提示已连接时,自动配置过程再次开始,并尝试重新使用先前分配的链路本地地址。当网络媒体表示已经断开连接,系统等待四在取消配置链路本地地址和子网之前的秒数。如果连接在此之前恢复,自动配置过程再次开始。如果在此之前未恢复连接此时,系统选择另一个接口进行自动配置。

Mac OS X 默认发送所有 TTL 为255. 所有多播和广播数据包也以 TTL 发送255 如果它们在 169.254/16 前缀中有源地址。A.3.微软视窗 98/98SEWindows 98/98SE 系统选择它们的 IPv4 链路本地地址伪随机基础。地址选择算法基于计算接口 MAC 地址的散列,这样一个大的主机集合应服从均匀概率分布在 169.254/16 地址空间内选择地址。推导

来自接口 MAC 地址的初始 IPv4 链路本地地址还确保系统重新启动将获得相同的自动配置的地址,除非检测到冲突。当处于 INIT 状态时,Windows 98/98SE DHCP 客户端发出一个总计4 个 DHCPDISCOVER,数据包间间隔为 6 秒。什么时候所有 4 个数据包(24 秒)后都没有收到响应,它将自动配置一个地址。

Windows 98/98SE 系统的自动配置重试次数为 10。在尝试了 10 个自动配置的 IPv4 地址后,发现都是采取,主机将在没有 IPv4 地址的情况下启动。自动配置的 Windows 98/98SE 系统检查是否存在DHCP 服务器每五分钟一次。如果找到 DHCP 服务器但 Windows 98 没有成功获得新的租约,它保留了现有自动配置的 IPv4 链路本地地址。如果是 Windows 98/98SE成功获得新的租约,它会丢弃所有现有的没有警告的连接。这可能会导致用户丢失会话进行中。一旦获得新租约,Windows 98/98SE 将不再使用自动配置的 IPv4 Link-Local 分配更多连接地址。具有 IPv4 链路本地地址的 Windows 98/98SE 系统不发送将发往 IPv4 链路本地地址的数据包设置为默认值网关(如果存在);这些地址总是在本地段。

Windows 98/98SE 系统默认发送所有传出的单播数据包TTL 为 128。TTL 配置是通过设置Windows 注册表项HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services:\Tcpip\将 REG_DWORD 类型的 Parameters\DefaultTTL 设置为适当的值。但是,此默认 TTL 将应用于所有数据包。虽然这设施可用于将默认 TTL 设置为 255,但不能用于将 IPv4 链路本地数据包的默认 TTL 设置为一 (1),同时允许使用大于 1 的 TTL 发送其他数据包。Windows 98/98SE 系统不实现媒体感知。这意味着网络连接问题(例如电缆松动)可能会阻止一个系统联系 DHCP 服务器,从而导致它自动配置。当连接问题得到修复时(例如当电缆重新连接)情况不会立即纠正本身。由于系统不会感知重新连接,它会 保持自动配置模式,直到尝试到达 DHCP 服务器。

Windows 98SE Internet 连接中包含的 DHCP 服务器共享 (ICS)(NAT 实现)从 192.168/16 中分配默认私有地址空间。但是,可以通过注册表项,并且不进行任何检查以防止分配出 IPv4 链路本地前缀。配置为这样做时,Windows 98SE ICS将重写来自 IPv4 Link-Local 前缀的数据包并转发它们超出本地链接。 Windows 98SE ICS 不自动路由对于 IPv4 Link-Local 前缀,以便主机通过DHCP 无法与仅自动配置的设备通信。存在从 IPv4 分配地址的其他家庭网关 默认情况下的链接本地前缀。 Windows 98/98SE 系统可以使用169.254/16 IPv4 Link-Local地址作为源地址时与非链路本地主机通信。 Windows 98/98SE 不支持路由器请求/广告。 Windows 98/98SE 系统进入时不会自动发现默认网关自动配置模式。 A.4. Windows XP、2000 和 MEWindows XP、Windows 2000 和Windows ME 系统与 Windows 98/98SE 相同,除了以下几个方面:媒体感路由器发现沉默的RIP Windows XP、2000 和 ME 实现媒体感知。一有网络检测到连接,将发送 DHCPREQUEST 或 DHCPDISCOVER在界面上。这意味着系统将立即连接一建立就退出自动配置模式恢复。Windows XP、2000 和 ME 也支持路由器发现,尽管它默认关闭。 Windows XP 和 2000 也支持 RIP听众。

这意味着他们可能会无意中发现一个默认值在自动配置模式下的网关。Windows XP/2000/ME 上的 ICS 与 Windows 98SE 的行为相同关于地址分配和链路本地前缀的 NATing。