В компьютерных сетях localhost — это имя хоста , которое относится к текущему компьютеру, используемому для доступа к нему. Имя localhost зарезервировано для целей loopback . [1] Оно используется для доступа к сетевым службам , работающим на хосте, через сетевой интерфейс loopback. Использование интерфейса loopback обходит любое оборудование локального сетевого интерфейса .
Механизм локальной обратной связи может использоваться для запуска сетевой службы на хосте без необходимости физического сетевого интерфейса или без предоставления доступа к службе из сетей, к которым может быть подключен компьютер. Например, локально установленный веб-сайт может быть доступен из веб-браузера по URL-адресу http://localhost для отображения его домашней страницы.
Стандарты сетей IPv4 резервируют весь адресный блок 127.0.0.0 / 8 (более 16 миллионов адресов) для целей обратной связи. [2] Это означает, что любой пакет, отправленный на любой из этих адресов, возвращается обратно. Адрес 127.0.0.1 является стандартным адресом для трафика обратной связи IPv4; остальные поддерживаются не всеми операционными системами. Однако их можно использовать для настройки нескольких серверных приложений на хосте, все из которых прослушивают один и тот же номер порта. В архитектуре адресации IPv6 [3] для обратной связи назначен только один адрес: ::1 . Стандарт запрещает назначение этого адреса любому физическому интерфейсу, а также его использование в качестве адреса источника или назначения в любом пакете, отправленном на удаленные хосты.
Имя localhost обычно разрешается в петлевой адрес IPv4 127.0.0.1 и в петлевой адрес IPv6 ::1 .
Это разрешение обычно настраивается следующими строками в файле hosts операционной системы :
127.0.0.1 локальный хост::1 локальный хост
Имя также может быть разрешено серверами системы доменных имен (DNS), но существуют особые соображения [1], регулирующие использование этого имени:
В дополнение к сопоставлению localhost с адресами обратной связи ( 127.0.0.1 и ::1 ), localhost также может быть сопоставлен с другими адресами IPv4 (обратной связи), а также возможно назначить другие или дополнительные имена любому адресу обратной связи. Сопоставление localhost с адресами, отличными от указанного диапазона адресов обратной связи в файле hosts или в DNS, не гарантирует желаемого эффекта, поскольку приложения могут сопоставлять имя внутренне.
В системе доменных имен имя .localhost зарезервировано как доменное имя верхнего уровня , изначально отведенное для того, чтобы избежать путаницы с именем хоста localhost . [4] Регистраторам доменных имен запрещено делегировать доменные имена в домене верхнего уровня .localhost . [1]
В 1981 году блок 127.0.0.0 / 8 получил статус «зарезервированного», [5] чтобы не назначать его в качестве IP-сети общего назначения класса A. Этот блок был официально назначен для целей обратной связи в 1986 году. [6] Его назначение в качестве блока адресов IPv4 специального назначения было подтверждено в 1994, [7] , 2002 [8] , 2010 [9] , и последний раз в 2013 году. [2]
С самого начала, в 1995 году, был определен единый адрес обратной связи IPv6 ::1 . [10] Его цель и определение оставались неизменными в 1998, [11] , 2003, [12] , и вплоть до текущего определения в 2006 году. [3]
Обработка любого пакета, отправленного на адрес обратной связи, реализуется на канальном уровне стека TCP/IP . Такие пакеты никогда не передаются ни одному сетевому контроллеру интерфейса (NIC) или аппаратному драйверу устройства и не должны появляться вне вычислительной системы или маршрутизироваться каким-либо маршрутизатором. Это позволяет проводить тестирование программного обеспечения и локальных служб даже при отсутствии каких-либо аппаратных сетевых интерфейсов.
Пакеты Looped Back отличаются от любых других пакетов, проходящих через стек TCP/IP, только специальным IP-адресом, которому они были адресованы. Таким образом, службы, которые в конечном итоге их получают, отвечают в соответствии с указанным пунктом назначения. Например, служба HTTP может направлять пакеты, адресованные 127.0.0.99:80 и 127.0.0.100:80, на разные веб-серверы или на один сервер, который возвращает разные веб-страницы. Чтобы упростить такое тестирование, файл hosts может быть настроен для предоставления соответствующих имен для каждого адреса.
Пакеты, полученные на не-loopback-интерфейсе с петлевым исходным или конечным адресом, должны быть отброшены. Такие пакеты иногда называют марсианскими пакетами . [13] Как и любые другие поддельные пакеты, они могут быть вредоносными, и любые проблемы, которые они могут вызвать, можно избежать, применив фильтрацию bogon .
В разных версиях базы данных MySQL различается использование имени хоста localhost и использование адресов 127.0.0.1 и ::1 . [14] При использовании localhost в качестве пункта назначения в интерфейсе клиентского коннектора приложения программный интерфейс приложения MySQL подключается к базе данных с помощью сокета домена Unix , в то время как TCP-соединение через интерфейс обратной связи требует прямого использования явного адреса.
Одним из заметных исключений из использования адресов 127.0.0.0 / 8 является их использование в трассировке ошибок многопротокольной коммутации по меткам (MPLS), где их свойство немаршрутизируемости обеспечивает удобный способ избежать доставки неисправных пакетов конечным пользователям.