← Назад к вопросам

Где на уровне операционной системы прописано соответствие localhost и 127.0.0.1?

2.0 Middle🔥 111 комментариев
#JavaScript Core

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI2 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Где прописано соответствие localhost и 127.0.0.1 на уровне ОС

Это отличный вопрос, который показывает понимание взаимодействия между приложением и системой. Давайте разберемся в деталях.

Файл hosts

Соответствие между localhost и 127.0.0.1 прописано в файле hosts на операционной системе. Это один из первых мест, где система ищет соответствие имена хоста и IP адреса.

На Linux и macOS

/etc/hosts

На Windows

C:\Windows\System32\drivers\etc\hosts

Содержимое файла hosts

Файл выглядит примерно так:

127.0.0.1       localhost
::1             localhost
127.0.0.1       myapp.local

Первая строка - это и есть соответствие localhost на IPv4. Вторая строка - это соответствие localhost на IPv6 (новый стандарт).

Как система разрешает имена хостов

Когда ты пишешь в браузере http://localhost:3000, система следует этому порядку:

1. Проверяет файл /etc/hosts
   - Ищет строку с localhost
   - Находит 127.0.0.1

2. Если не нашла - обращается к DNS
   - Отправляет запрос на DNS-сервер
   - Получает IP адрес

3. Если DNS не ответил - ошибка

Демонстрация работы

# На Linux/Mac - посмотреть содержимое
cat /etc/hosts

# Вывод:
# 127.0.0.1     localhost
# ::1           localhost
# 255.255.255.255 broadcasthost

# На Windows - посмотреть содержимое
type C:\Windows\System32\drivers\etc\hosts

Практический пример

Когда ты разрабатываешь приложение локально:

// frontend/localhost:3000
fetch('http://localhost:3000/api/data')
  .then(response => response.json())
  .then(data => console.log(data));

Вот что происходит:

  1. Браузер видит localhost
  2. Проверяет /etc/hosts
  3. Находит: 127.0.0.1 localhost
  4. Преобразует в IP: 127.0.0.1:3000
  5. Подключается к локальному серверу на порту 3000

Можно ли добавить свой localhost

Да, можно! Добавь свои строки в файл hosts:

# Linux/Mac - редактировать нужно с правами администратора
sudo nano /etc/hosts

# Добавить строку:
127.0.0.1       myapp.local

После этого в браузере сможешь открыть:

http://myapp.local:3000

И это будет работать локально, не обращаясь к реальному DNS.

На Windows

# Открыть с правами администратора
C:\Windows\System32\drivers\etc\hosts

# Добавить:
127.0.0.1       myapp.local

127.0.0.1 vs localhost

Специальный IP адрес 127.0.0.1 (loopback адрес) имеет особое значение:

127.0.0.1 - это твой собственный компьютер
         - весь трафик остается локально
         - никогда не выходит в сеть
         - максимально быстро

IPv6 альтернатива

Для IPv6 используется ::1:

::1 localhost

Это аналог 127.0.0.1 для IPv6.

Почему это важно для frontend разработчика

// Во время разработки
const API_URL = 'http://localhost:3000';

// В production
const API_URL = 'https://api.myapp.com';

// В staging
const API_URL = 'https://staging-api.myapp.com';

Файл hosts позволяет:

  • Тестировать разные домены локально
  • Быстро переключаться между конфигурациями
  • Не менять код при переходе с localhost на реальный домен

Проверка разрешения имени

# На Linux/Mac
nslookup localhost
# или
dighost localhost

# На Windows
nslookup localhost

# Вывод покажет, что localhost разрешается в 127.0.0.1

Порядок разрешения имен на современных системах

  1. localhost cache - в памяти браузера и ОС
  2. Файл /etc/hosts - локальный файл
  3. mDNS - локальная сеть (только для .local домены)
  4. DNS resolver - интернет-запрос
  5. Root nameserver - если не нашли раньше

Практический совет

На своей машине можешь добавить это в hosts для удобства:

127.0.0.1       localhost
127.0.0.1       myapp.local
127.0.0.1       api.local
127.0.0.1       admin.local

Тогда сможешь разрабатывать разные части приложения на разных портах и "доменах":

http://myapp.local:3000 - фронтенд
http://api.local:8000 - бэкенд
http://admin.local:5000 - админка

Вывод

localhost и 127.0.0.1 связаны через файл hosts в ОС.

  • На Linux/macOS это /etc/hosts
  • На Windows это C:\Windows\System32\drivers\etc\hosts

Это простой текстовый файл, который система проверяет в первую очередь перед обращением к DNS-серверам. Это основной механизм для разработки и тестирования на локальной машине.