当我手动更改我的 IP 地址时,下面会发生什么?

网络工程 ip IPv4 子网 IP地址 网络发现
2022-02-08 21:31:42

当我搬进新宿舍时,网络中心的网络管理员会告诉我我的 IP 地址、DNS 地址、网关地址等等。我被告知只需插入我的电缆,输入这些地址,然后一切都很好。

它确实工作得很好。

但我想知道,当我手动更改这些地址时会发生什么?同一个子网下的两个人输入同一个IP地址不会有冲突的可能吗?如何防止这种情况?

我知道有一个称为 DHCP 的协议,它被设置为动态地为加入网络的新设备分配 IP 地址。我非常了解 DHCP,但我无法弄清楚那些手动分配的 IP 地址到底发生了什么。使用什么协议来处理这些可能的冲突?而且,更重要的是,我的设备如何告诉路由器这个新的 IP 地址,以便路由器可以向正确的方向转发数据包?

1个回答

同一个子网下的两个人输入同一个IP地址不会有冲突的可能吗?如何防止它们?

是的,当网络手动配置寻址时,可以而且确实会发生这种情况。这种情况会导致不可预测的网络行为。通常,具有相同地址的设备无法在网络上进行通信。有时,一台设备可以工作。一些操作系统可以检测到冲突并报告它。没有真正的方法可以防止这种情况发生。

使用什么协议来处理这些可能的冲突?更重要的是,我的设备如何告诉路由器这个新的 IP 地址,以便路由器可以向正确的方向转发数据包?

您的设备不需要告诉路由器任何事情。路由器知道连接到其接口的网络。它会通过 ARP 将第 3 层地址解析为第 2 层地址,然后再将数据包封装成网段的帧。

IPv6 内置了 DAD(重复地址检测)。对于 IPv4,它不是原始标准的一部分,但现在有RFC 5227,IPv4 地址冲突检测

一、简介

从历史上看,意外地将两台 Internet 主机配置为相同的 IP 地址通常是一个令人讨厌且难以诊断的问题。

这是不幸的,因为现有的地址解析协议 (ARP) 为主机提供了一种简单的方法来检测这种错误配置并将其报告给用户。DHCP 规范 [RFC2131] 简要提到了 ARP 在检测错误配置中的作用,如以下 RFC 2131 的三个节选所示:

  • 客户端应该探测新收到的地址,例如,使用 ARP

  • 客户端应该对参数进行最终检查(例如,分配网络地址的 ARP)


  • 如果客户端检测到该地址已被使用(例如,通过使用 ARP),客户端必须向服务器发送 DHCPDECLINE 消息

    不幸的是,DHCP 规范并没有为实现者提供关于要发送的 ARP 数据包的数量、数据包之间的间隔、在得出可以安全使用地址之前等待的总时间,甚至主机的数据包类型的任何指导。应该倾听,才能做出这个决定。如果在断定一个地址可以安全使用之后,它没有指定主机应该采取的行动,它随后发现它是错误的。它也未能指定 DHCP 客户端应采取哪些预防措施来防范病理性故障情况,例如重复提供相同地址的 DHCP 服务器,即使它已被拒绝多次。

    DHCP 规范的作者当时可能有理由认为这些问题的答案似乎过于简单、明显和直截了当,不值得一提,但不幸的是,这给每个单独的实现者留下了协议设计的一些负担。本文件旨在通过明确规定以下方面所需的行动来弥补这一遗漏:

  1. 确定地址的使用是否可能导致寻址冲突。这包括 (a) 地址已被同一链路上的另一台主机主动使用的情况,以及 (b) 两台主机无意间开始使用同一地址的情况,并且两者同时处于探查以确定地址是否可以安全使用(第 2.1 节)。

  2. 随后被动检测网络上的另一台主机无意中使用了相同的地址。即使所有主机都采取了预防措施以避免使用已在使用的地址,但如果在初始接口配置时两台主机无法通信,仍然会发生冲突。如果主机暂时超出范围,则无线网络接口可能会发生这种情况,或者如果两个以太网集线器之间的链路在地址配置时不起作用,则可能会发生以太网接口。精心设计的主机不仅会处理在接口配置期间检测到的冲突,还会在主机使用地址的整个持续时间内处理以后检测到的冲突(第 2.4 节)。

  3. 在重复冲突过多的情况下对地址获取尝试进行速率限制(第 2.1 节)。

IPv4 地址冲突检测 (ACD) 的实用程序不仅限于 DHCP 客户端。无论地址是如何配置的,无论是通过人类用户手动输入、通过从 DHCP 服务器接收的信息,还是通过任何其他配置信息源,检测冲突都是有用的。在检测到冲突时,配置代理应该被通知错误。在配置代理是人类用户的情况下,该通知可以采用屏幕上的错误消息、简单网络管理协议 (SNMP) 通知或通过文本消息发送到移动电话的错误消息的形式。对于 DHCP 服务器,该通知采用发送到服务器的 DHCP DECLINE 消息的形式。在通过其他类型的软件配置的情况下,该通知以错误指示的形式向相关软件发出通知,通知它它选择的地址与网络上的某些其他主机发生冲突。配置软件可以选择停止网络操作,也可以自动选择一个新地址,以便主机尽快重新建立IP连接。

IPv4 链路本地地址的分配 [RFC3927] 可以被认为是这种机制的一个特例,其中配置代理是一个伪随机数生成器,它在收到冲突通知时采取的行动是选择一个不同的随机数,然后重试。事实上,这正是 1998 年在 Mac OS 9 中实现 IPv4 Link-Local Addressing 的方式。如果 DHCP 客户端未能从任何 DHCP 服务器获得响应,它将简单地组成一个包含随机 169.254.xx 的虚假响应地址。如果 ARP 模块报告了该地址的冲突,则 DHCP 客户端将再次尝试,根据需要多次组成一个新的随机 169.254.xx 地址,直到成功。