Почему существует разница между ping " localhost "и ping"local IP address"?

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

  • пинг "localhost":

Enter image description here

  • Ping "192.168.0.10" (локальный IP-адрес):

Enter image description here

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

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

изменить: Вот мой ipconfig /all экран:

Enter image description here

21
задан Peter Mortensen
06.04.2023 8:50 Количество просмотров материала 3295
Распечатать страницу

6 ответов

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

код 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, подчеркнуто жирным шрифтом:

  1. В Реестре Редактор, найдите и выделите следующий подраздел реестра:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters
    
  2. дважды щелкните DisabledComponents, чтобы изменить запись DisabledComponents.

    Примечание: Если запись disabledcomponents недоступна, необходимо создать его. Для этого выполните следующие действия:

    1. в меню Правка выберите пункт Создатьи выберите значение DWORD (32-разрядное).

    2. введите DisabledComponents и нажмите ВХОДИТЬ.

    3. дважды щелкните DisabledComponents.

  3. введите любое из следующих значений в поле Значение 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.
  4. перезагрузите компьютер, чтобы изменения вступили в силу.

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

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 сломал наш почтовый сервер, поэтому он должен быть обработан осторожно...

45
отвечен Tom Wijsman 2023-04-07 16:38

на интерфейс обратной связи существует независимо от ваших интерфейсов Ethernet.

даже без осложнений IPv6 у вас будет два разных адреса.

Loopback IPv4 адрес : 127.0.0.1

IPv4-адрес интерфейса Ethernet: 192.168.0.10

интерфейс обратной связи вполне может быть на другом программном уровне, более удаленном от реального оборудования. Я сомневаюсь, что это зависит от особый драйвер интерфейса, например Ethernet.

20
отвечен RedGrittyBrick 2023-04-07 18:55

Localhost и ваш IP-адрес не одно и то же.

localhost - это специальный программный IP-адрес, связанный с вашей системой. Localhost или 127.0.0.1 это петля задней адресу. Он всегда указывает на вашу систему и доступен только с Вашего компьютера. Эта маршрутизация происходит на уровне ОС и определенно никогда не покидает NIC... Таким образом, нет никаких шансов для него попасть в сеть....

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

эффект должен быть одинаковым, но могут быть различия.

например, отсоедините сетевой кабель. Пропингуйте свой статический IP-адрес. Вы можете получить не маршрут к хосту, или другие ошибки. Сейчас пинг localhost или 127.0.0.1, и он будет работать.

11
отвечен Benjamin Schollnick 2023-04-07 21:12

Я понимаю из скриншотов это вопрос не о Linux, но это, возможно, делает полезный "случай".

на этой ОС, если у вас пинг локальный адаптер адреса, переведенные на loopback (особый случай взлома). Это означает, что пакеты фактически идут к устройству обратной связи (который имеет все последствия, которые вы могли бы подумать: например с точки зрения межсетевого экрана, те пакеты входят на интерфейс обратной связи и будут соответствовать правилам для этот интерфейс.)

устройство, которому назначен IP-адрес, никогда не увидит пакетов. (Это хорошо, потому что он не будет делать правильные вещи с этими пакетами: он хотел бы отправить присоски.)

однако, если интерфейс, который держит, что IP должно случиться, чтобы пойти вниз, вы потеряли эту связь. Сопоставление с замыканием на себя перестанет работать.

другими словами, вполне работоспособная конструкция в отношении тех местных адресов, псевдонимов для закольцовки устройство.

код ссылки:

http://lxr.linux.no/#linux+В3.3.2/сеть/протокол IPv4/маршрут.в C#L2623

взгляните на функцию ip_route_output_slow. Это зовет fib_lookup, а если эта функция возвращает код RTN_LOCAL,dev_out переписывается на loopback:

http://lxr.linux.no/#linux+В3.3.2/сеть/протокол IPv4/маршрут.в C#L2769

6
отвечен Kaz 2023-04-07 23:29

похоже, что псевдоним "Localhost" разрешает петлю IPv6, и когда вы явно используете адрес IPv4, очевидно, что это не так.

5
отвечен EBGreen 2023-04-08 01:46

@ebwhite прямо о том, что.

Итак, почему может быть, что у вас есть Teredo set up (я не могу сказать, от вашего скриншота, трубопроводов его в текстовый файл и вставки весь вывод лучше) - поведение localhost быть IPv6 согласуется с системами на моем IPv4 только сеть с установленным teredo, но системы без него ведут себя так, как вы ожидаете 127.0.0.1 когда вы ping localhost. Я тестировал это с Windows XP и нужно увидеть, что делают мои системы Windows 7, и обновить вопрос.

Как правило, системы по умолчанию IPv6 если IPv6 доступен так, ваша система работает, как она должна .

1
отвечен Journeyman Geek 2023-04-08 04:03

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх