Apa perbedaan antara 127.0.0.1 dan 0.0.0.0?

235

Saya mengerti bahwa 127.0.0.1 menunjuk ke localhost, dan begitu juga 0.0.0.0 (koreksi saya jika saya salah). Jadi, apa perbedaan antara 127.0.0.1 dan 0.0.0.0?

Sagnik Sarkar
sumber
1
Anda mungkin tertarik dengan diskusi pelacak bug Chrome ini tentang cara menangani 0.0.0.0input alamat.
Jeremy Banks
6
Dalam sebagian besar konfigurasi server berarti 0,0.0.0, dengarkan SEMUA alamat! Ini akan membuat server Anda tersedia di internet. Jika Anda melakukannya untuk beberapa server lokal tanpa keamanan (hanya mendengarkan di localhost, kan?) Itu buruk. Jangan lakukan itu!
Josef
56
Jawab pertanyaan Anda secara harfiah, perbedaannya adalah 2130706433.
Shaz
2
@ Ya ampun, Anda adalah salah satu orang yang memasang sistem yang sama sekali tidak aman, karena firewall akan memperbaiki semuanya? Biasanya, sistem ini kemudian dapat ditemukan dengan shodan.io : 3 Level berikutnya dari pola pikir ini adalah "kita benar-benar dapat menggunakan instalasi WordPress 5 tahun, kita mendapat WAF". Saya tidak merekomendasikan siapa pun menyusuri jalan ini!
Josef
2
@Shaz Saya ingin meningkatkan komentar Anda, tetapi karena saat ini di 42 saya tidak bisa melakukannya ...
Jenny D

Jawaban:

221

Apa perbedaan antara 127.0.0.1 dan 0.0.0.0?

  • 127.0.0.1 adalah alamat loopback (juga dikenal sebagai localhost).

  • 0.0.0.0 adalah meta-address non-routable yang digunakan untuk menunjuk target yang tidak valid, tidak diketahui atau tidak berlaku (tidak ada placeholder alamat tertentu).

    Dalam konteks entri rute, biasanya berarti rute default.

    Dalam konteks server, 0.0.0.0 berarti "semua alamat IPv4 pada mesin lokal". Jika sebuah host memiliki dua alamat ip, 192.168.1.1 dan 10.1.2.1, dan sebuah server yang berjalan di host mendengarkan pada 0.0.0.0, itu akan dapat dijangkau di kedua IP tersebut.


Apa alamat IP 127.0.0.1?

127.0.0.1 adalah alamat loopback Internet protocol (IP) juga disebut sebagai "localhost." Alamat tersebut digunakan untuk membuat koneksi IP ke mesin atau komputer yang sama yang digunakan oleh pengguna akhir.

Konvensi yang sama didefinisikan untuk komputer yang mendukung pengalamatan IPv6 menggunakan konotasi :: 1. Membangun koneksi menggunakan alamat 127.0.0.1 adalah praktik yang paling umum; namun, menggunakan alamat IP apa pun dalam kisaran 127 .. . * akan berfungsi dengan cara yang sama atau serupa. Konstruk loopback memberikan komputer atau perangkat yang mampu jaringan kemampuan untuk memvalidasi atau membuat tumpukan IP pada mesin.

Sumber: 127.0.0.1 - Apa Kegunaannya dan Mengapa Penting?


Alamat Khusus

Kelas A nomor jaringan 127 ditugaskan fungsi "loopback", yaitu, datagram yang dikirim oleh protokol tingkat yang lebih tinggi ke alamat jaringan 127 harus loop kembali ke dalam host. Tidak ada datagram "dikirim" ke alamat jaringan 127 yang akan pernah muncul di jaringan mana saja di mana saja.

Sumber: Nomor Jaringan


Jika seluruh kelas A, apa gunanya nilai arbitrer lainnya untuk tiga oktet terakhir?

