Что такое IP-адрес ":: 1"?


108

Я играл с сокетами на локальной машине без подключения к сети. Увидеть ниже:

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есть ::0, вы должны использовать IPAddress.Loopbackдля локального (петлевого) соединения.
J-16 SDiZ 06

Я думаю , что это должно было быть размещены на SuperUser.com
Kamyar

Я предполагаю, что часть, которая говорит IPAddress.Pars, действительно IPAddress.Parse, верна?
Брэд

Ответы:


151

::1- адрес обратной связи в IPv6. Думайте об этом как о версии IPv6 127.0.0.1.

См. Http://en.wikipedia.org/wiki/Localhost


1
в приведенном выше примере IPAddress.Parse("127.0.0.1")не работает на моей машине.
Xaqron 06

1
@Xaqron - это больше похоже на вопрос суперпользователя, потому что это, вероятно, означает, что что-то сломано в вашем стеке IPv4 TCP / IP.
Joel Coehoorn 06

Xaqron, может фаервол блокирует трафик v4 а не v6?
SilverbackNet

Я использую Windows Server 2008 Enterprise Edition 64-bitи сторонний брандмауэр не установлен. Мне интересно, почему я не могу привязаться 127.0.0.1к своему сокету, пока ::1он доступен.
Xaqron 06

@Xaqron, вы можете показать нам свой код, который вы пытаетесь использовать? Вы говорите «работает» и «не работает», но это нам не помогает.
Брэд

18

Чтобы добавить немного дополнительной информации, в IPv6 loopback-адрес представлен как 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 нулей" здесь в двоичном, а не шестнадцатеричном формате)
user202729
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.