Cos'è l'indirizzo IP ":: 1"?


107

Stavo giocando con i socket sulla macchina locale senza connessione di rete. Vedi sotto:

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

Allora qual è esattamente l' ::1indirizzo IP? È l'indirizzo IP disponibile predefinito o è l'indirizzo di loopback? cosa succede al codice sopra (linea di lavoro) su una macchina con indirizzo IP dedicato e connessione di rete?

MODIFICARE:

il codice esatto viene utilizzato per associare un indirizzo IP specifico al socket. Ecco qui:

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);
}

4
IPAddress.Anyè ::0, dovresti usare IPAddress.Loopbackper la connessione locale (loopback).
J-16 SDiZ

Penso che questo avrebbe dovuto essere pubblicato su SuperUser.com
Kamyar

Suppongo che la parte che dice IPAddress.Parssia davvero IPAddress.Parsecorretta?
Brad

Risposte:


150

::1è l'indirizzo di loopback in IPv6. Considerala come la versione IPv6 di 127.0.0.1.

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


1
nell'esempio sopra IPAddress.Parse("127.0.0.1")non funziona sulla mia macchina.
Xaqron

1
@Xaqron - suona più come una domanda da superutente, perché probabilmente significa che qualcosa non funziona con il tuo stack TCP / IP IPv4.
Joel Coehoorn

Xaqron, forse un firewall sta bloccando il traffico v4 ma non v6?
SilverbackNet

Uso Windows Server 2008 Enterprise Edition 64-bite nessun firewall di terze parti installato. Mi chiedo perché non riesco a collegarmi 127.0.0.1al mio socket mentre ::1è disponibile.
Xaqron

@Xaqron, puoi mostrarci il codice che stai cercando di utilizzare? Dici "funziona" e "non funziona" ma questo non ci aiuta.
Brad

18

Giusto per aggiungere qualche informazione in più, in IPv6 l'indirizzo di loopback è rappresentato da 127 zeri seguiti da un 1 cioè (0000 ... 127 volte..1). La sua rappresentazione avrebbe dovuto essere così -> 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0001 ma abbiamo una rappresentazione in forma abbreviata per questo. Se ci sono tutti gli zeri in un singolo blocco, puoi sostituirlo con uno singolo 0. Quindi diventa -> 0: 0: 0: 0: 0: 0: 0: 0001 . Di nuovo possiamo vedere che abbiamo sequenze di zeri, possono essere eliminati e otteniamo -> :: 0001 -> :: 1 .


2
(per essere chiari, i "127 zeri" qui sono in binario, non esadecimale)
user202729
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.