Perbedaan antara localhost dan alamat ip

16

Jika mengikat socket dengan Python ke localhost, 8200 ini dapat diakses melalui http: // localhost: 8200 / . tetapi tidak http: // xxxx: 8200 /

Jika mengikat socket dengan Python ke xxxx, 8200, machinename, 8200 ini dapat diakses melalui http: // xxxx: 8200 / dan http: // machinename: 8200 / , tetapi tidak http: // localhost: 8200 /

Saya pikir localhost berarti 'mesin ini', dan menggunakannya akan 'loop kembali' ke alamat ip mesin, tetapi tampaknya ips berbeda.

Apakah 127.0.0.1 selalu merupakan alamat ip yang berbeda dengan alamat ip mesin?

memperbarui:

Saya mengerti bahwa angka sebenarnya berbeda, tetapi apa yang dilakukan loopback?

Misalnya, wikepedia mengatakan bahwa
'mengarahkan browser web ke URL http://127.0.0.1/ atau http: // localhost / akan mengakses situs web komputer itu sendiri'

tetapi situs web itu juga akan dapat diakses di xxxx, dan mungkin diatur dengan soket tunggal pada xxxx Jadi bagaimana kedua referensi bekerja?

kesimpulan:

Saya pikir saya akhirnya mengerti bahwa 127.0.0.1 dan xxxx bekerja seperti ini

--127.0.0.1 ==\
               >- Computer
--x.x.x.x   ==/

dan tidak

--127.0.0.1 ==\
--------------- x.x.x.x >- Computer

atau

--x.x.x.x ==\
--------------- 127.0.0.1 >- Computer

Terima kasih atas bantuannya

David
sumber
1
Anda menulis "adalah 127.0.0.1 selalu alamat ip yang berbeda dengan alamat ip mesin". Angka-angka di antara kedua titik itu berbeda, yaitu alamat IP yang berbeda. Pertanyaan aneh apa yang Anda tanyakan. Jika dengan alamat ip mesin, Anda berarti sesuatu selain 127.0.0.1 maka ya, itu akan menjadi alamat IP yang berbeda. Dan jika apa yang Anda sebut alamat IP mesin Anda adalah 192.168.0.1 (atau rentang lokal standar lainnya), maka Anda tidak perlu takut untuk mengatakannya. Anda dapat menulisnya, bukan xxxx Alamat 192 itu tidak akan ada di internet.
barlop
Referensi untuk keduanya berfungsi karena cara server web dikonfigurasi. Anda dapat memberi tahu server untuk mengikat semua alamat, atau hanya mendengarkan yang spesifik. Karena Loopback dan IP aktual adalah alamat yang berbeda, konfigurasi menentukan IP mana yang akan didengarkan. Karena localhost hanya entri host untuk 127.0.0.1, itu hanya akan berfungsi ketika server web terikat ke 127.0.0.1.
pengupas

Jawaban:

17

Untuk menjawab pertanyaan Anda.

127.0.0.1 bukan hanya alamat ip yang berbeda dengan alamat ip mesin, tetapi juga antarmuka yang berbeda. 127.0.0.1 seharusnya tidak terlihat di jaringan lokal. Ini adalah alamat IP internal khusus untuk adaptor loopback.

xxxx akan menjadi kartu ethernet Anda.

omong-omong 'localhost' hanyalah sebuah entri dalam file host Anda yang menunjuk ke 127.0.0.1

Jika Anda mengikat soket ke 127.0.0.1:8200 maka hanya klien yang menjalankan secara lokal yang dapat mengaksesnya dan hanya dengan http://127.0.0.1:8200 atau http: // localhost: 8200 (atau entri file dns atau host host) yang menunjuk ke 127.0.0.1).

Soket terikat ke xxxx: 8200 hanya akan tersedia melalui http: // xxxx: 8200 atau entri file dns atau host yang menunjuk ke sana.

Mengikat soket ke 127.0.0.1 tidak secara otomatis membuatnya tersedia pada antarmuka ethernet juga.

Itulah mengapa Anda tidak dapat terhubung ke xxxx: 8200

Anda dapat mengikat port 8200 ke semua antarmuka yang tersedia (0.0.0.0) kemudian akan berfungsi.

