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.