0.0.0.0, 127.0.0.1 ve localhost arasındaki fark nedir?


271

Mac'imde Jekyllve kullanıyorum Vagrant. Bunun yerine Jekyll serverbağlanacağını buldum . Ayrıca varsayılan olarak bu adrese bağlanır. Yine de ziyaret edebilirim . Ama için , varsayılan ayar (örn 0.0.0.0:4000) Internet erişimi gerektirir gibi görünüyor. İnternet olmadan çalışamam . Küçük bir hata mı?0.0.0.0:4000127.0.0.1:4000gem serverhttp://localhost:portJekyllJekyll server

Ben de kullanıyorum Vagrant. Ben yüklemeden itibaren, Vagrantfile set port yönlendirmesi (=> 4000 8080) sahip Jekylliçinde Vagrantsanal makine ve Macintosh altında test edin. Varsayılan ayarı (0.0.0.0:4000) kullanırsam çalışır. Safari ile ziyaret edebilirim http://localhost:8080. Fakat internet yoksa 0.0.0.0:4000'e bağlanamam. Bunun yerine jekyll server -H 127.0.0.1hizmeti bağlamak için 127.0.0.1:4000kullanıyorum, sonra ziyaret edemiyorum http://localhost:8080.

Herkes 0.0.0.0, 127.0.0.1 ve localhost arasındaki farkı açıklayabilir mi? Ve farkın neden bu soruna neden olacağını kimse açıklayabilir mi?


Bu makale yararlı olabilir howtogeek.com/225487/…
fangxing

Yanıtlar:


408

127.0.0.1normalde "geri döngü" veya yalnızca yerel arayüze atanan IP adresidir. Bu, yalnızca aynı ana bilgisayarda iletişim kurabilen "sahte" bir ağ bağdaştırıcısıdır. Ağ özellikli bir uygulamanın yalnızca aynı ana bilgisayardaki istemcilere hizmet vermesini istediğinizde kullanılır. 127.0.0.1Bağlantıları dinleyen bir işlem yalnızca bu soket üzerindeki yerel bağlantıları alır.

"localhost" normalde 127.0.0.1IP adresinin ana bilgisayar adıdır . Genellikle /etc/hosts(veya altında bir yerde "hosts" olarak adlandırılan Windows eşdeğeri) ayarlanır %WINDIR%. Bunu diğer tüm ana bilgisayar adları gibi kullanabilirsiniz - nasıl çözümlendiğini görmek için "ping localhost" u deneyin 127.0.0.1.

0.0.0.0birkaç farklı anlama sahiptir, ancak bu bağlamda, bir sunucuya dinlemesi söylendiğinde 0.0.0.0"mevcut her ağ arayüzünde dinleme" anlamına gelir. 127.0.0.1Sunucu işleminin bakış açısından IP adresine sahip geri döngü bağdaştırıcısı , makinedeki diğer tüm ağ bağdaştırıcılarına benzer, bu nedenle dinlemesi gereken bir sunucu 0.0.0.0bu arabirimdeki bağlantıları da kabul eder.

Umarım sorunuzun IP tarafına cevap verir. Jekyll veya Vagrant'ı tanımıyorum, ancak bağlantı noktası yönlendirmenizin 8080 => 4000belirli bir ağ bağdaştırıcısına bir şekilde bağlı olduğunu tahmin ediyorum , bu nedenle yerel olarak bağlandığınızda yolda değil127.0.0.1


Hmm, ping localhostWindows üzerinde çalışması gibi görünüyor bile olmadan ana dosya işaret 127.0.0.1etmek localhost.
Pacerier

Pacerier ile aynı fikirde. En azından Windows'ta, localhost varsayılan olarak 0.0.0.0 (127.0.0.1 değil) gibi davranır
drodsou

5
"Bu, 0.0.0.0'a bağlanma açıklamanız dışında çoğunlukla doğrudur. Bu, açıkladığınız gibi kullanılabilir her ağ arabirimine bağlanmaz, daha ziyade tüm adreslere bağlanır . TCP yığınlarında bu, INADDR_ANY olarak bilinir - silinen yanıttan @strangemonad ait.
Piotr Dobrogost

15

Jekyll'in mevcut sürümünde, varsayılan olarak http://127.0.0.1:4000/ olarak ayarlanmıştır .
Bir ağa bağlıysanız ancak başkalarının uygulamanıza erişmesini istemiyorsanız, bu iyidir.

Ancak, uygulamanızın bir cep telefonunda veya başka bir dizüstü bilgisayardan / bilgisayardan nasıl çalıştığını görmek isteyebilirsiniz.

Bu durumda,

jekyll serve --host 0.0.0.0

Bu, uygulamanızı ana bilgisayara bağlar ve başka bir ana bilgisayardan bağlanmak için sonraki kullanım

http://host's IP adress/4000 
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.