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

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

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


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 .


2
(um klar zu sein, die "127 Nullen" hier sind binär, nicht hexadezimal)
— user202729
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.