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

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

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


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 .


2
(pour être clair, les "127 zéros" ici sont en binaire, pas en hexadécimal)
user202729
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.