Как работает localhost 127.0.0.1?

17

Я нашел несколько статей, связанных с этим, но их было недостаточно для меня. Я хочу знать, как localhostработает и почему он одинаков на разных машинах?

Как localhostблокирует доступ к сайту, когда мы используем его в hostфайле для блокировки сайта?

avirk
источник
2
Извините, но вы полностью потеряли меня во второй строке вашего вопроса ... что вы имеете в виду?
Windos
1
@Windos, когда вы добавляете в файл hosts запись типа «127.0.0.1 www.blah.com», он перенаправляет этот сайт на localhost (в любом случае используется для работы с IE8)
tzup
Смотрите также Что такое loopback-адрес (т. Е. 127.0.0.1)?
G-Man говорит: «Восстановите Монику»

Ответы:

23

Я не буду говорить о случае Windows здесь, потому что он немного отличается, но скажем так: в каждой * Unix-подобной операционной системе у вас есть два сетевых устройства:

  • Петлевое устройство
  • Устройство Ethernet

Первый из них чисто «виртуальный». Это как разъем Ethernet, который вы не видите. Второй связан с разъемом Ethernet на вашем компьютере.

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

Что делает петлевой интерфейс? Каждый трафик, который вы отправляете в loopback, будет возвращаться.

Подобно тому, как ваше устройство Ethernet получает IP-адрес (например, 192.168.1.20), у петлевого устройства также будет IP-адрес, а именно 127.0.0.1. Чтобы сделать это проще, вы также можете получить к нему доступ localhost.

Если вы посмотрите на типичный Unix /etc/hosts файл , вы увидите, что 127.0.0.1 сопоставлен с «localhost». Таким образом, всякий раз, когда вы набираете «localhost», ваш компьютер будет знать, чтобы позвонить 127.0.0.1.

И это причина, по которой вы можете «блокировать» приложения. Допустим, вы не хотите, чтобы ваш компьютер отправлял данные в Microsoft. Тогда вы можете просто перенаправить каждый запрос microsoft.comна 127.0.0.1. Каждая попытка связаться microsoft.comприведет к провалу.

* каждая система на самом деле имеет аппаратный порт Ethernet

slhck
источник
В «dows» подсистема DNS преобразует localhost в 127.0.0.1, а трафик до 127.0.0.1 никогда даже не переходит на интерфейс, сетевой стек зацикливается на обратной стороне (это действительно точно так же, как в Unix, но без виртуального интерфейса как проявление процесса).
Кроуфордор
Хотя вы можете установить Microsoft Loopback Adapter, но это не совсем то же самое.
Slhck
В настоящее время многие ОС поддерживают 0.0.0.0, поэтому используйте его для блокировки сайтов. Избегает петли ...
Тамара Вийсман
8

IP-адреса попадают в одну из четырех основных категорий.

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

По соглашению 127.0.0.1 является одним из тех адресов, которые относятся к последней из этих категорий.

Как люди, мы не очень хорошо запоминаем номера IP, но у нас нет проблем с запоминанием таких имен, как superuser.com, www.google.com и других похожих имен. Когда Интернет был маленьким (очень маленьким), люди делились файлом «hosts» с другими людьми в Интернете, чтобы им не приходилось запоминать цифры. Этот файл hosts содержит пары IP-адресов и одно или несколько имен хостов. Когда кто-то пытался получить доступ к хосту по его имени, компьютерная программа знала достаточно, чтобы найти его в файле hosts. С тех пор Интернет вырос настолько, что теперь мы используем систему доменных имен (DNS) для преобразования имен в IP-номера в дополнение к файлу хостов старого стиля. Большинство компьютеров настроены на поиск имен в файле hosts, а затем в DNS, если это не удается.

Теперь, когда у вас есть фон, вот как это работает (обычно):

Когда вы добавляете эту запись в ваш файл hosts, каждый раз, когда ваш компьютер пытается найти 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

Плохая вещь в использовании файла hosts для таких вещей - когда вы добавляете запись в файл hosts, вы берете на себя ответственность за актуальность этой информации. Если вы не поместите запись в файл hosts, ваш компьютер попытается использовать DNS для поиска IP-адреса, а затем использовать этот IP-адрес для связи с сервером.

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

КБ CMDBA
источник
В настоящее время многие ОС поддерживают 0.0.0.0, поэтому используйте его для блокировки сайтов. Избегает петли ...
Тамара Вийсман
7

Localhost или 127.0.0.1 - это просто встроенное имя для вашего локального компьютера.

Таким образом, 127.0.0.1 называется «обратной связью», потому что это просто указатель, который указывает на вашу машину. Это зарезервированный IP-адрес, который также может быть записан как localhost по определению.

Цель этого состоит в том, чтобы позволить человеку общаться с компьютером, посылая сигнал наружу, а затем зацикливая его так, чтобы сигнал также считывался вашим компьютером.

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

Akseli
источник
5

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

Обычно, когда приложение TCP / IP хочет отправить информацию, эта информация перемещается по уровням протокола к IP, где она инкапсулируется в дейтаграмму IP . Затем эта дейтаграмма передается на канальный уровень физической сети устройства для передачи на следующий переход по пути к пункту назначения IP.

Тем не менее, один специальный диапазон адресов отведен для петлевой функциональности. Это диапазон от 127.0.0.0 до 127.255.255.255. IP датаграммы, отправленные хостом на 127. x . х . Адрес обратной связи x не передается на канальный уровень для передачи. Вместо этого они «возвращаются» к исходному устройству на уровне IP. По сути, это представляет собой «короткое замыкание» нормального стека протоколов; данные отправляются реализацией IP уровня три устройства, а затем немедленно принимаются им.


Кроме того, у Рутгерса есть сетевой курс, который включает в себя эту иллюстрацию нормального взаимодействия между хостами,

нормальная связь между хостами

и это один из петли потока данных:

                                                    обратный поток данных

Скотт
источник
4

Что касается второй части вашего вопроса, если вы поместите имя хоста веб-сайта в файл hosts с адресом 127.0.0.1, это означает, что когда вы вводите адрес в браузере вместо использования DNS, чтобы найти правильный адрес, он находит его. в вашем файле hosts сначала разрешается его в localhost, и вместо того, чтобы переходить по адресу сайта, он просто начинает говорить с вашей машиной, что приводит к сбою загрузки сайта.

седло
источник
В настоящее время многие ОС поддерживают 0.0.0.0, поэтому используйте его для блокировки сайтов. Избегает петли ...
Тамара Вийсман