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

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

127.0.0.1 localhost

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

6 ответов


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

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

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

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


Википедия хорошо резюмирует это:

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

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


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

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


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

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

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

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


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


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