Домашняя » как » В чем разница между Locahost и локальным IP-адресом?

    В чем разница между Locahost и локальным IP-адресом?


    Если вы много работаете по сети, настраиваете сетевые приложения и серверные инструменты или просто любопытны, вы, вероятно, заметили, что между локальным узлом и локальным IP-адресом есть разница. Читайте дальше, чтобы узнать различия.

    Сегодняшняя сессия вопросов и ответов пришла к нам благодаря SuperUser - подразделению Stack Exchange, группе веб-сайтов вопросов и ответов, управляемой сообществом..

    Вопрос

    Читатель SuperUser Diogo хочет узнать, почему команда ping по-разному обрабатывает локальный хост и локальный IP-адрес, когда на первый взгляд они выглядят одинаково:

    Использование cmd и ping в Windows дало мне следующие результаты:

    Пингует «localhost»:

    Пинг «192.168.0.10» (локальный IP-адрес):

    Разве обе ситуации не одинаковы?

    Я имею в виду, я пингую тот же интерфейс, ту же машину и тот же адрес. Почему я получаю такие разные результаты?

    Очевидно, есть какая-то разница, но что именно происходит, когда вы переключаетесь между двумя?

    Ответ

    Сотрудник SuperUser Том Вийсман (Tom Wijsman) предлагает следующее понимание тонких различий между ними:

    Вы не пингуете тот же интерфейс, без каких-либо физических интерфейсов у вас все еще есть «локальный хост».

    Ваш локальный используется для обозначения вашего компьютера с его «внутреннего» IP-адреса, а не с любого «внешнего» IP-адреса вашего компьютера. Таким образом, пакеты ping не проходят через какой-либо физический сетевой интерфейс; только через виртуальный возвратный интерфейс, который напрямую отправляет пакеты от порта к порту без каких-либо физических скачков.

    Вы можете все еще удивляться, почему локальный решает :: 1, в то время как традиционно мы ожидаем, что он будет преобразован в адрес IPv4 127.0.0.1. Обратите внимание, что .локальный традиционно является TLD (см. RFC 2606), который указывает на обратный IP-адрес (для IPv4 см. RFC 3330, особенно 127.0.0.0/8).

    Глядя вверх локальный с помощью Nslookup дает нам:

    nslookup localhost

    … Имя: localhost Адреса: :: 1 127.0.0.1 

    Таким образом, Windows предпочитает использовать IPv6 loopback IP-адрес :: 1 (см. RFC 2373), поскольку он указан первым.

    Итак, откуда это, давайте посмотрим на файл hosts.

    введите% WINDIR% \ System32 \ Drivers \ Etc \ Hosts

    … # Разрешение имени локального хоста обрабатывается в самом DNS. # 127.0.0.1 localhost # :: 1 localhost… 

    Хм, надо посмотреть настройки DNS винды.

    В этой статье базы знаний рассказывается о настройке, влияющей на предпочтения Windows, выделенной жирным шрифтом:

    1. В редакторе реестра найдите и щелкните следующий раздел реестра:
      HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip6 \ Parameters 
    2. Дважды щелкните DisabledComponents, чтобы изменить запись DisabledComponents. Примечание. Если запись DisabledComponents недоступна, ее необходимо создать. Для этого выполните следующие действия:
      1. В меню «Правка» выберите пункт «Новый» и нажмите «DWORD» (32-разрядная версия)..
      2. Введите DisabledComponents и нажмите клавишу ВВОД.
      3. Дважды щелкните DisabledComponents.
    3. Введите любое из следующих значений в поле «Значение: данные», чтобы настроить протокол IPv6 на требуемое состояние, и нажмите кнопку «ОК»:
      • Тип 0 включить все компоненты IPv6. (Настройка Windows по умолчанию)
      • Тип 0xffffffff отключить все компоненты IPv6, кроме петлевого интерфейса IPv6. Это значение также настраивает Windows на использование Интернет-протокола версии 4 (IPv4) вместо IPv6, изменяя записи в таблице политик префиксов. Для получения дополнительной информации см. Выбор адреса источника и получателя..
      • Тип 0x20 предпочесть IPv4 над IPv6, изменив записи в таблице политик префиксов.
      • Тип 0x10 отключить IPv6 на всех нетуннельных интерфейсах (как на LAN, так и на интерфейсах PPP).
      • Тип 0x01 отключить IPv6 на всех туннельных интерфейсах. К ним относятся протокол внутренней туннельной автоматической адресации (ISATAP), 6to4 и Teredo..
      • Тип 0x11 отключить все интерфейсы IPv6, кроме петлевого интерфейса IPv6.
    4. Перезагрузите компьютер, чтобы этот параметр вступил в силу.

    Что это за таблица префиксов политики?

    интерфейс netsh ipv6 показывает префиксную политику (или же prefixpolicy на более ранних версиях)

    Префикс метки префикса ---------- ----- -------------------------------- 50 0 :: 1/128 45 13 fc00 :: / 7 40 1 :: / 0 10 4 :: ffff: 0: 0/96 7 14 2002 :: / 16 5 5 2001 :: / 32 1 11 fec0 :: / 10 1 12 3ffe :: / 16 1 10 :: / 96 

    Эта таблица решает, какие префиксы имеют приоритет над другими префиксами при разрешении DNS.

    Ах, поэтому, используя этот KB, мы могли бы добавить сюда записи, которые обозначают, что IPv4 имеет более высокий приоритет, чем IPv6..

    Замечания: Нет причин переопределять это поведение, если только у вас не возникли проблемы с совместимостью. Изменение этого параметра на нашем Windows Server сломало наш почтовый сервер, поэтому с ним следует обращаться осторожно…

    Нам не нужно больше ничего, кроме подробного и информативного ответа со связанными вспомогательными документами. Ясно, что локальный и локальный IP-адреса являются различными объектами, служат разным целям, и теперь мы все знаем, почему.


    Есть что добавить к объяснению? Звук выключен в комментариях. Хотите узнать больше ответов от других технически подкованных пользователей Stack Exchange? Ознакомьтесь с полным обсуждением здесь.