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



я использую Jekyll и Vagrant на моем mac. Я нашел это Jekyll server свяжет с 0.0.0.0:4000 вместо 127.0.0.1:4000. Также gem server будет привязан к этому адресу по умолчанию. Я все еще могу посетить его через http://localhost:port. Но для Jekyll,похоже, что настройка по умолчанию (например, 0.0.0.0:4000) требует доступа в интернет. Я не могу бежать Jekyll server без интернета. это маленькая ошибка?



я также использую Vagrant. Я установил переадресацию портов (8080 = > 4000) в Vagrantfile, так как я устанавливаю Jekyll на Vagrant виртуальная машина и проверить его под Macintosh. Если я использую настройку по умолчанию (0.0.0.0: 4000), она работает. Я могу посетить его из моего сафари с http://localhost:8080. Но если нет интернета, я не могу привязать к 0.0.0.0:4000. Я использую jekyll server -H 127.0.0.1 привязать сервис к 127.0.0.1:4000 вместо этого, я не могу посетить его через http://localhost:8080.



может кто-нибудь объясните разницу между 0.0.0.0, 127.0.0.1 и localhost? А может кто-нибудь объясните, почему разница приведет к этой проблема?

1189   2  

2 ответов:

127.0.0.1 обычно IP-адрес, назначенный для" замыкания на себя " или только для локального интерфейса. Это "поддельный" сетевой адаптер, который может взаимодействовать только в пределах одного хоста. Он часто используется, когда вы хотите, чтобы сетевое приложение обслуживало только клиентов на одном хосте. Процесс, который слушает на 127.0.0.1 для соединений будет получать только локальные соединения на этом сокете.

"localhost" обычно является именем хоста для 127.0.0.1 IP-адрес. Это обычно устанавливается в /etc/hosts (или эквивалент Windows с именем "hosts" где-то под %WINDIR%). Вы можете использовать его так же, как и любое другое имя хоста - попробуйте "ping localhost", чтобы увидеть, как он разрешает 127.0.0.1.

0.0.0.0 имеет несколько разных значений, но в этом контексте, когда серверу говорят слушать 0.0.0.0 это означает "прослушивание всех доступных сетевых интерфейсов". Петлевой адаптер с IP-адресом 127.0.0.1 с точки зрения процесса сервера выглядит так же, как и любой другой сетевой адаптер на машине, так сервер сказал слушать на 0.0.0.0 будет принимать соединения на этом интерфейсе тоже.

это, надеюсь, отвечает на IP-сторону вашего вопроса. Я не знаком с Джекилом или бродягой, но я предполагаю, что ваш порт переадресации 8080 => 4000 каким-то образом привязан к определенному сетевому адаптеру, поэтому он не находится в пути при локальном подключении к 127.0.0.1

в текущей версии Jekyll, он по умолчанию http://127.0.0.1:4000/.
Это хорошо, если вы подключены к сети, но не хотите, чтобы кто-нибудь еще доступ к вашему приложению.

однако может случиться так, что вы хотите увидеть, как ваше приложение работает на мобильном телефоне или с другого ноутбука/компьютера.

в этом случае, вы можете использовать

jekyll serve --host 0.0.0.0

это связывает ваше приложение с хостом и далее использовать следующие Для подключения к нему из какой-то другой хост

http://host's IP adress/4000 

Comments

    Ничего не найдено.