Большинство из нас слышали о «127.0.0.1 и 0.0.0.0», но, вероятно, не задумывались о них, но если кажется, что оба они указывают на одно и то же место, то в чем разница между ними? Сегодняшний пост с вопросами и ответами SuperUser поможет прояснить ситуацию для сбитого с толку читателя.
Сегодняшняя сессия вопросов и ответов проходит благодаря 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 адрес должен когда-либо появляться в любой сети где угодно.
Источник: Сетевые номера
Если это весь класс 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 [Wikipedia]
Обнаружение / запрос 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. Клиент идентифицирует выбранный сервер, заполняя Идентификатор сервера поле option с 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-сеть по умолчанию команда, использующая статический маршрут до 0.0.0.0, не зависит от каких-либо протоколов маршрутизации. Однако на маршрутизаторе должна быть включена IP-маршрутизация.
Примечание: IGRP не понимает маршрут к 0.0.0.0. Следовательно, он не может распространять маршруты по умолчанию, созданные с помощью IP-маршрут 0.0.0.0 0.0.0.0 команда. Использовать IP-сеть по умолчанию команда, чтобы IGRP распространял маршрут по умолчанию.
Источник: Настройка шлюза последней инстанции с помощью IP-команд
Есть что добавить к объяснению? Отключить звук в комментариях. Хотите узнать больше ответов от других технически подкованных пользователей Stack Exchange? Ознакомьтесь с полной веткой обсуждения здесь .