Начална » как да » Каква е разликата между Locahost и локалния IP адрес?

    Каква е разликата между Locahost и локалния IP адрес?


    Ако правите много мрежови грижи, конфигурирате LAN-базирани приложения и сървърни инструменти, или просто сте любопитни, вероятно сте забелязали, че има разлика между локалния хост на локалния IP адрес. Прочетете, за да научите разликите.

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

    Въпроса

    Четецът на SuperUser Diogo иска да знае защо командата ping третира различно локалния хост и локалния IP адрес, когато на повърхността изглеждат едно и също нещо:

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

    Пининг „localhost“:

    Пробвате с „192.168.0.10“ (локален IP адрес):

    И двете ситуации не са еднакви?

    Искам да кажа, аз пингвам същия интерфейс, същата машина и същия адрес. Защо получавам толкова различни резултати?

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

    Отговорът

    Сътрудникът на SuperUser Том Уейшман предлага следното разбиране за фините различия между двете:

    Не проверявате същия интерфейс, без никакви физически интерфейси все още имате „местен хост“.

    Вашият Localhost се използва за препращане към вашия компютър от “вътрешния” IP, а не от “външни” IP адреси на вашия компютър. Така че, пинг пакетите не преминават през никакъв физически мрежов интерфейс; само чрез виртуален обратен интерфейс, който директно изпраща пакетите от пристанище към порт без никакви физически прескоци.

    Може би все още се чудите защо Localhost реши да :: 1, докато традиционно бихме очаквали, че ще го разреши до IPv4 адреса 127.0.0.1. Отбележи, че .Localhost традиционно е TLD (виж RFC 2606), който сочи обратно IP адреса на обратната връзка (за IPv4, виж RFC 3330, особено 127.0.0.0/8).

    Гледам нагоре Localhost използвайки Nslookup дава ни:

    nslookup localhost

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

    Така Windows предпочита да използва IPv6 обратния IP адрес :: 1 (виж RFC 2373), тъй като е изброено първо.

    Добре, откъде идва, да видим файла hosts.

    тип% WINDIR% System32 Драйвери и др

    … # Разрешаването на име на localhost се обработва в самия DNS. # 127.0.0.1 localhost # :: 1 localhost ... 

    Хм, трябва да разгледаме DNS настройките на Windows.

    Тази статия KB ни разказва за настройка, която засяга това, което Windows предпочита, подчертано в удебелен шрифт:

    1. В редактора на системния регистър намерете и след това щракнете върху следния подключ на системния регистър:
      HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ TCPIP6 \ Параметри 
    2. Щракнете двукратно върху DisabledComponents, за да промените записа на DisabledComponents.Забележка: Ако записът DisabledComponents не е достъпен, трябва да го създадете. За да направите това, изпълнете следните стъпки:
      1. В менюто Редактиране посочете Нов, след което щракнете върху DWORD (32-битова) стойност.
      2. Въведете DisabledComponents и натиснете ENTER.
      3. Щракнете двукратно върху DisabledComponents.
    3. Въведете някоя от следните стойности в полето Value data: (Данни за стойността), за да конфигурирате протокола IPv6 до желаното състояние, и след това щракнете върху OK:
      • Тип 0 за да активирате всички IPv6 компоненти. (Настройка по подразбиране на Windows)
      • Тип 0xffffffff за да забраните всички IPv6 компоненти, с изключение на IPv6 loopback интерфейса. Тази стойност също конфигурира Windows да предпочита да използва Internet Protocol version 4 (IPv4) над IPv6, като модифицира записи в таблицата с префиксната политика. За повече информация вж. Избор на адрес на източник и местоназначение.
      • Тип 0x20 да предпочитате IPv4 над IPv6, като модифицирате записите в таблицата с префиксната политика.
      • Тип 0x10 да деактивирате IPv6 на всички nontunnel интерфейси (както на LAN, така и на интерфейсите PPP).
      • Тип 0x01 да забраните IPv6 на всички тунелни интерфейси. Те включват вътрешен протокол за автоматично адресиране в тунела (ISATAP), 6 до 4 и Teredo.
      • Тип 0x11 да деактивирате всички IPv6 интерфейси с изключение на IPv6 loopback интерфейса.
    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 разби нашия пощенски сървър, така че трябва да се работи внимателно ...

    Няма нищо, което да харесваме повече от задълбочен и информативен отговор с допълнителни резервни документи. Ясно е, че localhost и локалният IP адрес са различни обекти, служат за различни цели и сега всички знаем защо.


    Имате ли какво да добавите към обяснението? Звукът е изключен в коментарите. Искате ли да прочетете повече отговори от други технологични потребители на Stack Exchange? Вижте пълната тема за дискусия тук.