Apa itu alamat IP ':: 1'?

107

Saya bermain dengan soket di mesin lokal tanpa koneksi jaringan. Lihat di bawah:

IPAddress address = IPAddress.Any; // doesn't work
IPAddress address = IPAddress.Parse("::1"); // works

Jadi apa sebenarnya ::1alamat IP itu? Apakah ini alamat IP default yang tersedia atau alamat loopback? apa yang terjadi dengan kode di atas (jalur kerja) pada mesin dengan alamat IP khusus dan koneksi jaringan?

EDIT:

kode tepat digunakan untuk mengikat alamat IP tertentu ke soket. Ini dia:

ServicePoint sp = ServicePointManager.FindServicePoint(uri);
sp.BindIPEndPointDelegate = new BindIPEndPoint(Bind);
// here's the bind delegate:
private IPEndPoint Bind(ServicePoint sp, IPEndPoint ep, int retryCount)
{
   return new IPEndPoint(IPAddress.Parse("::1"), 0);
}
Xaqron
sumber
4
IPAddress.Anyadalah ::0, Anda harus menggunakan IPAddress.Loopbackuntuk koneksi lokal (loopback).
J-16 SDiZ
Saya pikir ini seharusnya telah diposting di SuperUser.com
Kamyar
Saya berasumsi bagian yang mengatakan IPAddress.Parsbenar IPAddress.Parse, benar?
Brad
Pertanyaan terbalik .
pengguna202729

Jawaban:

150

::1adalah alamat loopback di IPv6. Anggap saja sebagai versi IPv6 127.0.0.1.

Lihat http://en.wikipedia.org/wiki/Localhost

Brad
sumber
1
pada contoh di atas IPAddress.Parse("127.0.0.1")tidak berfungsi di mesin saya.
Xaqron
1
@Xaqron - kedengarannya lebih seperti pertanyaan superuser, karena itu mungkin berarti ada sesuatu yang rusak dengan tumpukan IPv4 TCP / IP Anda.
Joel Coehoorn
Xaqron, mungkin firewall memblokir lalu lintas v4 tetapi bukan v6?
SilverbackNet
Saya menggunakan Windows Server 2008 Enterprise Edition 64-bitdan tidak ada firewall pihak ketiga yang terpasang. Saya bertanya-tanya mengapa saya tidak bisa mengikat 127.0.0.1ke soket saya saat ::1tersedia.
Xaqron
@Xaqron, dapatkah Anda menunjukkan kepada kami kode yang Anda coba gunakan? Anda mengatakan "berhasil" dan "tidak berfungsi" tetapi itu tidak membantu kami.
Brad
18

Hanya untuk menambahkan lebih banyak info ke dalamnya, dalam alamat loopback IPv6 direpresentasikan sebagai 127 nol diikuti oleh 1 yaitu (0000 ... 127 kali..1). Representasinya seharusnya seperti ini -> 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0001 tetapi kami memiliki beberapa representasi bentuk singkat untuk ini. Jika ada semua nol dalam satu blok, Anda dapat menggantinya dengan satu 0. Jadi menjadi -> 0: 0: 0: 0: 0: 0: 0: 0001 . Sekali lagi kita dapat melihat bahwa kita memiliki angka nol, mereka dapat dihilangkan dan kita mendapatkan -> :: 0001 -> :: 1 .

Coding bat
sumber
2
(untuk memperjelas, "127 nol" di sini adalah dalam biner, bukan heksadesimal)
pengguna202729