Apa itu localhost? Loopback, 127.0.0.1 dan ::1
localhost biasanya merujuk kepada mesin yang membuat permintaan itu sendiri. Alamatnya yang biasa ialah IPv4 127.0.0.1 dan IPv6 ::1. Trafik ke alamat ini dikendalikan di dalam tindanan rangkaian mesin tersebut dan tidak melalui penghala rumah ke Internet. Oleh itu, ujian localhost hanya menjawab satu soalan yang sempit: adakah perkhidmatan berfungsi secara setempat?
Julat alamat loopback
IPv4 mengkhaskan keseluruhan blok 127.0.0.0/8 untuk loopback, walaupun contoh hampir selalu menggunakan 127.0.0.1. IPv6 mempunyai alamat khas ::1/128. Peranan kedua-duanya diterangkan dalam RFC 1122 dan RFC 4291. Nama localhost biasanya diselesaikan kepada alamat ini melalui konfigurasi sistem setempat. Sesuatu aplikasi mungkin mencuba IPv4 atau IPv6 dahulu, jadi jika satu berjaya dan satu lagi gagal, itu tidak semestinya bermakna seluruh rangkaian rosak.
Contoh pelayan web setempat
Seorang pembangun memulakan aplikasi yang mendengar pada 127.0.0.1:8000 dan membuka http://localhost:8000 pada komputer yang sama. Ini ujian yang berguna tanpa mendedahkan aplikasi kepada peranti lain. Jika telefon dalam Wi-Fi yang sama membuka localhost:8000, telefon itu cuba menyambung kepada dirinya sendiri, bukan komputer pembangun. Untuk mencapai aplikasi dari telefon, perkhidmatan mesti mendengar pada antara muka rangkaian yang sesuai, tembok apinya mesti membenarkan sambungan, dan telefon mesti menggunakan alamat LAN komputer tersebut. Jangan terbitkan pelayan pembangunan ke Internet yang lebih luas tanpa perlindungan yang sewajarnya.
Alamat pendengaran berbanding akses dari luar
Perkhidmatan yang diikat hanya pada 127.0.0.1 atau ::1 tidak boleh dicapai secara langsung dari peranti lain. Mengikat pada 0.0.0.0 dalam IPv4 secara amnya bermaksud mendengar pada semua antara muka IPv4 yang berkenaan, tetapi masih tidak menjamin akses dari luar. Tembok api, bekas (container), NAT dan peraturan penyedia mungkin menyekat laluan. Tingkah laku serupa bagi IPv6 bergantung pada aplikasi dan tetapan sistem. Semakan port terbuka 2IP tidak dapat mengesahkan bahawa perkhidmatan yang hanya mendengar pada loopback berfungsi secara setempat. Uji secara setempat dahulu, kemudian uji setiap sempadan rangkaian secara berasingan.
Kesilapan biasa pada bekas atau pelayan
Di dalam bekas atau pada pelayan jauh, localhost bermaksud bekas atau pelayan itu sendiri, bukan komputer riba anda. Oleh itu, rentetan sambungan pangkalan data yang menghala ke localhost boleh berfungsi semasa pembangunan setempat tetapi gagal selepas penggunaan apabila pangkalan data berada pada mesin lain. Untuk diagnosis, kenal pasti di mana klien berjalan, kemudian semak nama hos sasaran, port dan alamat yang didengari oleh perkhidmatan. Jangan gantikan localhost dengan IP awam tanpa menilai risiko pendedahan. Komunikasi dalaman selalunya memerlukan alamat rangkaian persendirian atau nama hos khusus bagi perkhidmatan itu.