Різниця між localhost та ip адресою


16

Якщо прив’язати сокет у Python до localhost, 8200 це можна отримати через http: // localhost: 8200 / . але не http: // xxxx: 8200 /

Якщо прив’язати сокет у Python до xxxx, 8200, ім'я машини, 8200, це доступно через http: // xxxx: 8200 / та http: // ім'я машини: 8200 / , але не http: // localhost: 8200 /

Я подумав, що localhost означає "цю машину", і що за допомогою неї "повернеться" до ip-адреси машини, але, здається, це інші ips.

Чи завжди 127.0.0.1 відрізняється ip-адресою від ip-адреси машин?

оновлення:

Я розумію, що фактичні числа різні, але що робить циклічний зворот?

Наприклад, у wikepedia сказано, що
"вказівка ​​веб-браузера на URL-адреси http://127.0.0.1/ або http: // localhost / отримає доступ до власного веб-сайту цього комп'ютера"

але цей веб-сайт також буде доступний на xxxx і, імовірно, буде створений з одним сокетом на xxxx. Так як обидві посилання працюють тоді?

висновок:

Я думаю, що нарешті розумію, що 127.0.0.1 і xxxx працюють так

--127.0.0.1 ==\
               >- Computer
--x.x.x.x   ==/

і ні

--127.0.0.1 ==\
--------------- x.x.x.x >- Computer

або

--x.x.x.x ==\
--------------- 127.0.0.1 >- Computer

Дякую всім за допомогу


1
Ви писали, що "є 127.0.0.1 завжди інша ip-адреса до ip-адреси машини". Цифри між крапками різні, тобто інша IP-адреса. Яке дивне запитання ви задаєте. Якщо під ip-адресою машини ви маєте на увазі щось, крім 127.0.0.1, то так, це була б інша IP-адреса. І якщо IP-адреса вашого телефону називається 192.168.0.1 (або якийсь інший локальний діапазон), вам не потрібно боятися цього говорити. Ви можете написати це замість xxxx. Ця адреса 192 не буде існувати в Інтернеті.
барлоп

Посилання для обох працюють через налаштування веб-сервера. Ви можете сказати серверу прив’язуватися до всіх адрес або слухати лише певні. Оскільки Loopback і власне IP-адреси є різними адресами, конфігурація визначає, який IP-код слід слухати. Оскільки localhost - це лише хост-запис для 127.0.0.1, він працюватиме лише тоді, коли веб-сервер прив’язаний до 127.0.0.1.
peelman

Відповіді:


17

Щоб відповісти на ваше запитання.

127.0.0.1 - це не просто інша ip-адреса до ip-адреси машини, це також інший інтерфейс. 127.0.0.1 не слід бачити в локальній мережі. Це спеціальна внутрішня IP-адреса для адаптера петлі.

xxxx буде вашою Ethernet-карткою.

до речі, "localhost" - це просто запис у файлі хостів, який вказує на 127.0.0.1

Якщо ви прив’яжете сокет до 127.0.0.1:8200, доступ до нього матимуть лише клієнти, які працюють локально, і лише за допомогою http://127.0.0.1:8200 або http: // localhost: 8200 (або записом у файл dns або hosts що вказує на 127.0.0.1).

Сокет, прив’язаний до xxxx: 8200, буде доступний лише через http: // xxxx: 8200 або запис у файл dns або hosts, який вказує на це.

Прив’язання сокета до 127.0.0.1 не робить його автоматично доступним і в інтерфейсі Ethernet.

Ось чому ви не можете підключитися до xxxx: 8200

Ви можете прив’язати порт 8200 до всіх доступних інтерфейсів (0.0.0.0), тоді він повинен працювати.


То що робить біт "петлі"? До чого це петля? Я думав, що це спосіб посилатися на ip-адресу машини, що б там не сталося ', тобто 127.0.0.1 => xxxx
Девід

1
Інтерфейс циклу - це віртуальний інтерфейс. Його часто використовують, щоб програми могли розмовляти між собою на одній машині. Це не спосіб посилання на IP-адресу машини. 127.0.0.1 IS IP-адреса віртуального адаптера петлі.
Метт H

1
Інша річ, що стосується адаптера петлі - це те, що він віртуально фактично не передає жодних пакетів на мережеву карту.
Метт Х

1
буквально витрачав 4 години, не розуміючи цієї концепції ... мабуть, деякі веб-сервери автоматично прив’язуються до xxxx і 127.0.0.1 для вас, що викликає плутанину. Чудове запитання та відповіді, хлопці. Thx =)
jrhee17

3

Наприклад, у wikepedia сказано, що "вказівка ​​веб-браузера на URL-адреси http://127.0.0.1/ або http: // localhost / отримає доступ до власного веб-сайту цього комп'ютера"

Трохи неточні. Це може зробити так. Настільки ж добре, що він може не відображати жодного веб-сайту, і навіть можливо відобразити інший внутрішній веб-сайт, ніж той, що ви отримуєте, коли використовуєте свою адресу xxxx.

127.0.0.1 вказує на вашу власну машину, але це не означає, що вона буде вести себе так само, як тільки дістанеться до вашої машини

Якщо ви хочете нетехнічну аналогію, ви можете розглянути їх різні двері у ваш будинок.

Обидва вказують на один будинок, але це не одне і те ж. Кожна дверцята може вас забрати в одну і ту ж кімнату, або вони можуть перевезти вас в іншу кімнату. Також можливо замкнути одну двері, а не іншу.

Коли ви налаштовуєте веб-сайт, ви вказуєте, до яких адрес потрібно прив’язатись, і досить часто відповіддю є всі адреси. (Це рівнозначно тому, що всі двері приймають вас в одну кімнату)

Ви також можете вказати веб-сайт для прив’язки лише до однієї адреси. (Це рівнозначно блокуванню всіх дверей, крім однієї.)

Якщо у вас є два (або більше) веб-сайтів, ви можете прив’язати їх до окремих адрес. (Це еквівалентно тому, що кожна двері заходить в окремі кімнати).

На прикладі роботи обох посилань на моєму комп'ютері Windows 7 встановлений IIS, коли я заходжу в диспетчер IIS і клацніть правою кнопкою миші на веб-сайті за замовчуванням, він дає мені параметр меню "Редагувати прив'язки". Вибір, який відображає список прив’язок. У мене є лише один, але для IP-адреси він має *, що означає, що IIS слухає всі мої IP-адреси.


Чудова аналогія! Дуже дякую! Я щойно зробив випробування. Я успішно прив’язаний 127.0.0.1:5000до веб-сайту та прив’язаний 192.168.1.104:5000до іншого сайту. Ключовим є те, що address:portозначає іншу кімнату (послугу) в будинку (комп’ютер).
Рік

1

Кожна IP-адреса в системі є незалежною і може бути пов'язана сокетами окремо, за винятком спеціальної адреси 0.0.0.0, яка вказує на ОС, щоб прив'язати сокет до всіх інтерфейсів.


1
Але 127.0.0.1 - це також особлива адреса, як найпоширеніший вибір інтерфейсу зворотного зв'язку. До чого звертається ця петля адреси?
Девід

Це не робить його "особливим", що просто робить його "адресою в інтерфейсі зворотного зв'язку" (якщо ви не кажете "кожна адреса по-своєму особлива", але не будемо туди йти). Це інтерфейс, який робить циклічне цикл, а не адреса.
Ігнасіо Васкес-Абрамс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.