Was ist die IP-Adresse ':: 1'?

107

Ich habe mit Sockets auf einem lokalen Computer ohne Netzwerkverbindung gespielt. Siehe unten:

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

Was genau ist die ::1IP-Adresse? Ist es die standardmäßig verfügbare IP-Adresse oder die Loopback-Adresse? Was passiert mit dem obigen Code (Arbeitszeile) auf einem Computer mit dedizierter IP-Adresse und Netzwerkverbindung?

BEARBEITEN:

Der genaue Code wird verwendet, um eine bestimmte IP-Adresse an den Socket zu binden. Hier ist es:

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
quelle
4
IPAddress.Anyist ::0, Sie sollten IPAddress.Loopbackfür lokale (Loopback-) Verbindung verwenden.
J-16 SDiZ
Ich denke, das hätte auf SuperUser.com veröffentlicht werden sollen
Kamyar
Ich gehe davon aus, dass der Teil, der sagt, IPAddress.Parswirklich IPAddress.Parserichtig ist?
Brad
Umgekehrte Frage .
user202729

Antworten:

150

::1ist die Loopback-Adresse in IPv6. Betrachten Sie es als die IPv6-Version von 127.0.0.1.

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

Brad
quelle
1
Das obige Beispiel IPAddress.Parse("127.0.0.1")funktioniert auf meinem Computer nicht.
Xaqron
1
@Xaqron - das klingt eher nach einer Superuser-Frage, weil es wahrscheinlich bedeutet, dass etwas mit Ihrem IPv4-TCP / IP-Stack nicht funktioniert.
Joel Coehoorn
Xaqron, vielleicht blockiert eine Firewall den v4-Verkehr, aber nicht den v6-Verkehr?
SilverbackNet
Ich verwende Windows Server 2008 Enterprise Edition 64-bitund keine Firewall von Drittanbietern installiert. Ich frage mich, warum ich mich nicht 127.0.0.1an meinen Socket binden kann , solange dieser ::1verfügbar ist.
Xaqron
@Xaqron, können Sie uns Ihren Code zeigen, den Sie verwenden möchten? Sie sagen "funktioniert" und "funktioniert nicht", aber das hilft uns nicht.
Brad
18

Um nur ein wenig mehr Informationen hinzuzufügen, wird in IPv6 die Loopback-Adresse als 127 Nullen dargestellt, gefolgt von einer 1, dh (0000 ... 127 mal..1). Die Darstellung hätte so aussehen sollen -> 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0001, aber wir haben eine Kurzdarstellung dafür. Wenn ein einzelner Block alle Nullen enthält, können Sie ihn durch eine einzelne 0 ersetzen. So wird er zu -> 0: 0: 0: 0: 0: 0: 0: 0001 . Wieder können wir sehen, dass wir Läufe von Nullen haben, sie können eliminiert werden und wir erhalten -> :: 0001 -> :: 1 .

Coding Fledermaus
quelle
2
(um klar zu sein, die "127 Nullen" hier sind binär, nicht hexadezimal)
user202729