Tujuan dari rentang loopback adalah pengujian implementasi protokol TCP / IP pada sebuah host. Karena lapisan bawah dihubung pendek, mengirim ke alamat loopback memungkinkan lapisan yang lebih tinggi (IP dan di atasnya) diuji secara efektif tanpa kemungkinan masalah pada lapisan bawah yang bermanifestasi sendiri. 127.0.0.1 adalah alamat yang paling umum digunakan untuk tujuan pengujian.

Sumber: Alamat IP, Loopback dan Alamat Pribadi

Untuk informasi lebih lanjut, lihat https://askubuntu.com pertanyaan Apa itu perangkat loopback dan bagaimana cara menggunakannya? dan mengapa loopback alamat IP dari 127.0.0.1 ke 127.255.255.254? .


Apa alamat IP 0.0.0.0?

"0.0.0.0" adalah sintaksis alamat yang valid. Jadi itu harus diurai sebagai valid di mana pun alamat IP dalam notasi desimal bertitik tradisional diharapkan. Setelah diuraikan, dan dikonversi ke bentuk numerik yang bisa diterapkan, maka nilainya menentukan apa yang terjadi selanjutnya.

Nilai semua-nol memang memiliki arti khusus. Jadi itu "valid", tetapi memiliki arti yang mungkin tidak sesuai (dan dengan demikian diperlakukan sebagai tidak valid) untuk keadaan tertentu. Pada dasarnya ini adalah placeholder "tanpa alamat tertentu". Untuk hal-hal seperti pengikatan alamat koneksi jaringan, hasilnya dapat menetapkan alamat antarmuka yang sesuai untuk koneksi. Jika Anda menggunakannya untuk mengonfigurasi antarmuka, ia bisa menghapus alamat dari antarmuka. Itu tergantung pada konteks penggunaan untuk menentukan apa yang "tidak ada alamat tertentu" benar-benar lakukan.

Dalam konteks entri rute, biasanya berarti rute default . Itu terjadi sebagai akibat lebih dari topeng alamat, yang memilih bit untuk dibandingkan. Topeng "0.0.0.0" tidak memilih bit, sehingga pembandingan akan selalu berhasil. Jadi ketika rute seperti itu dikonfigurasi, selalu ada tempat untuk pergi paket (jika dikonfigurasi dengan tujuan yang valid).

Dalam beberapa kasus, hanya "0" juga akan berfungsi dan memiliki efek yang sama. Tetapi ini tidak dijamin. Formulir "0.0.0.0" adalah cara standar untuk mengatakan "tidak ada alamat tertentu" (dalam IPv6 yaitu ":: 0" atau hanya "::").

Sumber: Apa arti dari alamat IP 0.0.0.0


Dalam Protokol Internet versi 4 alamat 0.0.0.0 adalah meta-address non-routable yang digunakan untuk menunjuk target yang tidak valid, tidak diketahui atau tidak berlaku. Untuk memberikan makna khusus pada bagian data yang tidak valid adalah aplikasi pensinyalan in-band.

Dalam konteks server, 0.0.0.0 berarti "semua alamat IPv4 pada mesin lokal". Jika sebuah host memiliki dua alamat ip, 192.168.1.1 dan 10.1.2.1, dan sebuah server yang berjalan di host mendengarkan pada 0.0.0.0, itu akan dapat dijangkau di kedua IP tersebut.

Dalam konteks perutean, 0.0.0.0 biasanya berarti rute default, yaitu rute yang mengarah ke "sisa" internet alih-alih di suatu tempat di jaringan lokal.

Penggunaan meliputi:

  • Alamat yang diklaim oleh tuan rumah sebagai miliknya ketika belum ditetapkan alamatnya. Seperti ketika mengirim paket DHCPDISCOVER awal saat menggunakan DHCP.
  • Alamat yang ditetapkan oleh tuan rumah untuk dirinya sendiri ketika permintaan alamat melalui DHCP gagal, asalkan tumpukan IP tuan rumah mendukung hal ini. Penggunaan ini telah diganti dengan mekanisme APIPA dalam sistem operasi modern.
  • Cara untuk menentukan "host IPv4 sama sekali". Ini digunakan dengan cara ini ketika menentukan rute default.
  • Cara untuk secara eksplisit menentukan bahwa target tidak tersedia. 1
  • Cara untuk menentukan "alamat IPv4 sama sekali". Ini digunakan dengan cara ini ketika mengkonfigurasi server (yaitu saat mengikat soket pendengaran). Ini dikenal oleh pemrogram TCP sebagai INADDR_ANY. (ikat (2) mengikat ke alamat, bukan antarmuka.)

