当 iPhone 在 DNS 响应中获取多个 IP 地址时,它如何选择 IP 地址?

当 iPhone 在 DNS 响应中获取多个 IP 地址时,它如何选择 IP 地址?

我试图了解在下面的特定场景中,Iphone 如何从 DNS 响应中返回的 2 个 IP 地址中决定使用哪个 IP 地址。

场景是这样的:

1- Iphone 发送类似“bsf.mncxx.mccxx.pub.3gppnetwork.org”的 Arecord 的 DNS 查询,并在响应中获取 2 个 IP 地址。

2- iPhone 向其中一个 IP 地址发送 GET 请求来验证自身身份(此步骤中选择哪个 BSF IP 并不重要)

3- BSF 返回 401 Unauthorized 身份验证质询

4- Iphone 计算响应并在第二个 GET 请求中发送它。

问题就从这里开始。iPhone 在这里随机选择 BSF。预期是在步骤 2 中将第二个 GET(带有计算的响应)发送到同一个 BSF。所有其他手机(三星、华为、索尼等)都在步骤 2 中将其发送到 BSF。但似乎 iPhone 只是随机选择。如果选择了其他 BSF,身份验证将失败。

作为一种解决方法,我们将 BSF 配置为在 http 401 响应中发送 Connection:keep-alive,但不幸的是它没有帮助。iPhone 仍然随机选择它。

在我们的设置中,BSF IP 地址位于近距离子网中(BSF1 = 172.31.59.165,BSF2= 172.31.59.181)

非常奇怪的是,在另一个设置中(BSF 与我们的不完全相同,但 http 请求和响应类似),同一部 iPhone 在步骤 2 和步骤 4 中始终选择相同的 BSF(BSF1=10.216.138.78,BSF2= 10.210.149.79)。如果它在步骤 2 中选择 BSF1,则在步骤 4 中继续使用 BSF1。BSF2 也是如此。

Iphone 有可能在决策过程中检查子网吗?如果有任何其他猜测或建议,我们将不胜感激。

谢谢怀特

相关内容