Qu'est-ce que l'adresse IP ':: 1'?

107

Je jouais avec des sockets sur une machine locale sans connexion réseau. Voir ci-dessous:

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

Alors, quelle est exactement ::1l'adresse IP? Est-ce l'adresse IP disponible par défaut ou l'adresse de bouclage? qu'advient-il du code ci-dessus (ligne de travail) sur une machine avec une adresse IP dédiée et une connexion réseau?

ÉDITER:

le code exact est utilisé pour lier une adresse IP spécifique au socket. C'est ici:

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
la source
4
IPAddress.Anyest ::0, vous devez utiliser IPAddress.Loopbackpour la connexion locale (en boucle).
J-16 SDiZ
Je pense que cela aurait dû être publié sur SuperUser.com
Kamyar
Je suppose que la partie qui dit IPAddress.Parsest vraiment IPAddress.Parse, correcte?
Brad
Question inversée .
user202729

Réponses:

150

::1est l'adresse de bouclage dans IPv6. Considérez-le comme la version IPv6 de 127.0.0.1.

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

Brad
la source
1
à l'exemple ci-dessus IPAddress.Parse("127.0.0.1")ne fonctionne pas sur ma machine.
Xaqron
1
@Xaqron - cela ressemble plus à une question de super-utilisateur, car cela signifie probablement que quelque chose est cassé avec votre pile TCP / IP IPv4.
Joel Coehoorn
Xaqron, peut-être qu'un pare-feu bloque le trafic v4 mais pas v6?
SilverbackNet
J'utilise Windows Server 2008 Enterprise Edition 64-bitet aucun pare-feu tiers n'est installé. Je me demande pourquoi je ne peux pas me lier 127.0.0.1à ma socket tant qu'elle ::1est disponible.
Xaqron le
@Xaqron, pouvez-vous nous montrer votre code que vous essayez d'utiliser? Vous dites «fonctionne» et «ne fonctionne pas», mais cela ne nous aide pas.
Brad
18

Pour y ajouter un peu plus d'informations, l'adresse de bouclage IPv6 est représentée par 127 zéros suivis d'un 1, c'est-à-dire (0000 ... 127 fois..1). Sa représentation aurait dû être comme ceci -> 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0001 mais nous avons une représentation abrégée pour cela. S'il y a tous les zéros dans un seul bloc, vous pouvez le remplacer par un seul 0. Il devient donc -> 0: 0: 0: 0: 0: 0: 0: 0001 . Encore une fois, nous pouvons voir que nous avons des séries de zéros, ils peuvent être éliminés et nous obtenons -> :: 0001 -> :: 1 .

Chauve-souris de codage
la source
2
(pour être clair, les "127 zéros" ici sont en binaire, pas en hexadécimal)
user202729