15

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

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

5 ответов5

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

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

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 уровня три устройства, а затем немедленно принимаются им.


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

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

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

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

4

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .