вы не пинги тот же интерфейс, без каких-либо физических интерфейсов у вас еще есть "локальный хост".
код localhost
используется для ссылки на ваш компьютер с" внутреннего " IP, а не с "внешних" IP-адресов вашего компьютера. Таким образом, пинг-пакеты не проходят через какой-либо физический сетевой интерфейс; только через виртуальный интерфейс обратной петли, который напрямую отправляет пакеты от порта к порту без каких-либо физических прыжков.
вы все еще может интересно, почему localhost
решает ::1
, в то время как традиционно мы ожидали бы, что это разрешить IPv4-адрес 127.0.0.1
. Обратите внимание, что .localhost
традиционно является дву (см. RFC 2606), который указывает обратно в петлю IP-адрес (для IPv4, см. RFC 3330, особенно 127.0.0.0/8).
Ищу localhost
используя nslookup
дает нам:
nslookup localhost
...
Name: localhost
Addresses: ::1
127.0.0.1
таким образом Windows предпочитает Использовать IPv6 обратный IP-адрес ::1
(см. RFC 2373), как указано в начале.
Итак, откуда это взялось, давайте посмотрим на файл hosts.
type %WINDIR%\System32\Drivers\Etc\Hosts
...
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
...
Хм, Мы должны посмотреть настройки DNS Windows.
этой статье говорит нам о настройке, которая влияет на то, что предпочитает Windows, подчеркнуто жирным шрифтом:
В Реестре Редактор, найдите и выделите следующий подраздел реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters
дважды щелкните DisabledComponents, чтобы изменить запись DisabledComponents.
Примечание: Если запись disabledcomponents недоступна, необходимо создать его. Для этого выполните следующие действия:
в меню Правка выберите пункт Создатьи выберите значение DWORD (32-разрядное).
введите DisabledComponents и нажмите ВХОДИТЬ.
дважды щелкните DisabledComponents.
введите любое из следующих значений в поле Значение data:, чтобы настроить протокол IPv6 в нужное состояние, а затем нажмите кнопку ОК:
- тип
0
включить все компоненты IPv6. (Windows по умолчанию)
- тип
0xffffffff
отключить все компоненты IPv6, кроме интерфейса обратной связи IPv6. Это значение также настраивает Windows на предпочтительное использование протокола IPv4 по сравнению с IPv6 путем изменения записей в таблице политики префиксов. Дополнительные сведения см. В разделе Выбор адреса источника и назначения.
- тип
0x20
предпочитать протокол IPv4 протоколу IPv6 путем изменения записей в таблице префиксов политики.
- тип
0x10
отключить IPv6 на всех нетуннельных интерфейсах (как на интерфейсах LAN, так и на интерфейсах протокола PPP).
- тип
0x01
отключить IPv6 на всех туннельных интерфейсах. К ним относятся Внутрисайтовый протокол автоматической туннельной адресации (ISATAP), 6to4 и Teredo.
- тип
0x11
отключить все интерфейсы IPv6, кроме интерфейса обратной связи IPv6.
перезагрузите компьютер, чтобы изменения вступили в силу.
что это за таблица политики префиксов?
netsh interface ipv6 show prefixpolicies
(или prefixpolicy
на более ранние версии)
Precedence Label Prefix
---------- ----- --------------------------------
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.
Ах, используя этот КБ, мы можем добавить сюда записи, которые обозначают, что IPv4 имеет более высокий приоритет, чем IPv6.
Примечание: там нет причин, чтобы переопределить это поведение, если вы не испытываете совместимые проблемы. Изменение этого параметра на нашем сервере Windows сломал наш почтовый сервер, поэтому он должен быть обработан осторожно...