DNS 的 IP 地址会随时间变化吗?

Does IP address of a DNS changes over time?

我有一组域名和它们的IP地址。当我分别向域名和 IP 地址发送 http 请求时,我发现响应中存在差异。向域名发送http请求时响应的主机比IP地址高。所以,我想知道域名的IP地址是否会随着时间的推移而变化。如果它改变了那么可能是什么原因。如果有任何回复,我将不胜感激。

I was wondering if the IP addresses of the domain names changes overtime

它们可能会随着时间而改变,而且可能最终会改变。

If it changes then what could be the reason.

这真的取决于个人服务器。如果服务器有静态 IP 地址,它们可能不会改变,但可以。如果服务器有动态 IP 地址,它们很可能会改变。如果服务器移动到新的 building/network,IP 地址可能会发生变化。

这就是 DNS 的全部意义所在 - 能够将给定的主机名解析为其当前的 IP 地址,而不管地址实际是什么。当主机名注册到 DNS 时,主机名的 DNS 记录会在其 IP 地址更改时相应更新,并且这些更改会在 public 个 DNS 服务器中传播和缓存。这就是为什么有时当主机名更改其 IP 地址时,客户端系统可能需要一些时间(几分钟、几小时)才能检测到新的 IP 地址,具体取决于正在查询的 DNS 服务器以及 DNS 请求的格式。

当客户端想要通过主机名连接到服务器时,它会发送 DNS 请求以获取当前 IP 地址。请求在 DNS 系统中循环,直到 DNS 服务器决定它有一个合适的答案并回复它当前知道的 IP 地址(可能被缓存,所以 DNS 请求可能并不总是一个权威的响应,除非客户端明确请求,在这种情况下,请求被路由到拥有主机名的 DNS 服务器),然后客户端根据需要连接到这些 IP 地址。

有时这些 IP 地址可能与客户端未连接到的网络有关。有时,IP 地址可能会被中间 DNS 服务器缓存,并且会随着时间的推移而过时。这就是为什么最好尝试连接到 DNS 响应中报告的每个 IP 地址的原因。但是许多套接字程序员并没有这样做,他们通常只是连接到报告的第一个 IP 地址。如果可以,尽量不要落入同样的陷阱。