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