В Windows Server 2003, когда я запускаю netstat без флагов это занимает гораздо больше времени, чем netstat -n чтобы вернуть результаты. Я понимаю, что это потому, что он должен выполнять обратный поиск по IP-адресу, чтобы получить соответствующее имя хоста.
В результатах есть строки, которые netstat, кажется, перестают отображать и которые занимают больше времени, чем обычно. Насколько я могу судить, это все адреса, для которых на наших локальных DNS-серверах нет сопоставления IP-адреса и имени хоста. Ничего страшного. nslookup и nblookup также не могут найти имена хостов для рассматриваемых IP-адресов, соглашаясь с тем, что это будет частью медлительности, связанной с этими записями.
Однако в результатах netstat эти записи показывают правильное имя хоста. Как такое возможно? Как netstat может определить имя хоста для подключений без обратного DNS или обратного WINS (Что-то подобное существует) записи?
Я попытался очистить локальный кеш DNS и все равно получил те же результаты. Изменить: есть пересылать записи DNS для рассматриваемых имен хостов. Возможно ли, что базовое соединение каким-то образом способно «удержать» исходное имя, используемое для создания соединений?
Очевидно, nblookup не работает с обратным поиском IP -> имени хоста. Я начал собирать пакеты с помощью MS Network Monitor, чтобы посмотреть, как netstat разрешает имя, и узнал что-то новое. Очевидно, он вернется к поиску NetBIOS, если DNS не удастся.
Еще одна важная вещь, на которую следует обратить внимание, я столкнулся с проблемой при устранении этой проблемы, потому что моя локальная машина - это Windows 7. Другой метод, который использует Windows 7, называется LLMNR. Итак, если DNS не работает, он попытается выполнить LLMNR поиск. LLMNR недоступен в Windows Server 2003.
Порядок разрешения:
Вот фантастическое видео на YouTube о различных методах разрешения: https://www.youtube.com/watch?v=gzqjeds8gDg и есть отличная статья MSDN TechNet о разрешении имен, ищите "Link-Local Multicast Name Resolution: The Cable Guy".
Для обратного просмотра NetBIOS: nbtstat -A [IP-адрес]