Di IPv6, alamat all-nol ditulis sebagai "::".

Sumber: 0.0.0.0


Penemuan / Permintaan DHCP

Ketika klien melakukan boot untuk pertama kalinya, dikatakan berada dalam kondisi Inisialisasi, dan mentransmisikan pesan DHCPDISCOVER pada subnet fisik lokal melalui port Protokol Datagram Pengguna (UDP) 67 (server BootP). Karena klien tidak memiliki cara untuk mengetahui subnet miliknya, DHCPDISCOVER adalah siaran semua subnet (alamat IP tujuan 255.255.255.255), dengan alamat IP sumber dari 0.0.0.0. Alamat IP sumber adalah 0.0.0.0, karena klien tidak memiliki alamat IP yang dikonfigurasi.Jika server DHCP ada pada subnet lokal ini dan dikonfigurasi dan beroperasi dengan benar, server DHCP akan mendengar siaran dan merespons dengan pesan DHCPOFFER. Jika server DHCP tidak ada pada subnet lokal, harus ada Agen Relay / BootP DHCP pada subnet lokal ini untuk meneruskan pesan DHCPDISCOVER ke subnet yang berisi server DHCP.

Agen relai ini dapat berupa host khusus (misalnya, Microsoft Windows Server), atau router (misalnya, router Cisco yang dikonfigurasi dengan pernyataan pembantu IP tingkat antarmuka).

...

Setelah klien menerima DHCPOFFER, ia merespons dengan pesan DHCPREQUEST, menunjukkan niatnya untuk menerima parameter dalam DHCPOFFER, dan beralih ke status Meminta. Klien dapat menerima beberapa pesan DHCPOFFER, satu dari setiap server DHCP yang menerima pesan DHCPDISCOVER asli. Klien memilih satu DHCPOFFER dan hanya menanggapi server DHCP itu, secara implisit menolak semua pesan DHCPOFFER lainnya. Klien mengidentifikasi server yang dipilih dengan mengisi bidang opsi Server Identifier dengan alamat IP server DHCP. DHCPREQUEST juga merupakan siaran, sehingga semua server DHCP yang mengirim DHCPOFFER akan melihat DHCPREQUEST, dan masing-masing akan tahu apakah DHCPOFFER-nya diterima atau ditolak. Opsi konfigurasi tambahan apa pun yang dibutuhkan klien akan dimasukkan dalam bidang opsi pesan DHCPREQUEST.Meskipun klien telah ditawari alamat IP, itu akan mengirim pesan DHCPREQUEST dengan alamat IP sumber 0,0.0.0. Saat ini, klien belum menerima verifikasi bahwa jelas menggunakan alamat IP.

...

Conversation Client-Server untuk Klien Mendapatkan Alamat DHCP Di mana Klien dan DHCP Server Berada di Subnet yang Sama

Masukkan deskripsi gambar di sini

Sumber: Memahami dan Mengatasi Masalah DHCP di Catalyst Switch atau Enterprise Networks


Rute Default

Dokumen ini menjelaskan cara mengkonfigurasi rute default, atau gateway dari upaya terakhir. Perintah IP ini digunakan:

  • ip default-gateway

  • ip default-network

  • dan ip route 0.0.0.0 0.0.0.0

ip route 0.0.0.0 0.0.0.0

Membuat rute statis ke jaringan 0.0.0.0 0.0.0.0 adalah cara lain untuk mengatur gateway pilihan terakhir pada router. Seperti halnya ip default-network command, menggunakan rute statis ke 0.0.0.0 tidak tergantung pada protokol routing apa pun. Namun, ip routing harus diaktifkan pada router.

