Может кто-то направить меня к информации о точном поведении браузеров, когда браузер получает несколько записей A для данного имени хоста (скажем, ip1 и ip2), и одна из них недоступна.
Я заинтересован в точных деталях, таких как (но не ограничиваясь):
- Будет ли браузер получать 2 IP-адреса от операционной системы или только один?
- Какой ip будет пробовать браузер первым (случайный или всегда первый)? Теперь, допустим, браузер запустился с неисправного ip1
- Как долго браузер будет пробовать ip1?
- Если пользователь нажимает «стоп», пока он ждет ip1, а затем нажимает кнопку «Обновить»
- какой IP попробует браузер?
- Что произойдет, когда истечет время ожидания - он начнет пробовать ip2 или выдаст ошибку? (И если ошибка, какой ip будет пытаться браузер, когда пользователь нажимает обновить).
- Когда пользователь нажимает кнопку «Обновить», будет ли браузер пытаться выполнить новый поиск DNS?
Теперь давайте предположим, что браузер сначала попытался запустить ip2.
- Для следующего запроса страницы, будет ли браузер по-прежнему использовать ip2, или он может произвольно переключать ips?
- Как долго браузеры хранят IP-адреса в своем кэше?
- Когда браузеры отправляют новый запрос DNS и получают те же ips, ПРОДОЛЖАЕТ ли он использовать тот же известный IP-адрес, который работает, или процесс начинается с нуля, и он может попробовать любой из двух?
Конечно, все это может зависеть от браузера, а также может варьироваться в зависимости от версии и платформы, я был бы рад получить максимум деталей.
Цель этого - я пытаюсь понять, что именно пользователи будут испытывать, когда используется циклический перебор на основе DNS и один из хостов выйдет из строя.
Пожалуйста, я НЕ спрашиваю о том, насколько плоха балансировка нагрузки на DNS, и, пожалуйста, воздерживайтесь от ответов "не делайте этого", "это плохая идея", "вам нужно heartbeat / proxy / BGP / что угодно" и так далее.
источник
Ответы:
В конце концов, я должен был сделать "исследование" самостоятельно. Вот поведение Chromium (версия 12.0.742.112) (работает на Ubuntu 11.04):
Обычно это работает так: попробуйте 1-й ip, по истечении времени ожидания (через 189 секунд) попробуйте 2-й ip. Нет сообщений об ошибках, пока все ips не попробовал. Следующее соединение будет начинаться с первого ip снова (даже если оно просто не удалось секунду назад, а второй ip сработал - браузеру все равно)
Одна интересная вещь - попытка TCP-соединения не прерывается, когда пользователь нажимает кнопку отмены - то есть, когда я нажимаю кнопку отмены и через 60 секунд нажимаю кнопку «Повторить», страница будет отображаться через 130 секунд (189 с первой попытки). Но если я нажму кнопку «Отмена» и щелкните обновите через 190 секунд, процесс начнется с начала.
Относительно пунктов в оригинальном Вопросе:
Не проверено. В этом блоге Chrome кэширует DNS на срок до 1 минуты, когда мы смотрим на chrome: // net-internals / # dns:
Емкость: 100 Время жизни (мс) для записей об успехе: 60000 Время жизни (мс) для записей об ошибках: 0
Если первый IP работает, процесс будет таким же, и он всегда будет успешным с первой попытки.
источник
Вместо того, чтобы говорить людям, чего вы не хотите, почему бы не объяснить, чего вы пытаетесь достичь?
Если все, что вам нужно, это известные данные, тогда иди и исследуй себя, или прочитай документацию любого браузера (о сотнях), о котором ты говоришь.
Это может помочь вам узнать, что это не имеет ничего общего с DNS, хотя.
Если браузер получает запрос, он сначала просматривает различные кэши, чтобы узнать, присутствует ли URL, а если нет, то имя хоста.
Если нет, то он ударит системный распознаватель для разрешения имени хоста.
Если возвращаемый IP-адрес не отвечает, он наверняка кеширует это внутренне как отрицательный результат поиска , поэтому прямой запрос того же URL-адреса снова в надежде на попадание в другую запись A для него, вероятно, не будет иметь смысла, поскольку сохранили результат имени хоста вместе с отрицательным результатом IP.
Или, вы знаете, вы могли бы предоставить больше информации.
РЕДАКТИРОВАТЬ: я вижу, вы предоставили некоторую информацию между всеми требовательными и smartassery.
Отлично:
Вы также, кажется, не знаете, что записи DNS кэшируются везде, особенно на клиентах. Срок действия этих записей истекает в зависимости от намерений владельца домена или от того, какие кэши между вами и ним настроены. Обычно от одного часа до одного дня, поэтому не ожидайте, что распознаватель выполнит другой DNS-запрос, если вы нажмете «Обновить», как сумасшедший.
источник