Pertanyaan Apa perbedaan antara alamat IP 0.0.0.0 dan 127.0.0.1?


Saya tahu bahwa 127.0.0.1 ~ 127.255.255.254 adalah alamat IP loopback untuk sebagian besar sistem operasi modern, dan alamat IP ini dapat digunakan untuk merujuk ke komputer kita sendiri.

Tapi apa itu 0.0.0.0? Sepertinya itu juga mengacu pada komputer lokal, jadi apa perbedaan?

Dan, bisakah Anda menjelaskan koneksi IP berikut untuk saya:

screenshot of netstat -an output


207
2017-10-25 07:22




Juga lihat pertanyaan ini, karena memberikan rincian seperti apa 0.0.0.0 (dan tidak): serverfault.com/questions/228629/… - Ellie Kesselman
Sistem operasi modern akan digunakan ::1 sebagai alamat loopback. - kasperd


Jawaban:


Satu-satunya hal adalah Anda tidak mengatakan "semua alamat harus memiliki akses" - yang dilakukan di firewall Anda dan / atau perangkat lunak server dan / atau lapisan keamanan lainnya seperti tcpwrappers.

0.0.0.0, dalam konteks ini, berarti "semua alamat IP pada mesin lokal" (mungkin sebenarnya, "semua alamat IPv4 pada mesin lokal"). Jadi, jika mesin webserver Anda memiliki dua alamat IP, 192.168.1.1 dan 10.1.2.1, dan Anda mengizinkan daemon webserver seperti apache untuk mendengarkan pada 0.0.0.0, itu akan dapat dijangkau di kedua alamat IP tersebut. Tetapi hanya untuk apa yang dapat menghubungi alamat IP dan port web.

Perhatikan bahwa, dalam konteks yang berbeda (routing) 0.0.0.0 biasanya berarti rute default (rute ke "sisa" internet, selain dari rute di jaringan lokal Anda, dll.).


143
2017-10-25 08:55



jadi maksudmu soket webserver itu terikat ke alamat yang tersedia ketika mendengarkan 0.0.0.0? - onmyway133
0.0.0.0 berarti rute default hanya jika disertai awalan /0 (atau netmask 0.0.0.0) - minmaxavg
Untuk dicatat: jika beberapa proses mendengarkan pada 0.0.0.0, itu akan dapat dicapai di alamat IP dari semua antarmuka jaringan mesin yang menyertakan alamat antarmuka pengulangan yang saat ini terkonfigurasi. Tetapi jika proses hanya mendengarkan port <portNumber> dari alamat loopback, mis. 127.0.0.1, dan kemudian prosesnya hanya dapat dicapai dari mesin yang sama oleh menargetkan tepatnya 127.0.0.1: <portNumber>. Mencoba ini alat python  bermain! - Gab是好人


Ketika sebuah layanan mendengarkan pada 0.0.0.0 ini berarti layanan mendengarkan pada semua antarmuka jaringan yang dikonfigurasi, ketika mendengarkan 127.0.0.1 layanan hanya terikat ke antarmuka loopback (hanya tersedia pada komputer lokal)


75
2017-10-25 07:33





Alamat IP 0.0.0.0 dapat memiliki arti yang sangat berbeda, tergantung di mana itu digunakan.

  • Ini bukan alamat yang valid untuk diberikan ke antarmuka jaringan yang sebenarnya, bersama dengan alamat lain di subnet 0.0.0.0/8 (yaitu alamat apa pun yang dimulai dengan 0.).
  • Ini tidak dapat digunakan sebagai alamat sumber pada paket IP apa pun, kecuali ini terjadi ketika komputer masih tidak tahu alamat IP-nya sendiri dan mencoba untuk mendapatkannya (contoh klasik: DHCP).
  • Jika digunakan dalam tabel routing, itu mengidentifikasi gateway default; rute ke 0.0.0.0 adalah rute default, yaitu rute yang digunakan saat tidak ada rute yang lebih spesifik yang tersedia ke alamat tujuan.
  • Terakhir, bila dilihat pada output dari netstat perintah (yang adalah apa yang Anda minta), itu berarti bahwa soket yang diberikan mendengarkan pada semua alamat IP yang tersedia yang dimiliki komputer; saat komputer memiliki lebih dari satu alamat IP, soket hanya dapat terikat ke alamat tertentu dan pasangan port, atau ke port dan semua alamat; jika Anda melihat alamat IP di sana, itu berarti bahwa soket hanya mendengarkan pada port itu dan alamat khusus itu; jika kamu melihat 0.0.0.0, itu berarti mendengarkan di port itu semua alamat mesin, termasuk loopback satu (127.0.0.1).

