127.0.0.1 ve localhost arasındaki fark nedir


157

Aşağıdakilerin tanımlandığı varsayıldığında .../hosts:

127.0.0.1 localhost

Kullanarak arasındaki gerçek farklar nelerdir, varsa vardır 127.0.0.1ve localhostsunucu adı olarak, özellikle bağlantıları için dinlerken yerel olarak çalışan süreçleri vururken?


15
localhostProtokolden bağımsız olduğunu söyleyebilirsiniz , hem IPv4 hem de IPv6 çalışır.
Steve-o

Yanıtlar:


122

Eh, büyük olasılıkla fark hala gerçek yapmak zorunda olmasıdır arama ait localhostyerde.

Eğer kullanırsanız 127.0.0.1, (akıllı) yazılım bunu doğrudan bir IP adresine dönüştürür ve kullanır. Bazı uygulamaları gethostbynamenoktalı biçimi (ve muhtemelen eşdeğer IPv6 biçimini) algılar ve hiç arama yapmaz.

Aksi takdirde, adın çözümlenmesi gerekir. Ve hostsdosyanızın aslında bu çözünürlük için kullanılacağına dair bir garanti yoktur (ilk olarak veya hiç), bu yüzden localhosttamamen farklı bir IP adresi olabilir.

Bununla, bazı sistemlerde yerel bir hostsdosyanın atlanabileceğini kastediyorum . host.confDosya Linux üzerinde denetimleri bu (ve diğer birçok Unix sistemleri).


6
Temel fark, bağlantının burada belirtildiği gibi Unix Etki Alanı Soketi üzerinden yapılabilmesidir: stackoverflow.com/questions/3715925/localhost-vs-127-0-0-1
Don Viegues 21:14

/etc/nsswitch.confhostsnss çalışıyorsa, ana makine araması için önce DNS'nin kullanılıp kullanılmayacağını seçer .
Mark Lakata

@DonViegues MySQL'e özgü ve IMO bozuk tasarımı. Yerel ana makineyi görecek ve IP kullanarak bağlanmak yerine unix-soket kullanmaya çalışacaktır ancak 127.0.0.1 için sadece IP kullanır.
Arman Ordookhani

@ArmanOrdookhani AFAIK, uzaktaki bir ana bilgisayara SSH üzerinden ve sonra oradan bir MySQL'e (MySQL sunucusuna ulaşmak için bir SSH tüneli gibi) bağlanıyorsanız, her şey TC / IP üzerinden geçtiğinden 127.0.0.1'i kullanmanız gerekir. Ancak aynı makinede çalışan 2 işlem bağlanmak istiyorsa, localhost (unix soketi) daha hızlıdır / lees yükü vardır. Teşekkürler!
Don Viegues

1
@DonViegues Evet haklısın Unix soketinin TCP / IP'den daha az ek yükü var. Ben sadece bu davranışı işletim sistemi veya ağ düzeyinde bir şey değil, MySQL özel söz etmek istedim.
Arman Ordookhani

36

Wikipedia bunu iyi özetliyor:

Modern bilgisayar sistemlerinde, ana bilgisayar adı olarak localhost, 127.0.0.0/8 (geri döngü) net bloğunda, genellikle 127.0.0.1 veya :: 1 IPv6'da bir IPv4 adresine çevirir.

Tek fark, neyin localhostçözüldüğüne ilişkin sistemin DNS'ye bakmasıdır. Bu arama gerçekten çok hızlı. Örneğin, stackoverflow.comsize adres çubuğuna yazdığınız (veya burada gösterilen bir yer imi kullanılan). Her iki durumda da, buraya bir ana bilgisayar adıyla geldiniz. localhostbenzer bir işlevsellik sağlar.


11
Bu gerçekten önemli. localhost bir IPv6 adresine çözülebilirken 127.0.0.1 çözülemez. Yalnızca IPv6'da localhost kullanmak sistem çalışabilirken, 127.0.0.1 IPv4 mevcut olmadığından çalışmaz.
Erwin Jansen

32

bazı uygulamalar "localhost" u özel olarak ele alacaktır. mysql istemcisi 127.0.0.1'de sunucuya bağlanmak için tcp kullanmak yerine localhost'u yerel unix etki alanı soketine bağlanma isteği olarak ele alacaktır. Bu daha hızlı olabilir ve farklı bir kimlik doğrulama bölgesinde olabilir.

Localhost'a 127.0.0.1'den farklı davranan diğer uygulamaları bilmiyorum, ancak muhtemelen bazıları var.


8

IP ile daha hızlı.

Temel olarak, sunucu adına göre aradığınızda, orijinal IP'ye dönüştürülür.

Ancak bir IP'yi ezberlemek zor olurdu, bu nedenle alan adı oluşturuldu.

Şahsen veya http://localhostyerine kullanıyorum .http://127.0.0.1http://username


localhost daha hızlı, TCP / IP
kullanmıyor

@Don Viegues - söyledikleriniz bu konudaki diğer cevaplarla çelişiyor. Detaylandırabilir misin?
Dikla

Evet, diğer yorumumu kopyalayıp yapıştıracağım: Temel fark, bağlantının burada belirtildiği gibi Unix Etki Alanı Soketi üzerinden yapılabilmesidir: stackoverflow.com/questions/3715925/localhost-vs-127-0-0-1
Don Viegues

5
İşleyen MySQL, özgü @DonViegues localhostbir de özel bir şekilde . Diğer uygulamalar hala aranmaya devam edecektir localhost.
William Denniss

0

Farklı bir şey yok. Birini hatırlamak diğerinden daha kolaydır. Genel olarak, bir IP adresiyle ilişkilendirilecek bir ad tanımlarsınız. 127.0.0.1 için localhost belirtmeniz gerekmez, istediğiniz herhangi bir adı belirtebilirsiniz.


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.