Как iPhone выбирает IP-адрес, если в ответе DNS он получает несколько IP-адресов?

Как iPhone выбирает IP-адрес, если в ответе DNS он получает несколько IP-адресов?

Я пытаюсь понять, как iPhone решает, какой IP-адрес использовать из двух IP-адресов, возвращенных в ответе DNS в этом конкретном сценарии ниже.

Сценарий такой:

1- iPhone отправляет DNS-запрос на Arecord типа «bsf.mncxx.mccxx.pub.3gppnetwork.org» и получает в ответ 2 IP-адреса.

2- iPhone отправляет запросы GET на один из IP-адресов для своей аутентификации (неважно, какой BSF IP выбран на этом этапе)

3- BSF возвращает 401 Unauthorized с проблемой аутентификации

4- iPhone вычисляет ответ и отправляет его во втором запросе GET.

Проблема начинается здесь. iPhone выбирает BSF случайным образом. Ожидается, что этот 2-й GET (с рассчитанным ответом) будет отправлен в тот же BSF на шаге 2. Все остальные телефоны (Samsung, Huawei, Sony и т. д.) отправляют его в BSF на шаге 2. Но, похоже, iPhone просто выбирает случайным образом. Если выбран другой BSF, аутентификация не проходит.

В качестве обходного пути мы настроили BSF на отправку Connection:keep-alive в ответе http 401, но, к сожалению, это не помогло. iPhone по-прежнему выбирает его случайным образом.

В нашей настройке IP-адреса BSF находятся в близких подсетях (BSF1 = 172.31.59.165, BSF2 = 172.31.59.181)

Очень странно, что в другой настройке (не совсем те же BSF, что и у нас, но http-запросы и ответы похожи) тот же iPhone всегда выбирает один и тот же BSF на шаге 2 и шаге 4 (BSF1=10.216.138.78, BSF2= 10.210.149.79). Если он выбирает BSF1 на шаге 2, продолжает с BSF1 на шаге 4. То же самое для BSF2.

Возможно ли, что iPhone проверяет подсети во время принятия решения? Любые другие предположения или предложения будут высоко оценены.

Спасибо, Уайт

Связанный контент