Я открыл свой персональный веб-сервер для внешнего мира, открыв порт 80 для входящих сообщений на моих брандмауэрах и выполнив правильную переадресацию портов. Затем я зашел на whatismyipaddress.com, чтобы проверить свой внешний IP-адрес в Internet Explorer. Использование IP-адреса, которое мне дал whatismyipaddress.com (кажется, IPv6) в текстовом поле адреса IE, привело к тому, что IE выполнил поиск Bing по этому адресу. Я попробовал адрес в Firefox с отключенным поиском в адресной строке, и Firefox дал мне «Адрес неверный». Я потратил много времени, чтобы убедиться в правильности настроек брандмауэра и переадресации портов. Что бы я ни пытался, я не смог добраться до своего веб-сервера по этому адресу. Затем я зашел на canyouseeme.org, где мой IP-адрес был указан как IPv4-адрес. Я удивлен. Я думал, что IPv4 больше не используется в Интернете. Я попробовал этот адрес в браузере и сразу попал на мой сайт.

Почему мой IPv6-адрес, сообщаемый whatismyipaddress.com, не работает ни в одном браузере, а IPv4 работает в обоих? Я думал, что IPv4 был историей в Интернете.

1 ответ1

4

Причина, по которой ваш внешний IPv6 IP (тот, который выглядит примерно как XXXX:XXXX:XXXX:: не работает, заключается в том, как работает IPv6.

Возьмите этот адрес, например: 2607:5600:52c:1:: . Этот адрес является глобально маршрутизируемым, и фактически этот адрес принадлежит мне.


Теперь у нас есть IPv6-адрес, и мы хотим подключиться, скажем, к порту 1000 .

Вот такие URI, которые мы привыкли видеть: <protocol>://<host>[:<port>]/[<path>][#<hash>] что означает, что для сайта IPv6 мы ожидаем использовать http://2607:5600:52c:1::/foo#bar . Вот где это становится интересным.

Мы всегда могли бы сделать 2607:5600:52c:1::1000 но на самом деле это было бы прозрачно переведено в 2607:5600:052c:0000:0000:0000:1000 что является проблемой, поскольку это означает отсутствие порта. Это где RFC3986 вступает в игру. Вы хотите раздел 3.2.2: Хост

Хост, идентифицируемый литеральным адресом Интернет-протокола версии 6 [RFC3513] или более поздней, различается заключением литерала IP в квадратные скобки («[» и «]»). Это единственное место, где в синтаксисе URI разрешены квадратные скобки. В ожидании будущих пока еще не определенных форматов буквенных IP-адресов реализация может использовать дополнительный флаг версии, чтобы явно указывать такой формат, а не полагаться на эвристическое определение.


Хорошо. Вы сказали мне о том, почему, так как мне это исправить?

Просто. В соответствии с RFC3986 вам нужно использовать эту запись: [IPv6-ADDRESS] что означает, что в нашем примере вам нужно использовать это: http://[2607:5600:52c:1::] который будет работать. Это также означает, что мы можем подключиться к порту 1000, используя [2607:5600:52c:1::]:1000

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .