Bir proje başlatıyorsunuz ve terminalde Local: http://localhost:5173 satırı beliriyor. İzlediğiniz bir eğitim localhost:3000 adresini açmanızı söylüyor. Ya da modeminizin bağlı cihazlar listesine bakıyorsunuz ve cihazlardan birinin adı "localhost". Bu sözcüğü bir kez fark edince her yerde görürsünüz; anlamı da hep aynıdır: cihazın kendi kendisiyle konuşması.
Bu yazıda localhost'un ne olduğunu, 127.0.0.1 ve ::1 ile ilişkisini ve bir localhost adresini açtığınızda neler olduğunu anlatıyoruz. Ardından iki noktadan sonraki sayıya, localhost'un 0.0.0.0'dan ve IP adresinizden farkına, ona kimin erişebildiğine, Windows'ta ping localhost komutunun ne çıktı verdiğine ve yerel trafiğin neden proxy'ye gitmemesi gerektiğine geçiyoruz.
Localhost nedir?
Localhost, ayrılmış bir ana makine adıdır (hostname) ve her zaman "üzerinde çalıştığım cihaz" anlamına gelir. Bir tarayıcı, bir betik ya da başka bir program localhost'a bağlandığında bağlantı, bilgisayarınızdaki bir programdan yine aynı bilgisayardaki başka bir programa gider.
Bu ad bir standartla korunur. RFC 6761 (2013), localhost'u özel kullanımlı alan adları arasında sayar: ad çözümleyen yazılım bu adı DNS sunucusuna sormadan her zaman bir geri döngü adresiyle yanıtlamalıdır ve alan adı kayıt kuruluşları bu adı kimseye veremez. Kural app.localhost gibi .localhost ile biten adları da kapsar.
Her cihazın kendi localhost'u vardır: dizüstü bilgisayarınızda dizüstü bilgisayarınızdır, telefonunuzda telefonunuzdur. Localhost'la ilgili kafa karışıklığının çoğu bu tek bilgiyle çözülür; "bilgisayarımda çalışıyor ama telefonumda açılmıyor" da, "iş arkadaşım bağlantımı açamıyor" da buradan gelir.
127.0.0.1 ve ::1 nedir?
127.0.0.1 ve ::1, localhost'un karşılık geldiği geri döngü adresleridir; ilki IPv4'te, ikincisi IPv6'da kullanılır. Geri döngü adresi (loopback address), trafiği geri döngü arayüzü denen sanal bir ağ arayüzüne gönderir; bu arayüz trafiği doğrudan aynı cihaza geri verir.
IPv4'te bu işe koca bir blok ayrılmıştır. 1989 tarihli ana makine gereksinimleri belgesi RFC 1122, 127 ile başlayan her adresi "ana makine içi geri döngü adresi" olarak tanımlamış ve bu adreslerin ana makinenin dışında görünmemesi gerektiğini yazmıştır. RFC 6890'daki özel amaçlı adresler kaydı 127.0.0.0/8 bloğunu bugün de "Loopback" diye listeler ve "yönlendirilemez", "genel değil" diye işaretler: yönlendiriciler bu adresleri başka bir ağa asla aktarmaz.
Blok 127.0.0.0 ile 127.255.255.255 arasındaki yaklaşık 16,7 milyon adresi kapsar ve hepsi cihazın içinde geri döner: Windows 11 test makinemizde ping 127.45.6.7 komutu da 127.0.0.1 gibi yanıt verdi. IPv6'da ise tek bir geri döngü adresi vardır, ::1; RFC 4291, bu adrese gönderilmiş bir paket dışarıdan, bir ağ üzerinden gelirse atılmasını şart koşar.
Localhost'a giden bir istek nasıl yol alır?
Localhost isteği her web isteğiyle aynı adımlardan geçer, ama her adım cihazınızın içinde gerçekleşir. Tarayıcıya localhost:3000 yazdığınızda sırasıyla şunlar olur:
- Tarayıcı adresi sorar. İşletim sistemi
localhostadını,example.comiçin yapacağı gibi bir adrese çevirmelidir. - Sistem ağa sormadan yanıt verir. Ad çözümleyiciler localhost'u kendileri tanır; Linux ve macOS ayrıca hosts dosyasında
127.0.0.1 localhostgibi bir satır tutar. Hosts dosyası, adları DNS'e sorulmadan önce adreslere eşleyen küçük bir metin dosyasıdır (hosts dosyası nerede, nasıl düzenlenir). Windows 11'deki curl testimizdelocalhosthem::1hem127.0.0.1olarak çözümlendi. - Paket geri döngü arayüzüne gider. Sistem paketi Wi-Fi ya da Ethernet bağdaştırıcısına değil, arkasında kablo olmayan sanal bir arayüze verir. Modeminize hiçbir şey ulaşmaz.
- Sistem 3000 numaralı portta bir program arar. Bu portu dinleyen bir program varsa istek ona gider. Yoksa sistem bağlantıyı hemen reddeder.
- Yanıt aynı yoldan, makineden çıkmadan geri gelir.
Ad iki adrese çözümlendiği için bir istemci önce ::1 adresini deneyip sonra 127.0.0.1 adresine geçebilir; test sunucumuz yalnız 127.0.0.1 adresini dinlerken curl tam olarak bunu yaptı. İkinci adrese geçmeyen bir istemci ise sunucu çalıştığı hâlde bağlantı reddi alır.
Localhost:3000 ne anlama gelir?
localhost:3000, "bu cihazda 3000 numaralı portu dinleyen program" demektir. Port, sisteme bir bağlantıyı hangi programın alacağını söyleyen 0 ile 65.535 arasındaki bir sayıdır: IP adresi cihazı, port da o cihazdaki programı bulur.
En çok aranan sayılar, yaygın geliştirme araçlarının varsayılan portlarıdır:
- 3000: Next.js'teki
next devkomutunun varsayılan portu; Node.js eğitimlerinde de sık kullanılır. - 5173: Vite geliştirme sunucusunun varsayılan portu.
- 8000: Python'un yerleşik web sunucusunun (
python -m http.server) varsayılan portu. - 8080: web trafiği için kayıtlı alternatif port; birçok yerel sunucu ve proxy bu portu kullanır.
Hiçbir şey başlatmadıysanız bu portları dinleyen bir program yoktur ve sayfa açılmaz. 8080'in neden hem proxy'lerde hem geliştirme sunucularında kullanıldığını ve bir portu kullanan programı nasıl bulacağınızı 8080 Portu Nedir, Ne İşe Yarar? yazısında anlattık.
Port, tarayıcının güvenlik kuralları için de önemlidir. Tarayıcı, protokolü, adı ve portu aynı olan adresleri tek bir köken (origin) sayar; bu yüzden yalnız portu farklı olan iki adres farklı kökendir. localhost:5173 üzerindeki bir sayfanın localhost:3000 üzerindeki bir API'yi çağırması da kökenler arası bir istektir ve API'nin buna CORS başlıklarıyla, yani hangi kökenlere izin verdiğini söyleyen yanıt satırlarıyla izin vermesi gerekir.
Localhost, 127.0.0.1, 0.0.0.0 ve IP adresiniz arasındaki farklar
Bu adresler terminalde birbirine benzer, ama her birine erişebilenler çok farklıdır:
| Adres | Anlamı | Kim erişebilir? |
|---|---|---|
localhost | Bu cihazın adı | Yalnız bu cihaz |
127.0.0.1 | IPv4 geri döngü adresi | Yalnız bu cihaz |
::1 | IPv6 geri döngü adresi | Yalnız bu cihaz |
0.0.0.0 | Sunucu için: cihazın bütün adresleri | Güvenlik duvarı izin verirse diğer cihazlar da |
192.168.1.20 (örnek) | Cihazın ev ağındaki adresi | Aynı ağdaki cihazlar |
| Genel IP adresi | Modeminizin internetteki adresi | İnternet, yalnız modem bir portu yönlendirirse |
0.0.0.0 bir hedef değil, bir dinleme ayarıdır: bu adresi dinleyen bir sunucu, cihazın sahip olduğu her adresten gelen bağlantıyı kabul eder. Next.js'in geliştirme sunucusu ve Python'un yerleşik sunucusu varsayılan olarak bütün adresleri dinler; Vite ise --host eklemediğiniz sürece localhost'ta kalır.
Localhost neden bağlanmayı reddeder?
"localhost bağlanmayı reddetti" mesajı, tarayıcının kendi bilgisayarınıza ulaştığını ama o portta bağlantıyı kabul eden bir program bulunmadığını gösterir. Türkçe Chrome'da sayfanın başında "Bu siteye ulaşılamıyor" yazar; altında "localhost bağlanmayı reddetti." satırı ve ERR_CONNECTION_REFUSED kodu görünür.
Genellikle geliştirme sunucusu çalışmıyordur, başka bir portta çalışıyordur ya da diğer geri döngü adresini dinliyordur. Her durum için yapılacak kontrolleri err_connection_refused Hatası Nedir, Nasıl Çözülür? yazısında bulabilirsiniz.
Tarayıcılar localhost'u neden güvenli bağlam sayar?
Geri döngü adresine giden trafik cihazdan hiç çıkmadığı için tarayıcılar http://localhost adresini, sertifika olmasa da HTTPS sayfası gibi değerlendirir. Güvenli bağlam (secure context), tarayıcının hassas özellikleri açacak kadar güvendiği sayfadır; service worker'lar (sayfa kapalıyken de çalışabilen site betikleri), konum bilgisi ya da getUserMedia() ile kamera erişimi bu tür özelliklerdir.
MDN'nin güvenli bağlam rehberi bu ayrıcalığın tanındığı adresleri sayar: localhost, .localhost ile biten adlar, 127.0.0.0/8 bloğu ve ::1. Chromium 145 ile yaptığımız testte window.isSecureContext hem http://localhost:3000 hem http://127.0.0.1:3000 adresinde true değerini verdi.
Bu istisna cihazın sınırında biter. Aynı uygulama telefonunuzdan, bilgisayarın ev ağındaki adresiyle düz http:// üzerinden açıldığında güvenli bağlam sayılmaz; localhost'ta çalışan bir özellik orada çalışmayabilir.
Localhost güvenli mi, başkaları erişebilir mi?
Ağınızdaki ya da internetteki hiç kimse sizin 127.0.0.1 ya da ::1 adresinize bağlanamaz: yönlendiriciler bu adresleri aktarmaz ve başka her cihazda bu adresler o cihazın kendisidir. Yalnız localhost'u dinleyen bir programa ancak kendi bilgisayarınızdaki yazılımlar ulaşabilir.
Riskler başka üç yerdedir:
- Bütün adresleri dinleyen programlar.
0.0.0.0adresini dinleyen bir sunucuya ev ağınızdan, modem o portu yönlendiriyorsa internetten de erişilebilir. Python'un yerleşik sunucusu,--bind 127.0.0.1eklemezseniz böyle çalışır. - Ziyaret ettiğiniz siteler. Bir sayfanın betikleri tarayıcınızda çalışır ve localhost'a istek göndermeyi deneyebilir. Chrome'un yeni sürümleri önce sizden izin ister; CORS da yerel program izin vermedikçe sayfanın yerel yanıtı okumasını engeller.
- Bilgisayarınızda zaten çalışan yazılımlar. Makinedeki her program, kötü amaçlı yazılımlar da dahil, localhost'la konuşabilir; bu yüzden yerel veritabanlarını ve yönetim panellerini de şifreyle koruyun.
Localhost'a nasıl ping atılır?
Ping komutu bir adrese küçük test paketleri gönderir ve yanıtların ne kadar sürede döndüğünü ölçer. Windows'ta Komut İstemi'ni ya da PowerShell'i, macOS ve Linux'ta Terminal'i açıp şunu yazın:
ping localhostAşağıdaki çıktı Windows 11 test makinemizden; bilgisayarın adını MY-PC ile değiştirdik. Satırların dili Windows'unuzun diline göre değişebilir, adresler aynı kalır:
Pinging MY-PC [::1] with 32 bytes of data:
Reply from ::1: time<1ms
Reply from ::1: time<1ms
Reply from ::1: time<1ms
Reply from ::1: time<1ms
Ping statistics for ::1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0msWindows ilk satırda "localhost" sözcüğünü değil, bilgisayarın kendi adını yazar. Yanıtlar ::1 adresinden geldi, çünkü Windows önce IPv6'yı kullandı; ping -4 localhost komutu IPv4'ü zorlar ve yanıt 127.0.0.1 adresinden gelir. Bütün süreler bir milisaniyenin altında kaldı, çünkü paketler makineden hiç çıkmadı.
macOS ve Linux'ta ping, siz Ctrl+C'ye basana kadar devam eder; ping -c 4 localhost dört yanıttan sonra durur. ping localhost başarısız olursa sorun modemde ya da internet sağlayıcınızda değil, bilgisayarın kendisindedir; örneğin hosts dosyası localhost'u başka bir adrese yönlendiriyor olabilir.
Localhost ve proxy: yerel trafik neden proxy'ye gitmemeli?
İnternetteki bir proxy sizin localhost'unuza ulaşamaz, çünkü proxy sunucusu için localhost kendisi demektir. Proxy ayarlarında yerel adresler için istisna bulunmasının nedeni budur.
Windows'ta Ayarlar > Ağ ve internet > Proxy sayfasındaki el ile proxy kurulumunda iki ayar vardır: Microsoft'un işaretli bırakılmasını önerdiği Yerel (intranet) adresler için ara sunucuyu kullanma kutusu ve localhost ile 127.0.0.1 adreslerini kendiniz ekleyebileceğiniz özel durum listesi. Chrome ise özel bir atlama kuralıyla başlatılmadıkça localhost'u ve geri döngü adreslerini hiçbir zaman proxy'ye göndermez.
Komut satırı araçları bunu sizin yerinize yapmayabilir. curl 8.22.0 ile yaptığımız testte http_proxy değişkeni tanımlıyken http://localhost:3000 isteği proxy'ye gitti ve zaman aşımına uğradı; NO_PROXY=localhost,127.0.0.1,::1 eklenince istek doğrudan yerel programa ulaştı. curl'ün proxy ortam değişkenleri belgesi bu değişkenin virgülle ayrılmış ad ve adres listesi aldığını anlatır.
Localhost işin öbür tarafında da karşınıza çıkar: hata ayıklama proxy'leri kendi bilgisayarınızda 127.0.0.1:8080 gibi bir adreste çalışır ve tarayıcının proxy ayarı bu adresi gösterir. Betikleriniz dış trafiğini Residential Proxy gibi uzak bir hizmet üzerinden gönderiyorsa yerel adları NO_PROXY içinde tutun; kendi API'nize giden çağrılar makinede kalsın.
Localhost ile nerede karşılaşırsınız?
- Web geliştirme. Geliştirme sunucuları başlarken bir localhost adresi yazar; siteyi önce orada denersiniz.
- Yerel veritabanları ve yönetim araçları. Kendi kullanımınız için kurduğunuz bir veritabanı yalnız
127.0.0.1adresini dinleyebilir; başka makineler ona ulaşamaz. - Masaüstü uygulamalarında oturum açma. Bazı uygulamalar girişi, tarayıcınızı uygulamanın kendisinin dinlediği
http://127.0.0.1:51004/...gibi bir adrese göndererek tamamlar; RFC 8252 bu yöntemi, uygulamaların hesabınıza şifrenizi görmeden erişmesini sağlayan OAuth standardı için tarif eder. - Modeminizin cihaz listesi. Kendine ait bir ad bildirmeyen bir cihaz orada "localhost" diye görünebilir.
Sık yapılan hatalar
- Bilgisayara ulaşmak için telefonda localhost'u açmak. Telefonda localhost telefonun kendisidir; bilgisayarın ev ağındaki adresini kullanın.
- Localhost bağlantısı paylaşmak. İş arkadaşınıza gönderdiğiniz
http://localhost:3000sizin değil, onun bilgisayarını açar. - Uygulamayı yalnız siz kullanacakken
0.0.0.0adresini dinlemek. Başka bir cihazın erişmesi gerekmiyorsa127.0.0.1adresine bağlayın. - Yerel trafiği uzak bir proxy'ye göndermek. İstisna yoksa istek, makinenizi göremeyen proxy'ye gider.
- Hosts dosyasında localhost'u başka bir adrese yönlendirmek. Programlar onun geri döngü adresi olmasını bekler ve değilse beklenmedik biçimde bozulur.
Karar rehberi
| İhtiyacınız | Ne yapmalı? |
|---|---|
| Yeni başlattığınız projeyi açmak | Geliştirme sunucusunun yazdığı adresi kullanın |
| "localhost bağlanmayı reddetti" | Sunucuyu başlatın, portu kontrol edin, aynı portla 127.0.0.1 adresini deneyin |
| Siteyi telefonunuzdan denemek | Sunucuyu ağı dinleyecek şekilde başlatın, bilgisayarın yerel IP'sini açın |
| Yerel bir aracı gizli tutmak | 127.0.0.1 adresine bağlayın ve şifreyle koruyun |
| Bilgisayarın kendi ağ yazılımını sınamak | ping localhost komutunu çalıştırın |
| Betiklerde proxy kullanırken yerel çağrıları korumak | NO_PROXY içine localhost,127.0.0.1,::1 yazın |
Sıkça sorulan sorular
Localhost:3000 nedir?
Kendi cihazınızda 3000 numaralı portu dinleyen programdır; çoğu zaman bir geliştirme sunucusudur. Next.js varsayılan olarak 3000 portunu kullanır, bu yüzden adres genellikle bir başlatma komutu çalıştırdıktan sonra karşınıza çıkar. O portta çalışan bir program yoksa tarayıcı "localhost bağlanmayı reddetti" der.
Localhost benim IP adresimle aynı mı?
Hayır. Localhost, yalnız sizin cihazınızın kullanabildiği ve her cihazda aynı olan geri döngü adresidir: 127.0.0.1 ya da ::1. 192.168.1.20 gibi ev ağındaki adresiniz diğer cihazların size ulaşmasını sağlar; genel IP adresiniz ise sitelerin gördüğü adrestir.
Bir site benim localhost'uma erişebilir mi?
Kendi sunucusundan erişemez, ama açtığınız sayfa tarayıcınızda betik çalıştırır ve bu betikler localhost'a istek göndermeyi deneyebilir. Chrome, 142. sürümden beri herkese açık bir site yerel ağ ya da geri döngü adreslerine ulaşmadan önce sizden izin ister (Chrome'un Local Network Access duyurusu).
Modemim neden localhost adlı bir cihaz gösteriyor?
Modem her cihazı, cihazın DHCP ile adres isterken gönderdiği adla listeler. Bazı cihazlara hiç ad verilmez ve bunlar varsayılan bir ad gönderir; Linux tabanlı birçok sistemde bu varsayılan ad localhost olur. Bu, ağınızdaki gerçek bir cihazdır, bilgisayarınızın geri döngü adresi değildir; MAC adresini kendi cihazlarınızınkiyle karşılaştırın, tanıyamıyorsanız Wi-Fi şifresini değiştirin.
Localhost'u telefonumdan nasıl açarım?
"localhost" sözcüğüyle açamazsınız, çünkü telefonda bu sözcük telefonun kendisi demektir. Telefonu aynı Wi-Fi ağına bağlayın, geliştirme sunucusunu ağı dinleyecek şekilde başlatın (Vite için --host gerekir) ve bilgisayarın ev ağındaki adresini portla birlikte açın, örneğin http://192.168.1.20:5173. Bilgisayarın güvenlik duvarı bu bağlantıya izin vermelidir.
Localhost internet bağlantısı olmadan çalışır mı?
Evet. Localhost trafiği cihazdan hiç çıkmaz; yerel bir sunucu, yerel bir veritabanı ve ping localhost Wi-Fi kapalıyken de çalışır.
Özet
Localhost, her cihazın kendisi için kullandığı addır; arkasında 127.0.0.1 ve ::1 geri döngü adresleri durur ve oraya giden trafik makinenin içinde geri döner. Programı port numarası seçer; localhost:3000 bu yüzden geliştirme sunucunuzu açar. Diğer cihazlar sizin localhost'unuza ulaşamaz; asıl riskler bütün adresleri dinleyen programlar ve uzak bir proxy'ye gönderilen yerel isteklerdir. Betikleriniz dış trafiği proxy üzerinden gönderiyorsa localhost'u istisnalarda tutun ve seçenekleri proxy ürünleri sayfamızda karşılaştırın.




