Як працює localhost 127.0.0.1?


17

Я знайшов деякі статті, пов’язані з цим, але їх мені було недостатньо. Я хочу знати, як це localhostпрацює і чому це однаково на багатьох різних машинах?

Як localhostблокується доступ до веб-сайту, коли ми використовуємо його у hostфайлі для блокування веб-сайту?


2
Вибачте, але ви мене повністю загубили у другому рядку свого питання ... що ви маєте на увазі?
Windos

1
@Windos, Коли ви додаєте запис до файлу хостів на кшталт "127.0.0.1 www.blah.com", він перенаправляє цей сайт на localhost (все одно працював з IE8)
tzup

Відповіді:


23

Я не буду тут говорити про випадок Windows, оскільки він дещо інший, але скажімо так: У кожній * схожій на Unix операційній системі у вас є два мережеві пристрої:

  • Пристрій петлевого звороту
  • Пристрій Ethernet

Перший - суто "віртуальний". Це як плагін Ethernet, який ви не бачите. Другий стосується штекера Ethernet на вашому комп’ютері.

введіть тут опис зображення

Що робить інтерфейс зворотного зв'язку? Кожен трафік, який ви надсилаєте до циклу, повернеться.

Оскільки ваш пристрій Ethernet отримує IP-адресу (наприклад, 192.168.1.20), пристрій зворотного зв'язку також матиме IP-адресу, а саме 127.0.0.1. Щоб зробити це простіше, ви можете отримати доступ до нього localhostтакож.

Якщо ви подивитеся на типовий /etc/hostsфайл Unix , ви побачите, що 127.0.0.1 відображено на "localhost". Тому щоразу, коли ви введете "localhost", ваш комп'ютер буде знати дзвінок 127.0.0.1.

І це причина, через яку можна «блокувати» програми. Скажімо, ви не хочете, щоб ваш комп'ютер надсилав дані в Microsoft. Тоді ви можете просто переспрямувати кожен запит microsoft.comна 127.0.0.1 замість цього. Кожна спроба зв’язатися microsoft.comможе призвести до невдачі.

* кожна система, яка фактично має апаратний порт Ethernet


У 'Dows, підсистема DNS вирішить localhost до 127.0.0.1, а трафік до 127.0.0.1 навіть не переходить на інтерфейс, мережевий стек петляється прямо на спині (це дійсно точно так само, як Unix, але без віртуального інтерфейсу як прояв процесу).
jcrawfordor

Хоча ви можете встановити адаптер петлі Microsoft, але це не зовсім те саме.
slhck

На сьогоднішній день багато ОС підтримують 0.0.0.0, тому використовуйте це для блокування сайтів. Уникає циклу ...
Тамара Війсман

8

Адреси Інтернет-протоколу (IP) належать до однієї з чотирьох основних категорій.

  1. Адреси, що використовуються для спілкування з іншими комп'ютерами по всьому світу,
  2. Адреси, що використовуються для спілкування з комп'ютерами лише в межах конкретної компанії або мережі,
  3. Адреси, що використовуються для передачі інформації між комп'ютерами в мережі,
  4. Адреси, що використовуються для того, щоб комп'ютер міг спілкуватися сам із собою.

За домовленістю, 127.0.0.1 - одна з тих адрес, що належать до останньої з цих категорій.

Ми, як правило, не дуже добре запам’ятовуємо IP-номери, але у нас немає проблем із запам'ятовуванням таких імен, як superuser.com, www.google.com та інших подібних імен. Коли Інтернет був невеликим (дуже маленьким), люди ділилися файлами "хостів" з іншими людьми в Інтернеті, щоб їм не довелося запам'ятовувати номери. Цей файл хостів містив пари IP-адреси та одне чи більше імен хостів. Коли хтось намагався отримати доступ до хоста за своїм ім'ям, програмне забезпечення комп'ютера знало достатньо, щоб шукати його у файлі хостів. З того часу Інтернет настільки сильно зріс, що тепер ми використовуємо систему доменних імен (DNS) для того, щоб дозволити імена до IP-номерів на додаток до використання старого файлу хостів стилю. Більшість комп'ютерів налаштовані спочатку шукати імена у файлах хостів, а потім у DNS, якщо це не вдалося.

Тепер у вас є передумови, ось як це працює (як правило):

