В чем разница между 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
.