Catatan: IGRP tidak mengerti rute ke 0.0.0.0. Oleh karena itu, ia tidak dapat menyebarkan rute default yang dibuat menggunakan perintah ip route 0.0.0.0 0.0.0.0. Gunakan perintah ip default-network untuk membuat IGRP menyebarkan rute default.

Sumber: Mengkonfigurasi Gateway dari Last Resort Menggunakan Perintah IP

DavidPostill
sumber
3
Dalam konteks server, 0.0.0.0 berarti "semua alamat IPv4 pada mesin lokal". Jika sebuah host memiliki dua alamat ip, 192.168.1.1 dan 10.1.2.1, dan sebuah server yang berjalan di host mendengarkan pada 0.0.0.0, itu akan dapat dijangkau di kedua IP tersebut. - Itu berhasil untuk saya
Rafael Eyng
112

Mereka tidak sama.

127.0.0.1 adalah bagian dari jaringan 127/8 yang dicadangkan dan menunjuk ke komputer yang sama.

0.0.0.0 adalah alamat IP khusus yang memiliki arti berbeda tergantung pada konteksnya.

Dalam Internet Protocol Version 4, alamat 0.0.0.0 adalah meta-address non-routable yang digunakan untuk menunjuk target yang tidak valid, tidak dikenal atau tidak dapat diterapkan. Untuk memberikan makna khusus pada bagian data yang tidak valid adalah aplikasi pensinyalan in-band.

Anda mungkin salah mengira 0.0.0.0 untuk 127.0.0.1 ketika Anda melihat netstat dan melihat alamat lokal mendengarkan sebagai 0.0.0.0, tetapi ini adalah cara yang berbeda 0.0.0.0 digunakan.

Dalam konteks server, 0.0.0.0 berarti "semua alamat IPv4 pada mesin lokal". Jika sebuah host memiliki dua alamat ip, 192.168.1.1 dan 10.1.2.1, dan sebuah server yang berjalan di host mendengarkan pada 0.0.0.0, itu akan dapat dijangkau di kedua IP tersebut.

Dalam konteks perutean, 0.0.0.0 biasanya berarti rute default, yaitu rute yang mengarah ke "sisa" internet alih-alih di suatu tempat di jaringan lokal.

https://en.wikipedia.org/wiki/0.0.0.0

Cristian Dobre
sumber
0.0.0.0kadang-kadang juga bisa menunjukkan siaran, artinya semua komputer di jaringan.
James Mertz
8
@ KronoS Saya pikir siaran adalah hal-hal seperti 255.255.255.255(atau lebih realistis seperti 192.168.1.255untuk jaringan lokal)
Nick T
1
@NickT Ah Anda benar :A special definition exists for the IP broadcast address 255.255.255.255. It is the broadcast address of the zero network or 0.0.0.0, which in Internet Protocol standards stands for this network, i.e. the local network. Transmission to this address is limited by definition, in that it is never forwarded by the routers connecting the local network to other networks.
James Mertz
@ Krono Anda mengacaukan alamat siaran dengan loopback. Loopback adalah 0.0.0.0 yang seperti dijelaskan di atas mendengarkan semua alamat lokal. Siaran (dengan cara sederhana) adalah 255 jaringan untuk "menyiarkan" ke semua alamat di jaringan itu.
Desorder
Ini tidak lengkap - banyak sistem operasi yang memungkinkan Anda terhubung ke 0.0.0.0, yang kemudian berperilaku seperti alamat loopback.
grawity
16

127.0.0.1 adalah salah satu alamat komputer lokal, tetapi alamat apa pun 127.xyz juga merupakan alamat komputer lainnya (disebut "loopback address"), kecuali 127.0.0.0 (loopback subnet) dan 127.255.255.255 (alamat broadcast untuk subnet loopback).

127.xyz berarti "di sini".

0.0.0.0 sama sekali berbeda: 0.0.0.0 bukan alamat apa pun , itu adalah joker, seperti *dalam shell.

Anda tidak dapat mengirim data ke 0.0.0.0 atau secara aktif membuka koneksi TCP ke 0.0.0.0 karena tidak ada apa pun di sana; 0.0.0.0 bahkan bukan alamat yang tidak dapat dijangkau atau tidak dapat dilalui, itu tidak ada artinya dalam konteks di mana alamat diharapkan .

