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.