Я понимаю, что 127.0.0.1 указывает на localhost
, как и 0.0.0.0 (поправьте меня, если я ошибаюсь). Итак, в чем разница между 127.0.0.1 и 0.0.0.0?
4 ответа
В чем разница между 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), также называемый «локальный узел». Адрес используется для установления IP-соединения с той же машиной или компьютером, который используется конечным пользователем.
То же соглашение определено для компьютеров, которые поддерживают адресацию IPv6 с использованием коннотации ::1. Установление соединения с использованием адреса 127.0.0.1 является наиболее распространенной практикой; однако, используя любой IP-адрес в диапазоне 127 ... * будет работать таким же или похожим образом. Контур обратной связи дает компьютеру или устройству, способному объединяться в сеть, возможность проверять или устанавливать стек IP на машине.
Источник: 127.0.0.1 - Каковы его применения и почему это важно?
Специальные адреса
Сетевой номер 127 класса А назначается функцией "обратной связи", то есть дейтаграмма, отправляемая по протоколу более высокого уровня на адрес сети 127, должна зацикливаться внутри хоста. Ни одна датаграмма, "отправленная" на сетевой адрес 127, никогда не должна появляться ни в одной сети.
Источник: номера сети
Если это целый класс А, какой смысл в других произвольных значениях для последних трех октетов?
Целью диапазона обратной связи является тестирование реализации протокола TCP/IP на хосте. Поскольку нижние уровни закорочены, отправка по адресу обратной связи позволяет эффективно тестировать верхние уровни (IP и выше) без возможности возникновения проблем на нижних уровнях. 127.0.0.1 - это адрес, наиболее часто используемый для тестирования.
Источник: Зарезервированный IP, Loopback и частные адреса
Для получения дополнительной информации см. Https://askubuntu.com вопрос Что такое устройство обратной связи и как его использовать? и почему IP-адрес обратной связи от 127.0.0.1 до 127.255.255.254? ,
Что такое 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-хост вообще". Это используется при указании маршрута по умолчанию.
- Способ явно указать, что цель недоступна. 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 для пересылки сообщения 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 default-gateway
ip default-network
и ip route 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-команд
Они не то же самое.
127.0.0.1
является частью сети 127/8, которая зарезервирована и указывает на тот же компьютер.
0.0.0.0
- это специальный IP-адрес, который означает разные вещи в зависимости от контекста.
В версии 4 интернет-протокола адрес 0.0.0.0 является не маршрутизируемым мета-адресом, используемым для обозначения недопустимой, неизвестной или неприменимой цели. Чтобы придать особое значение недопустимому фрагменту данных, это применение внутриполосной сигнализации.
Возможно, вы ошиблись 0.0.0.0 для 127.0.0.1, когда вы смотрите на netstat и видите, что локальный адрес прослушивается как 0.0.0.0, но это другой способ использования 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 обычно означает маршрут по умолчанию, то есть маршрут, который ведет к "остальной части" Интернета, а не где-то в локальной сети.
127.0.0.1 один из адресов локального компьютера, но любой адрес 127.xyz также является другим адресом компьютера (так называемый "адрес обратной связи"), за исключением 127.0.0.0 (петлевая подсеть) и 127.255.255.255 (широковещательный адрес для обратной петли). подсети).
127.xyz означает "здесь".
0.0.0.0 полностью отличается: 0.0.0.0 не является адресом чего-либо, это джокер, как *
в оболочке.
Вы не можете отправлять данные на 0.0.0.0 или активно открывать TCP-соединение на 0.0.0.0, потому что там ничего нет; 0.0.0.0 даже не является недоступным или не маршрутизируемым адресом, он не имеет смысла в контексте, где ожидается адрес.
Вы можете использовать джокер 0.0.0.0 в тех случаях, когда адрес может быть предоставлен опционально, что означает, что мне все равно.
Например, когда вы активно открываете TCP-соединение с каким-либо TCP-сервером (TCP-сервер создается с помощью пассивного открытия TCP), вам необходимо указать адрес TCP-сервера (IP и номер порта), и вы можете при желании выбрать местный адрес. (Поскольку ваш сокет не является сокетом сервера, никто не может открыть соединение с ним, и адрес на вашей стороне соединения обычно не очень важен.)
Системный вызов bind
используется для выбора локального адреса сокета TCP. Данные, передаваемые на bind
на самом деле представляют собой набор ограничений: ограничение на IP-адрес, ограничение на TCP-порт. Обычная текстовая запись - это IP: порт. 0.0.0.0:0 означает, что любой IP любой порт является приемлемым, это нулевое ограничение. 0.0.0.0:20 означает, что локальный порт должен быть 20, любой IP приемлем (0.0.0.0:20 используется соответствующими FTP-серверами для подключения к данным в активном режиме).
Подсистема TCP/IP выберет адрес для вашей стороны соединения TCP, если вы его не выберете, используя таблицу маршрутизации на основе адреса назначения: локальный адрес сокета TCP будет локальным адресом, связанным с соответствующим маршрутом. по адресу назначения.
Ранее я упоминал оболочку "метасимвол" *
, но сила объединения метасимволов с такими символами, как *foo*
(любое имя файла, содержащее "foo"), не существует с ограничениями IP-адресов, это все или ничего: либо один IP-адрес считается приемлемым или все адреса. Логика не диктует, что так должно быть. Вы могли бы расширить интерфейс с более богатым языком ограничений.
Точность:
Предложение 127.xyz означает "здесь" не означает, что все эти адреса одинаковы. Они фактически представляют разные "местоположения" (адреса сокетов) внутри локального "компьютера" внутри локального стека IP.
Примечание: компьютер с виртуализацией (эмуляция, виртуализация оборудования, паравиртуализация, все, что вы можете себе представить ...) имеет несколько независимых стеков IP.
Обычно вы используете bind-адрес 0.0.0.0 для разрешения соединений из внешних сетей и источников. Многие серверы, такие как MySQL, обычно связываются с 127.0.0.1, разрешая только петлевые соединения, требуя от администратора изменить его на 0.0.0.0 для включения внешнего подключения.