38
2017-08-12 06:45



Apa artinya jika Anda meringkuk 0.0.0.0? Apakah curl benar-benar menghubungi dan mengirim permintaan melalui antarmuka yang tersedia? Bagaimana cara mengetahui antarmuka mana yang tepat? Saya mengerti bagaimana server dapat mendengarkan di semua antarmuka, tetapi apa mekanisme bagi klien untuk meminta semua antarmuka seperti ketika saya melakukan curl 0.0.0.0 atau curl [::]. - CMCDragonkai
OS kemungkinan besar akan memblokir Anda dari melakukan itu, karena tidak masuk akal dari perspektif jaringan. Mencoba ping 0.0.0.0 pada sistem Windows menghasilkan pesan kesalahan. - Massimo
curl 0.0.0.0 hasil connection refuseddi Arch Linux. ping 0.0.0.0, di sisi lain, tampaknya menjadi alias untuk ping 127.0.0.1 yang berfungsi dengan baik. - Matthias Braun
@MatthiasBraun connection refused mungkin karena curl secara default coba sambungkan ke port 80 / tcp. Coba cari port terbuka Anda dengan nmap -sV localhost dan kemudian misalnya jika 631 / tcp: curl 0.0.0.0:631. - Pablo Bianchi


Jawaban Lee B benar, tetapi inilah beberapa RFC yang relevan jika Anda tertarik.

0.0.0.0:

Dari RFC1122, Bagian 3.1.2.3:

Kami sekarang meringkas kasus-kasus khusus yang penting untuk Kelas A, B,               dan C alamat IP, menggunakan notasi berikut untuk IP               alamat:

            { <Network-number>, <Host-number> }

        or
            { <Network-number>, <Subnet-number>, <Host-number> }

...

          (a)  { 0, 0 }

             This host on this network.  MUST NOT be sent, except as
             a source address as part of an initialization procedure
             by which the host learns its own IP address.

Hanya itu, "host ini di jaringan ini" ... sebagai jawaban Lee B menyatakan ini diterjemahkan ke semua alamat IP yang tersedia di host Anda. Hosting layanan pada 0.0.0.0 akan secara otomatis meng-host layanan tersebut pada setiap antarmuka yang dapat dialamatkan.

127.0.0.1:

Dari RFC5735:

127.0.0.0/8 - Blok ini ditugaskan untuk digunakan sebagai alamat loopback host Internet. Sebuah datagram yang dikirim oleh protokol tingkat yang lebih tinggi ke alamat di mana saja dalam blok ini kembali ke dalam host. Ini biasanya diimplementasikan hanya menggunakan 127.0.0.1/32 untuk loopback. Sebagaimana dijelaskan dalam [RFC1122], Bagian 3.2.1.3, alamat di dalam seluruh 127.0.0.0/8 blok tidak secara sah muncul di jaringan mana pun.

Perbedaan antara 0.0.0.0 dan alamat loopback 127.0.0.1 adalah bahwa alamat loopback dirancang untuk memungkinkan antarmuka IP berfungsi penuh dalam host itu sendiri, terlepas dari apa yang tersisa dari pengaturan jaringan, jika ada. Lalu lintas yang dikirim ke perangkat loopback segera diterima di atasnya. Ini tidak begitu berarti bahwa jaringan loopback "merujuk" ke host Anda sendiri ... itu lebih seperti Anda memiliki segmen jaringan mini di host Anda yang perangkat, proses dan soket dan dapat membuka dan menyambung.


26
2017-08-12 06:20





Dalam istilah sederhana: Mendengarkan di 0.0.0.0 berarti mendengarkan dari mana saja yang memiliki akses jaringan ke komputer ini, misalnya, dari komputer ini, dari jaringan lokal atau dari Internet, sambil mendengarkan 127.0.0.1 berarti hanya mendengarkan dari komputer ini


3
2017-12-28 10:28