Почему ns_t_ns быстрее, чем ns_t_a при запросе корневого сервера? - PullRequest
1 голос
/ 20 марта 2019

Я хочу знать задержку между клиентом и локальным DNS-сервером.Поэтому я отправляю запрос для корневого DNS-сервера (.) Следующим образом:

res_nquery(&res, ".", ns_c_in, ns_t_a, answer, sizeof(answer));

Но если я изменю ns_t_a на ns_t_ns, запрос станет быстрее.Почему это случилось?

Ответ при использовании ns_t_a: enter image description here

Ответ при использовании ns_t_ns: enter image description here

1 Ответ

2 голосов
/ 20 марта 2019

Рекурсивный распознаватель должен кэшировать набор записей ./IN/NS и обычно делает это при запуске распознавателя. Это называется priming и рассматривается в этом RFC:

Набор корневых серверов имен также никогда не истекает из кэша (в типичной реализации).

Запрос для ./IN/A не выполняется во время обычной работы, поэтому сначала необходимо заполнить кэш. Срок действия этого набора записей ресурсов также истекает.

Если оба набора записей ресурсов находятся в кэше, типичное время отклика распознавателя будет одинаковым.

...