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




port example (6)

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

127.0.0.1 localhost

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


Answers

Википедия хорошо разбирается в этом:

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

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


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

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

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

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


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

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


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


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

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

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

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


Вы используете флеш-сокету на стороне сервера? Если да, в конструкторе имеется много отладки.

socketio = SocketIO (приложение, async_mode = async_mode, logger = True, engineio_logger = True)







sockets networking dns localhost