Anda dapat menggunakan joker 0.0.0.0 dalam konteks di mana alamat dapat disediakan secara opsional , artinya saya tidak peduli .

Misalnya, ketika Anda secara aktif membuka koneksi TCP ke beberapa server TCP (server TCP dibuat oleh TCP terbuka pasif), Anda perlu menentukan alamat server TCP (IP dan nomor port), dan Anda dapat memilih secara opsional alamat lokal. (Karena soket Anda bukan soket server, tidak ada yang dapat membuka koneksi ke sana dan alamat di sisi koneksi Anda biasanya tidak terlalu penting.)

The bindsystem call digunakan untuk memilih alamat lokal soket TCP. Data yang diteruskan bindadalah seperangkat batasan: batasan pada alamat IP, batasan pada port TCP. Notasi teks yang biasa adalah IP: port. 0.0.0.0-02 berarti setiap IP dan port apa pun dapat diterima, itu adalah batasan nol. 0.0.0.0.20 berarti port lokal harus 20, setiap IP dapat diterima (0.0.0.0:20 digunakan dengan menyesuaikan server FTP untuk koneksi data dalam mode aktif).

Subsistem TCP / IP akan memilih alamat sisi koneksi TCP Anda jika Anda tidak memilihnya, menggunakan tabel routing, berdasarkan alamat tujuan: alamat soket TCP lokal akan menjadi alamat lokal yang terkait dengan rute yang sesuai ke alamat tujuan.

Saya sebelumnya menyebutkan shell "meta-karakter" *, tetapi kekuatan menggabungkan meta-karakter dengan karakter seperti *foo*(nama file yang mengandung "foo") tidak ada dengan batasan alamat IP, semuanya atau tidak sama sekali: baik alamat IP tunggal dianggap dapat diterima atau semua alamat adalah. Logika tidak menentukan bahwa itu harus seperti ini. Anda dapat memperluas antarmuka dengan bahasa kendala yang lebih kaya.

Presisi:

Kalimat 127.xyz berarti "di sini" tidak menyiratkan bahwa semua alamat ini sama. Mereka mewakili "lokasi" yang berbeda (alamat soket), di dalam "komputer" lokal, di dalam tumpukan IP lokal sebenarnya.

Catatan: komputer dengan virtualisasi (emulasi, virtualisasi perangkat keras, paravirtualisasi, apa pun yang dapat Anda pikirkan ...) memiliki banyak tumpukan IP independen.

curiousguy
sumber
Ketika saya mengetik alamat acak yang dimulai dengan 127 (mis. 127.16.23.42) di browser saya, itu tidak terhubung ke localhost.
whoKnows
@whoKnows Tentu saja. localhost adalah 127.0.0.1, bukan 127.16.23.42.
curiousguy
Saya melihat. Jadi 127.0.0.1 berarti localhost, tetapi 127.xyz dapat berarti komputer lokal, jika disetel seperti itu?
whoKnows
2
@whoKnows No: 127.xyz adalah milik komputer ini untuk setiap xy z. "localhost" hanyalah nama untuk 127.0.0.1, jadi lupakan "localhost". Gunakan bendera -natau program terkait untuk menunjukkan alamat numerik, bukan nama. 127.0.0.1 bukan alamat IP yang sama dengan 127.16.23.42. Jadi 127.0.0.1:80 dan 127.16.23.42:80 mewakili alamat titik akhir TCP yang berbeda, server web di satu alamat tidak dapat ditemukan di alamat lainnya. -dnetstat
curiousguy
6

Biasanya Anda menggunakan bind-address 0.0.0.0 untuk memungkinkan koneksi dari jaringan dan sumber luar. Banyak server seperti MySQL biasanya mengikat 127.0.0.1 yang memungkinkan hanya koneksi loopback, yang mengharuskan admin untuk mengubahnya ke 0.0.0.0 untuk mengaktifkan konektivitas luar.

Marek Bejda
sumber