Matt H
sumber
Jadi apa yang dilakukan bit 'loopback'? Apa itu loopback? Saya pikir itu adalah cara untuk referensi alamat ip mesin, apa pun yang terjadi adalah 'yaitu 127.0.0.1 => xxxx
David
1
Antarmuka loopback adalah antarmuka virtual. Ini sering digunakan untuk memungkinkan program berbicara satu sama lain di mesin yang sama. Ini bukan cara untuk merujuk alamat IP mesin. 127.0.0.1 ADALAH alamat IP dari adaptor virtual loopback.
Matt H
1
Hal lain tentang adaptor loopback adalah karena itu virtual, sebenarnya tidak mengirimkan paket apa pun ke kartu jaringan.
Matt H
1
benar-benar sia-sia 4 jam tidak memahami konsep ini ... ternyata beberapa server web secara otomatis mengikat xxxx dan 127.0.0.1 untuk Anda yang menimbulkan kebingungan. Pertanyaan & jawaban yang bagus kawan. Thx =)
jrhee17
3

Misalnya, wikepedia mengatakan bahwa 'mengarahkan browser web ke URL http://127.0.0.1/ atau http: // localhost / akan mengakses situs web komputer itu sendiri'

Agak tidak akurat. Itu mungkin melakukannya. Sama baiknya, itu mungkin tidak memunculkan situs web apa pun dan bahkan mungkin untuk menampilkan situs web internal yang berbeda dari apa yang Anda dapatkan ketika Anda menggunakan alamat xxxx Anda.

127.0.0.1 menunjuk ke mesin Anda sendiri, tetapi itu tidak berarti itu akan berperilaku dengan cara yang sama setelah mencapai mesin Anda

Jika Anda menginginkan analogi non-teknis, Anda dapat menganggapnya pintu yang berbeda ke rumah Anda.

Keduanya menunjuk ke rumah yang sama tetapi mereka tidak sama. Dimungkinkan untuk setiap pintu untuk membawa Anda ke ruangan yang sama atau mereka dapat membawa Anda ke ruangan yang berbeda. Dimungkinkan juga untuk mengunci satu pintu dan bukan yang lain.

Saat Anda mengonfigurasi situs web, Anda menentukan alamat mana yang akan diikat dan seringkali jawabannya adalah semua alamat. (Itu setara dengan memiliki semua pintu membawa Anda ke satu ruangan)

Anda juga dapat menentukan situs web untuk mengikat satu alamat saja. (Itu sama dengan mengunci semua pintu kecuali satu.)

Jika Anda memiliki dua (atau lebih) situs web, Anda dapat mengikatnya ke alamat yang terpisah. (Itu setara dengan memiliki setiap pintu masuk ke kamar yang terpisah).

Contoh cara kerja kedua referensi, komputer Windows 7 saya telah menginstal IIS, ketika saya masuk ke IIS Manager dan klik kanan pada Situs Web Default, itu memberi saya pilihan menu 'Edit Bindings'. Memilih yang memunculkan daftar binding. Saya hanya punya satu, tetapi untuk Alamat IP memiliki * yang berarti IIS mendengarkan semua alamat ip saya.

sgmoore
sumber
Analogi yang bagus! Terima kasih banyak ! Saya baru saja membuat persidangan. Saya berhasil diikat 127.0.0.1:5000ke situs web dan diikat 192.168.1.104:5000ke situs lain. Kuncinya adalah itu address:portberarti ruangan (layanan) berbeda di rumah (komputer).
Rick
1

Setiap alamat IP pada sistem bersifat independen dan dapat diikat oleh soket secara terpisah, dengan pengecualian alamat khusus 0.0.0.0 yang menunjukkan ke OS untuk mengikat soket ke semua antarmuka.

Ignacio Vazquez-Abrams
sumber
1
Tetapi 127.0.0.1 juga merupakan alamat khusus, sebagai pilihan paling umum untuk antarmuka loopback. Apa alamat loop itu kembali?
David
Itu tidak menjadikannya "istimewa", itu hanya membuatnya "alamat pada antarmuka loopback" (kecuali jika Anda mengatakan "setiap alamat istimewa dengan caranya sendiri", tetapi jangan pergi ke sana). Itu antarmuka yang melakukan perulangan, bukan alamat.
Ignacio Vazquez-Abrams