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

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

127.0.0.1 localhost

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

Ответ 1

Ну, скорее всего, разница в том, что вам все равно придется выполнять реальный поиск localhost где-то.

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

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

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

Ответ 2

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

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

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

Ответ 3

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

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

Ответ 4

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

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

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

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

Ответ 5

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

Ответ 6

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