IPアドレス ':: 1'とは何ですか?


107

ネットワークに接続されていないローカルマシンのソケットで遊んでいました。下記参照:

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

では、正確な::1IPアドレスとは何でしょうか。デフォルトの使用可能なIPアドレスですか、それともループバックアドレスですか。専用IPアドレスとネットワーク接続を備えたマシンで上記のコード(現用回線)はどうなりますか?

編集:

正確なコードを使用して、特定のIPアドレスをソケットにバインドします。ここにあります:

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.Any::0IPAddress.Loopbackローカル(ループバック)接続に使用する必要があります。
J-16 SDiZ、2011年

これはSuperUser.comに投稿されているはずだと思います
Kamyar

私が言う部分IPAddress.Parsは本当にIPAddress.Parse正しいと思いますか?
Brad

回答:


150

::1IPv6のループバックアドレスです。のIPv6バージョンと考えてください127.0.0.1

http://en.wikipedia.org/wiki/Localhostを参照してください


1
上記の例でIPAddress.Parse("127.0.0.1")は私のマシンでは動作しません。
Xaqron、2011年

1
@Xaqron-それはおそらくスーパーユーザーの質問のように聞こえます。これはおそらく、IPv4 TCP / IPスタックで何かが壊れていることを意味します。
Joel Coehoorn、2011年

Xaqron、たぶんファイアウォールがv4トラフィックをブロックしていますが、v6トラフィックはブロックしていませんか?
SilverbackNet 2011年

私が使用Windows Server 2008 Enterprise Edition 64-bitして何のサードパーティ製のファイアウォールがインストールされていません。が使用可能な127.0.0.1ときにソケットにバインドできないのはなぜですか::1
Xaqron、2011年

@Xaqron、使用しようとしているコードを教えていただけますか?「機能する」と「機能しない」と言いますが、それは私たちにとって役に立ちません。
Brad

18

少しだけ情報を追加するために、IPv6のループバックアドレスでは、127のゼロの後に1が続くように表されます(0000 ... 127回..1)。それの表現はこのようになっているはずです-> 0000:0000:0000:0000:0000:0000:0000:0001しかし、これにはいくつかの短い形式の表現があります。単一のブロックにすべてゼロがある場合、それを単一の0に置き換えることができます。つまり、それは-> 0:0:0:0:0:0:0:0001になります。繰り返しになりますが、ゼロの実行があり、それらを削除して-> :: 0001- > :: 1を取得できます。


2
(明確にするために、ここでの「127のゼロ」は16進数ではなく2進数です)
user202729
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.