Вопрос В чем разница между 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?


162
2017-08-02 13:17


происхождения


Вы можете быть заинтересованы в обсуждение этой проблемы в Chrome о том, как обращаться 0.0.0.0 в адресном вводе. - user7301
В большинстве конфигураций сервера 0.0.0.0 означает, слушайте по всем адресам! Это сделает ваш сервер доступным в Интернете. Если вы делаете это для какого-либо локального сервера без какой-либо безопасности (это только прослушивание на localhost, верно?), Это плохо. Не делай этого! - Josef
Ответ на ваш вопрос буквально, разница 2130706433, - Shaz
@ Масто, о, вы один из людей, которые настраивают совершенно небезопасную систему, потому что брандмауэр все это исправит? Обычно эти системы можно найти с помощью shodan.io : 3 Следующим уровнем этого мышления является «мы полностью можем использовать 5-летнюю установку WordPress, у нас есть WAF». Я не рекомендую никому идти по этому пути, никогда! - Josef
@Shaz Я бы хотел поддержать ваш комментарий, но, поскольку в настоящее время я на 42, я не могу заставить себя это сделать ... - Jenny D


ответы:


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

  • 127.0.0.1 это loopback-адрес (также известный как 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 - это адрес интернет-протокола loopback (IP), также называемый «localhost». Адрес используется для установления IP-адреса   соединение с тем же компьютером или компьютером, которое используется конечным пользователем.

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

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


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

Сетевому номеру класса А 127 присваивается "loopback"            функция, то есть датаграмма, отправленная протоколом более высокого уровня            к сети адрес 127 должен зацикливаться внутри хоста. нет            датаграмма, «отправленная» на адрес сети, должна когда-либо появляться            любая сеть в любом месте.

Источник: Сетевые номера


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

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

Источник: Зарезервировано IP, Loopback и частные адреса

Для получения дополнительной информации см. https://askubuntu.com вопрос Что такое loopback-устройство и как его использовать? а также почему IP-адрес loopback от 127.0.0.1 до 127.255.255.254?,


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

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

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

В контексте записи маршрута обычно используется маршрут по умолчанию,   В результате происходит больше маски адреса, которая выбирает   бит для сравнения. Маска «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 адрес all-zeros записывается как «::».

Источник: 0.0.0.0


Открытие / запрос DHCP

Когда клиент загружается в первый раз, он, как говорят, находится в   Инициализация состояния и передача сообщения DHCPDISCOVER на его локальном   физическая подсеть по порту пользовательских дейтаграмм (UDP) 67 (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-адрес явно.

...

Разговор Client-Server для клиента Получение DHCP-адреса Где клиент и сервер DHCP находятся в одной подсети

Enter image description here

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


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

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

  • ip default-gateway

  • ip default-network

  • и ip route 0.0.0.0 0.0.0.0

ip route 0.0.0.0 0.0.0.0

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

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

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


166
2017-08-02 18:33





Они не одинаковы.

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 обычно означает маршрут по умолчанию,   т. е. маршрут, который приводит к «остальной» сети, а не к   где-то в локальной сети.

https://en.wikipedia.org/wiki/0.0.0.0


101
2017-08-02 13:55



0.0.0.0 также может иногда указывать широковещательную передачу, что означает для всех компьютеров в сети. - KronoS
@KronoS Я думал, что трансляции - это такие вещи, как 255.255.255.255 (или более реалистично что-то вроде 192.168.1.255 для локальной сети) - Nick T
@NickT А вы верный: A special definition exists for the IP broadcast address 255.255.255.255. It is the broadcast address of the zero network or 0.0.0.0, which in Internet Protocol standards stands for this network, i.e. the local network. Transmission to this address is limited by definition, in that it is never forwarded by the routers connecting the local network to other networks. - KronoS
@KronoS Вы путаете широковещательный адрр с loopback. Шлейф 0.0.0.0, который, как описано выше, прослушивает все локальные адреса. Передача (простым способом) - это 255 сетей для «трансляции» всех адресов в этой сети. - Desorder
Это неполное - многие операционные системы действительно позволяют вам подключиться к 0.0.0.0, который затем ведет себя как loopback-адрес. - grawity


127.0.0.1 один из адресов локального компьютера, но любой адрес 127.xyz также является другим адресом компьютера (так называемый «loopback address»), за исключением 127.0.0.0 (loopback subnet) и 127.255.255.255 (широковещательный адрес для loopback подсети).

127.x.y.z означает «здесь».

0.0.0.0 совершенно разные: 0.0.0.0 не является адресом чего-либо, это джокер, так как * в ракушке.

Вы не можете отправлять данные в 0.0.0.0 или активно открывать TCP-соединение до 0.0.0.0, потому что там ничего нет; 0.0.0.0 даже не является недоступным или не маршрутизируемым адресом, это бессмысленно в контексте, где ожидается адрес,

Вы можете использовать joker 0.0.0.0 в контекстах, где можно указать опцию, значить Мне все равно,

Например, когда вы активно открываете TCP-соединение с некоторым TCP-сервером (TCP-сервер создается пассивным TCP-распаском), вам необходимо указать адрес TCP-сервера (IP и номер порта), и вы можете необязательно выберите локальный адрес. (Поскольку ваш сокет не является серверным сокетом, никто не может открыть для него соединение, а адрес на вашей стороне соединения обычно не очень важен.)

bind системный вызов используется для выбора локального адреса сокета TCP. Данные, переданные bind на самом деле представляет собой набор ограничений: ограничение на IP-адрес, ограничение на TCP-порт. Обычная текстовая нотация - IP: порт. 0.0.0.0:09 означает, что любой IP-порт является приемлемым, это нулевое ограничение. 0.0.0.0:20 означает, что локальный порт должен быть 20, любой IP является приемлемым (0.0.0.0:20 используется для согласования FTP-серверов для подключения к данным в активном режиме).

Подсистема TCP / IP выберет адрес для вашей стороны TCP-соединения если вы его не выбрали, используя таблицу маршрутизации на основе адреса назначения: локальный адрес сокета TCP будет локальным адресом, связанным с маршрутом, соответствующим целевому адресу.

Я ранее упоминал оболочку «метасимвол», *, но сила комбинирования метасимволов с такими символами, как *foo* (любое имя файла, содержащее «foo»), не существует с ограничениями IP-адреса, это все или ничего: либо один IP-адрес считается приемлемым, либо все адреса. Логика не диктует, что так должно быть. Вы можете расширить интерфейс с помощью более богатого языка ограничений.

Точность:

Предложение 127.x.y.z означает "здесь" не означает, что все эти адреса одинаковы. Они представляют разные «местоположения» (адреса сокетов) внутри локального «компьютера» внутри локального IP-стека.

Замечание: компьютер с виртуализацией (эмуляция, аппаратная виртуализация, паравиртуализация, что вы можете придумать ...) имеет несколько независимых стеков IP.


13
2017-08-03 16:38



Когда я набрал случайный адрес, начинающийся с 127 (например, 127.16.23.42) в моем браузере, он не подключался к localhost. - whoKnows
@whoKnows Конечно. localhost - 127.0.0.1, а не 127.16.23.42. - curiousguy
Понимаю. Таким образом, 127.0.0.1 означает localhost, но 127.x.y.z мог означает локальный компьютер, если он был настроен таким образом? - whoKnows
@whoKnows Нет: 127.x.y.z принадлежит этому компьютеру для любого x y z. «localhost» - это просто имя 127.0.0.1, поэтому забудьте «localhost». Использовать -n или -d флаг netstat и связанные программы для отображения числовых адресов, а не имен. 127.0.0.1 - это не тот же IP-адрес, что и 127.16.23.42. Таким образом, 127.0.0.1:80 и 127.16.23.42:80 представляют разные адреса конечных точек TCP, веб-сервер по одному адресу не может быть найден на другом адресе. - curiousguy


Обычно вы используете bind-address 0.0.0.0, чтобы разрешать подключения из внешних сетей и источников. Многие серверы, такие как MySQL, обычно привязываются к 127.0.0.1, разрешая только соединения с обратной связью, требуя от администратора изменить его на 0.0.0.0, чтобы включить внешнее подключение.


4
2017-08-03 05:55