В чем разница между 127.0.0.1 и localhost - PullRequest
121 голосов
/ 12 сентября 2011

При условии, что в .../hosts определено следующее:

127.0.0.1 localhost

Каковы, если таковые имеются, фактические различия между использованием 127.0.0.1 и localhost в качестве имени сервера, особенно при обращении к локально запущенным процессам, которые прослушивают соединения?

Ответы [ 6 ]

100 голосов
/ 12 сентября 2011

Что ж, наиболее вероятная разница заключается в том, что вам все равно придется выполнить фактический поиск из localhost.

Если вы используете 127.0.0.1, тогда (интеллектуальное) программное обеспечение будетпросто превратите это непосредственно в IP-адрес и используйте его.Некоторые реализации gethostbyname будут обнаруживать точечный формат (и, вероятно, эквивалентный формат IPv6) и вообще не выполнять поиск.

В противном случае имя должно быть разрешено.И нет никакой гарантии, что ваш hosts файл действительно будет использован для этого разрешения (первым или вообще), поэтому localhost может стать совершенно другим IP-адресом.

Под этим я подразумеваю, что в некоторых системах можно обойти локальный файл hosts.Файл host.conf управляет этим в Linux (и многих других Unices).

32 голосов
/ 12 сентября 2011

Википедия хорошо подводит итог:

В современных компьютерных системах localhost в качестве имени хоста преобразуется в IPv4-адрес в сетевом блоке 127.0.0.0/8 (loopback), обычно 127.0.0.1 или :: 1 в IPv6.

Единственное отличие состоит в том, что он будет искать в DNS систему, к которой localhost разрешает. Этот поиск действительно очень быстрый. Например, чтобы добраться до stackoverflow.com, вы ввели это в адресную строку (или использовали букмарклет, который указывал здесь). В любом случае, вы попали сюда через имя хоста. localhost обеспечивает аналогичную функциональность.

28 голосов
/ 11 апреля 2014

некоторые приложения будут обрабатывать "localhost" специально.клиент mysql будет обрабатывать localhost как запрос на подключение к локальному сокету домена unix вместо использования tcp для подключения к серверу на 127.0.0.1.Это может быть быстрее и может быть в другой зоне аутентификации.

Я не знаю других приложений, которые обрабатывают localhost иначе, чем 127.0.0.1, но, вероятно, есть некоторые.

8 голосов
/ 12 сентября 2011

Ну по IP быстрее.

Обычно, когда вы звоните по имени сервера, он преобразуется в исходный IP-адрес.

Но было бы сложно запомнить IP, по этой причине было создано доменное имя.

Лично я использую http://localhost вместо http://127.0.0.1 или http://username.

0 голосов
/ 21 сентября 2014

Основное отличие заключается в том, что соединение может быть установлено через Unix Domain Socket, как указано здесь: localhost против 127.0.0.1

0 голосов
/ 12 сентября 2011

Нет ничего другого.Одно легче запомнить, чем другое.Как правило, вы определяете имя для связи с IP-адресом.Вам не нужно указывать localhost для 127.0.0.1, вы можете указать любое имя, которое хотите.

...