В чем разница между 127.0.0.1 и 0.0.0.0?

Большинство из нас слышали о 127.0.0.1 и 0.0.0.0, но, вероятно, не особо задумывались о них, но если кажется, что оба они указывают на одно и то же место, то в чем разница между ними? Сегодняшняя публикация SuperUser Q&A помогает прояснить ситуацию для сбитого с толку читателя.

Сегодняшняя сессия вопросов и ответов предоставлена ​​нам благодаря SuperUser - подразделению Stack Exchange, группы веб-сайтов вопросов и ответов, управляемой сообществом.

Фото любезно предоставлено Кейт Гардинер (Flickr).

Вопрос

Читатель SuperUser Санник Саркар хочет знать, в чем разница между 127.0.0.1 и 0.0.0.0:

Я понимаю, что 127.0.0.1 указывает на localhost и что 0.0.0.0 тоже (поправьте меня, если я ошибаюсь). Итак, в чем разница между 127.0.0.1 и 0.0.0.0?

В чем разница между 127.0.0.1 и 0.0.0.0?

Ответ

У участника SuperUser Дэвида Постилла есть ответ для нас:

В чем разница между 127.0.0.1 и 0.0.0.0?

  • 127.0.0.1 - это адрес обратной связи (также известный как localhost).
  • 0.0.0.0 - это немаршрутизируемый мета-адрес, используемый для обозначения недопустимой, неизвестной или неприменимой цели (заполнитель «без определенного адреса»).

В контексте записи маршрута это обычно означает маршрут по умолчанию.

В контексте серверов 0.0.0.0 означает все адреса IPv4 на локальном компьютере . Если у хоста два IP-адреса, 192.168.1.1 и 10.1.2.1, и сервер, работающий на хосте, прослушивает 0.0.0.0, он будет доступен по обоим этим IP-адресам.

Что такое IP-адрес 127.0.0.1?

127.0.0.1 - это IP-адрес петлевого Интернет-протокола, также называемый localhost . Адрес используется для установления IP-соединения с той же машиной или компьютером, который используется конечным пользователем.

Такое же соглашение определено для компьютеров, которые поддерживают адресацию IPv6 с использованием коннотации :: 1. Установление соединения с использованием адреса 127.0.0.1 является наиболее распространенной практикой; однако использование любого IP-адреса в диапазоне 127… * будет работать таким же или подобным образом. Конструкция loopback дает компьютеру или устройству, способному подключаться к сети, возможность проверять или устанавливать стек IP на машине.

Источник: 127.0.0.1 - Как оно используется и почему оно важно?

Специальные адреса

Сетевому номеру 127 класса A назначается функция обратной связи , то есть дейтаграмма, отправляемая протоколом более высокого уровня на адрес сети 127, должна возвращаться обратно внутри хоста. Никакая дейтаграмма, отправленная на адрес сети 127, никогда не должна появляться ни в какой сети где-либо.

Источник: Network Numbers.

Если это весь класс A, какой смысл в других произвольных значениях для последних трех октетов?

Целью диапазона loopback является тестирование реализации протокола TCP / IP на хосте. Поскольку нижние уровни замкнуты накоротко, отправка на адрес обратной связи позволяет эффективно тестировать более высокие уровни (IP и выше) без возможности проявления проблем на нижних уровнях. 127.0.0.1 - это адрес, наиболее часто используемый для целей тестирования.

Источник: зарезервированный IP-адрес, обратная связь и частные адреса

Для получения дополнительной информации см. Вопрос « Задайте Ubuntu» : что такое устройство обратной петли и как его использовать?

Что такое IP-адрес 0.0.0.0?

0.0.0.0 - допустимый синтаксис адреса. Таким образом, он должен анализироваться как действительный везде, где ожидается IP-адрес в традиционной десятичной нотации с точками. После анализа и преобразования в работоспособную числовую форму его значение определяет, что будет дальше.

Значение "все нули" имеет особое значение. Таким образом, он действителен , но имеет значение, которое может не подходить (и, следовательно, рассматриваться как недействительное) для определенных обстоятельств. По сути, это заполнитель «без определенного адреса». Для таких вещей, как привязка адресов сетевых подключений, результатом может быть присвоение подключению соответствующего адреса интерфейса. Если вы используете его для настройки интерфейса, вместо этого он может удалить адрес из интерфейса. Это зависит от контекста использования, чтобы определить, что на самом деле делает «без конкретного адреса».

В контексте записи маршрута это обычно означает маршрут по умолчанию. Это происходит в результате использования маски адреса, которая выбирает биты для сравнения. Маска 0.0.0.0 не выбирает никаких битов, поэтому сравнение всегда будет успешным. Поэтому, когда такой маршрут настроен, пакетам всегда есть куда пойти (если настроено действительное место назначения).

В некоторых случаях просто «0» будет работать и иметь такой же эффект. Но это не гарантируется. Форма 0.0.0.0 - это стандартный способ сказать «нет конкретного адреса» (в IPv6 это :: 0 или просто ::) .

Источник: Что означает IP-адрес 0.0.0.0?

В Интернет-протоколе версии 4 адрес 0.0.0.0 - это немаршрутизируемый мета-адрес, используемый для обозначения недопустимой, неизвестной или неприменимой цели. Чтобы придать особое значение неверной в противном случае части данных, необходимо использовать внутриполосную сигнализацию.