Коли ви додасте цей запис до свого хост-файлу, щоразу, коли ваш комп'ютер намагатиметься шукати веб-сайт www.foo.com, він спробує зайти на цей сайт за IP-адресою 127.0.0.1, оскільки ви сказали йому, що це Інтернет-адреса для www. foo.com. Пам’ятайте, що 127.0.0.1 дозволить комп'ютеру спілкуватися з собою, тому намагаючись перейти до 127.0.0.1 у вашому браузері, спробуйте зв’язатися з веб-сервером на вашому комп’ютері. Якби ви ввели 2.3.4.5 замість 127.0.0.1, він би намагався зв’язатися з комп'ютером за адресою 2.3.4.5 при відкритті www.foo.com.

127.0.0.1 localhost
127.0.0.1 www.foo.com
127.0.0.1 foo.com

Погано використовувати файл хостів для таких речей, як тільки ви додасте запис до файлу хостів, ви берете на себе відповідальність за оновлення цієї інформації. Якщо ви не помістите запис у свій хост-файл, ваш комп'ютер спробує використовувати DNS для пошуку IP-адреси, а потім скористайтеся цією IP-адресою для зв’язку з сервером.

Хороша річ у тому, що ви ніколи не хочете дозволити комусь спілкуватися на www.foo.com лише за ім'ям хоста на вашому комп’ютері, додавши запис до файлу хостів може (ключове слово - може) запобігти цьому. Якщо мета - не допустити потрапляння на певний сайт будь-якими способами (не лише за ім'ям хоста), існують інші кращі та надійніші способи запобігти тому, щоб це було як належне використання брандмауера.


На сьогоднішній день багато ОС підтримують 0.0.0.0, тому використовуйте це для блокування сайтів. Уникає циклу ...
Тамара Війсман

7

Localhost або 127.0.0.1 - це просто вбудоване ім'я для вашого локального комп'ютера.

Тобто 127.0.0.1 називається "петлею", оскільки це лише вказівник, який вказує на вашу машину. Це зарезервована IP-адреса, яка також може бути записана як localhost за визначенням.

Метою цього є можливість дозволити спілкуватися з комп'ютером, посилаючи сигнал назовні, а потім петлюючи назад, щоб сигнал також читався вашим тим же комп'ютером.

Скажімо, ви працюєте з сервером на вашій машині-- щоб отримати доступ до нього, вам потрібно надіслати запит на сервер (надіслати пакет до 127.0.0.1), і ваш сервер повинен прочитати його (ваша система повертає назад пакет на ваша локальна система на 127.0.0.1, яку потім читає ваше програмне забезпечення сервера).


5

Я відкрив презентацію в керівництві по TCP / IP, яка вразила мене дуже яскравим:

Зазвичай, коли програма TCP / IP хоче надсилати інформацію, ця інформація рухається вниз по протокольних рівнях до IP, де вона інкапсульована в дейтаграмі IP . Потім ця дейтаграма переходить до рівня каналу передачі даних фізичної мережі пристрою для передачі до наступного стрибка на шляху до пункту призначення IP.

Однак один функціональний діапазон адрес виділяється для функцій зворотного зв'язку. Це діапазон від 127.0.0.0 до 127.255.255.255. IP-дейтаграми, надіслані хостом на 127. x . х . x адреса зворотного зв'язку не передається на рівень каналу передачі даних для передачі. Натомість вони "повертаються" до вихідного пристрою на рівні IP. По суті, це являє собою "коротке замикання" звичайного стеку протоколів; дані надсилаються пристроєм третього рівня реалізації IP, а потім негайно отримуються ним.


Також у Rutgers є курс Мережі, який включає цю ілюстрацію нормальної взаємодії між хостами,

нормальне спілкування між господарями

і цей потік даних циклу:

                                                    циклічний потік даних


4

У другій частині вашого запитання, якщо ви розмістите ім'я хосту веб-сайту у файлі хостів з адресою 127.0.0.1, це означає, що коли ви вводите адресу у своєму браузері, а не використовуєте DNS для пошуку правильної адреси, він знаходить його у вашому хості файл спочатку вирішує його на localhost, а замість того, щоб перейти на адресу веб-сайту, просто починає спілкуватися з вашою машиною, через що веб-сайт не завантажується.


На сьогоднішній день багато ОС підтримують 0.0.0.0, тому використовуйте це для блокування сайтів. Уникає циклу ...
Тамара Війсман
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.