Локалхост — петлевой сетевой адрес¶
Локалхост (англ. localhost, от local host — «локальный хост») — обозначение компьютера или устройства, на котором выполняется текущая программа, обращающаяся к сети. В контексте TCP/IP-сетей localhost — это петлевой интерфейс (loopback), виртуальный сетевой адаптер, который позволяет процессам на одном компьютере обмениваться данными по сетевым протоколам без обращения к физической сети. Стандартное имя хоста для петлевого интерфейса — localhost, а стандартный IP-адрес — 127.0.0.1 в IPv4 и ::1 в IPv6.
¶Назначение и принцип работы
Петлевой интерфейс (loopback) — это программная абстракция, эмулирующая сетевой адаптер. Данные, отправленные на адрес 127.0.0.1, не покидают компьютер: операционная система перенаправляет их обратно на тот же компьютер, минуя физическую сеть, сетевые карты и маршрутизаторы. Это позволяет программам использовать сетевые протоколы (TCP, UDP, HTTP и другие) для внутренней коммуникации.
Основные сценарии использования:
- Разработка и отладка веб-приложений. Веб-сервер (Apache, Nginx, Node.js, Django и другие) запускается на локальном компьютере и обслуживает запросы по адресу
http://localhost:8080` и аналогичным. Разработчик тестирует сайт до его публикации в интернете. - Межпроцессное взаимодействие. Программы обмениваются данными через TCP- или UDP-сокеты, используя петлевой интерфейс как канал связи.
- Локальные базы данных. СУБД (PostgreSQL, MySQL, Redis) по умолчанию слушают подключения на localhost, что исключает доступ извне без специальной настройки.
- Тестирование сетевых сервисов. Проверка работы сетевых протоколов и приложений без реального подключения к сети.
¶Адрес 127.0.0.1
В IPv4 диапазон 127.0.0.0/8 (адреса от 127.0.0.1 до 127.255.255.255) зарезервирован IANA для петлевых адресов. Любой адрес из этого диапазона указывает на локальную машину. Наиболее распространён — 127.0.0.1, хотя формально все 16 миллионов адресов блока 127.x.x.x ведут себя одинаково.
В IPv6 петлевому интерфейсу соответствует单一 адрес ::1 (0:0:0:0:0:0:0:1).
¶Имя хоста localhost
Имя localhost традиционно разрешается в IP-адрес 127.0.0.1 через файл hosts — текстовый файл операционной системы, содержащий статические соответствия «имя — адрес»:
- в Windows:
C:\Windows\System32\drivers\etc\hosts - в Linux и macOS:
/etc/hosts
Стандартная строка в этом файле выглядит как 127.0.0.1 localhost. Ранее разрешением имени занималась служба DNS, но в 2006 году IANA приняла решение закрепить localhost как имя верхнего уровня в корневой зоне DNS (TLD), чтобы гарантировать его неразрешение во внешние адреса. Это исключает конфликт, если домен localhost.com или подобный реально существует.
¶Петлевой интерфейс в операционных системах
В Linux петлевой интерфейс обозначается как lo и создаётся при загрузке. Проверить его состояние можно командой ip addr show lo. В Windows интерфейс называется «Адаптер локального кольца» (Loopback Pseudo-Interface). В macOS — lo0.
На уровне ядра операционной системы все пакеты, адресованные на 127.0.0.1, обрабатываются без передачи в сетевую подсистему: они сразу возвращаются в стек TCP/IP. Это обеспечивает высокую скорость — пропускная способность петлевого интерфейса ограничена только производительностью процессора и памяти.
¶Безопасность
Обращение к сервису через localhost не защищено от других пользователей и процессов на том же компьютере. Если веб-сервер слушает только 127.0.0.1, он недоступен из внешней сети, но доступен любому локальному процессу. Многие вредоносные программы используют localhost для обхода брандмауэров: соединение с собственным адресом обычно не фильтруется.
Для доступа к локальным сервисам извне применяется туннелирование (SSH-туннели, инструменты вроде ngrok) или проброс портов.
¶localhost и 127.0.0.1 — различия
Формально это не одно и то же. 127.0.0.1 — конкретный IP-адрес, а localhost — имя хоста, которое через файл hosts или DNS разрешается в этот адрес. В большинстве случаев разница незаметна, но при настройке веб-серверов и прокси она может иметь значение: например, сервер может быть привязан к конкретному адресу и не отвечать на обращения по имени, и наоборот.
¶Примечания
В некоторых мобильных системах (Android) обращение к localhost с эмулятора означает сам эмулятор, а для доступа к хост-компьютеру используется специальный адрес 10.0.2.2.
Источники:
- RFC 3330 — Special-Use IPv4 Addresses
- RFC 6890 — Special-Purpose IP Address Registries
- IANA Root Zone Database — .localhost entry
- «TCP/IP Illustrated, Volume 1» — W. Richard Stevens
- Документация Microsoft: Loopback Pseudo-Interface
