В чем разница между nslookup и GetHostEntry?

nslookup google.co.kr Результаты IP меняются всякий раз, когда я пробовал эту команду

Но в C#, используя метод GetHostEntry() в библиотеке System.Net.DnsЯ всегда получал одинаковые результаты.

Я хочу знать, почему это явление произошло, и могу ли я получить такой же результат, как nslookup с помощью GetHostEntry,

2 ответа

Решение

Когда вы звоните GetHostEntry() вы получите все данные в локальном кеше DNS. Если имя хоста не было получено в последнее время, оно запросит информацию у DNS-серверов. NSLOOKUP Команда будет каждый раз запрашивать DNS-серверы, игнорируя все, что может быть в локальном кэше. Это может привести к тому, что одни и те же данные возвращаются снова и снова, в зависимости от кэширования на вашем DNS-сервере.

Для получения самых простых результатов DNS вы будете получать одни и те же данные каждый раз. Для кластерных служб, размещенных на группах серверов, таких как Google, результаты будут выбираться DNS-серверами Google в зависимости от загрузки и т. Д. В таких случаях вы можете получить разные результаты от последовательных вызовов NSLOOKUP, но GetHostEntry() будет возвращать те же результаты, пока не истечет срок действия записи из локального кэша DNS.

Кеширование DNS помогает снизить нагрузку на DNS-серверы, а также уменьшить сетевой трафик. Если вам не нужен другой набор результатов каждый раз, GetHostEntry() будет быстрее и эффективнее.

Когда ты меня использовал GetHostEntry()Я заметил, что эта функция не поддерживает записи DNS из типа и выдает исключение. nslookup поддерживает записи DNS из типа CNAME.

Другие вопросы по тегам