Мне было интересно, как работает система разрешения имен хостов Windows.
Точнее, меня интересует использование или отсутствие локального кэширования в процессе.
В соответствии с Порядок разрешения имен хостов Microsoft TCP / IP , процесс выглядит следующим образом:
- Клиент проверяет, является ли запрашиваемое имя его собственным.
- Затем клиент ищет локальный файл Hosts , список IP-адресов и имен, хранящихся на локальном компьютере.
- Запрашиваются серверы системы доменных имен (DNS).
- Если имя все еще не разрешено, последовательность разрешения имен NetBIOS используется в качестве резервной копии. Этот порядок можно изменить, настроив тип узла NetBIOS клиента.
Мне было интересно, кэшируется ли этап (2) каким-либо образом.
Внезапный интерес возник в последние несколько дней, когда я установил защиту от вредоносных программ (SpyBot), которая использует файл HOSTS
. На самом деле, теперь это 14K записей и считается ...
Файл в настоящее время сортируется по имени хоста, но это, конечно, не обязательно.
lg (14K) означает 14 шагов по файлу для каждого запроса разрешения. Эти запросы, вероятно, поступают с частотой несколько раз в секунду и, как правило, к тем же нескольким сотням хостов (вершин).
Мой взгляд на то, как это должно работать, выглядит так:
- При запуске системы механизм DNS-разрешения Windows загружает файл HOSTS один раз.
- Он фиксирует одну итерацию для сортировки файла. Рабочая копия загружена в память.
Исходный файл HOSTS больше не будет читаться в течение всего срока действия резолюции.
- Все сетевые процессы (IE, Firefox, MSN ...) работают через этот процесс / механизм.
Никакой другой процесс не взаимодействует напрямую / не читает файл HOSTS.
- Получив запрос на разрешение имени, процесс проверяет свою резидентную память cache .
Если он находит правильный IP-адрес, то отвечает соответствующим образом.
- В противном случае (он не кэшируется) процесс разрешения продолжается для резидентного (отсортированного) файла HOSTS и выполняет быстрый двоичный поиск по нему. С этого момента процесс продолжается, как первоначально описано.
Результат разрешения кэшируется для дальнейшего использования.
Хотя я не уверен в их значении, я был бы очень признателен за ответ.
Я просто хочу посмотреть, правильны ли мои рассуждения, а если нет, то почему?
Я знаю, что в наш век постоянно включенных компьютеров кэш должен периодически (или постепенно) очищаться. Я игнорирую это сейчас.