В контексте серверов 0.0.0.0 означает все адреса IPv4 на локальном компьютере . Если у хоста два IP-адреса, 192.168.1.1 и 10.1.2.1, и сервер, работающий на хосте, прослушивает 0.0.0.0, он будет доступен по обоим из этих IP-адресов ( Примечание: этот конкретный текст повторяется сверху как часть общего ответа ).

В контексте маршрутизации 0.0.0.0 обычно означает маршрут по умолчанию, то есть маршрут, который ведет к «остальной части» Интернета, а не где-то в локальной сети.

Использование включает:

  • Адрес, который хост заявляет как свой собственный, когда ему еще не назначен адрес. Например, при отправке начального пакета DHCPDISCOVER при использовании DHCP.
  • Адрес, который хост назначает самому себе, когда запрос адреса через DHCP не удался, при условии, что IP-стек хоста поддерживает это. Это использование было заменено механизмом APIPA в современных операционных системах.
  • Способ указать вообще любой IPv4-хост . Таким образом он используется при указании маршрута по умолчанию.
  • Способ явно указать, что цель недоступна. Источник:  127.0.0.1 - Как оно используется и почему оно важно?
  • Способ указать любой IPv4-адрес вообще . Таким образом он используется при настройке серверов (например, при привязке сокетов для прослушивания). Это известно программистам TCP как INADDR_ANY. [ bind (2) привязывается к адресам, а не интерфейсам. ]

В IPv6 адрес из всех нулей записывается как :

Источник: 0.0.0.0 [Википедия]

Обнаружение / запрос DHCP

Когда клиент загружается в первый раз, считается, что он находится в состоянии инициализации и передает сообщение DHCPDISCOVER в свою локальную физическую подсеть через порт 67 протокола дейтаграмм пользователя (UDP) (сервер BootP). Поскольку у клиента нет возможности узнать, к какой подсети он принадлежит, DHCPDISCOVER - это широковещательная рассылка для всех подсетей (IP-адрес назначения 255.255.255.255) с IP-адресом источника 0.0.0.0. Исходный IP-адрес - 0.0.0.0, поскольку у клиента нет настроенного IP-адреса.

Если в этой локальной подсети существует DHCP-сервер, который настроен и работает правильно, DHCP-сервер услышит широковещательную рассылку и ответит сообщением DHCPOFFER. Если DHCP-сервер не существует в локальной подсети, в этой локальной подсети должен быть агент DHCP / BootP Relay для пересылки сообщения DHCPDISCOVER в подсеть, содержащую DHCP-сервер.

Этот агент ретрансляции может быть либо выделенным хостом (например, Microsoft Windows Server), либо маршрутизатором (например, маршрутизатором Cisco, настроенным с помощью операторов IP-помощника уровня интерфейса).

После того, как клиент получает DHCPOFFER, он отвечает сообщением DHCPREQUEST, указывающим на свое намерение принять параметры в DHCPOFFER, и переходит в состояние запроса . Клиент может получить несколько сообщений DHCPOFFER, по одному от каждого DHCP-сервера, получившего исходное сообщение DHCPDISCOVER. Клиент выбирает один DHCPOFFER и отвечает только этому DHCP-серверу, неявно отклоняя все остальные сообщения DHCPOFFER. Клиент идентифицирует выбранный сервер, заполняя поле параметра « Идентификатор сервера» IP-адресом DHCP-сервера.

DHCPREQUEST также является широковещательным, поэтому все DHCP-серверы, отправившие DHCPOFFER, будут видеть DHCPREQUEST, и каждый будет знать, был ли его DHCPOFFER принят или отклонен. Любые дополнительные параметры конфигурации, которые требуются клиенту, будут включены в поле параметров сообщения DHCPREQUEST. Даже если клиенту был предложен IP-адрес, он отправит сообщение DHCPREQUEST с исходным IP-адресом 0.0.0.0. В настоящее время клиент еще не получил подтверждения того, что использовать IP-адрес можно.

Разговор клиент-сервер для клиента, получающего DHCP-адрес, где клиент и DHCP-сервер находятся в одной подсети:

Источник: Понимание и устранение неполадок DHCP в коммутаторах Catalyst или корпоративных сетях.

Маршрут по умолчанию

В этом документе объясняется, как настроить маршрут по умолчанию или последний шлюз. Используются следующие IP-команды:

  • IP-шлюз по умолчанию
  • IP-сеть по умолчанию
  • IP-маршрут 0.0.0.0 0.0.0.0

IP-маршрут 0.0.0.0 0.0.0.0

Создание статического маршрута к сети 0.0.0.0 0.0.0.0 - еще один способ установить шлюз последней инстанции на маршрутизаторе. Как и в случае с командой ip default-network , использование статического маршрута до 0.0.0.0 не зависит от каких-либо протоколов маршрутизации. Однако на маршрутизаторе должна быть включена IP-маршрутизация.

Примечание. IGRP не распознает маршрут к 0.0.0.0. Следовательно, он не может распространять маршруты по умолчанию, созданные с помощью команды ip route 0.0.0.0 0.0.0.0 . Используйте команду ip default-network, чтобы IGRP распространял маршрут по умолчанию.

Источник: Настройка шлюза последней надежды с помощью IP-команд

Есть что добавить к объяснению? Отключить звук в комментариях. Хотите узнать больше ответов от других технически подкованных пользователей Stack Exchange? Ознакомьтесь с полной веткой обсуждения здесь.