Как клиентские приложения знают, как использовать IPv4 или IPv6?


18

Как серверы / компьютеры / пользователи / приложения знают, что запрашивают ресурс через Интернет с адресом IPv6 и адресом IPv4?

Ответы:


24

Первое, что определяет клиент, - какие протоколы доступны. Предположим, что доступны как IPv4, так и IPv6 (в противном случае ответ на выбор протокола тривиален;) Затем будет выполнен поиск DNS для записей A (адрес IPv4) и AAAA (адрес IPv6). Если возвращается только один тип, он будет использовать это. Если оба адреса IPv4 и IPv6 возвращены, поведение по умолчанию немного зависит от клиентского программного обеспечения. Обычно используется RFC 3484 .

В соответствии с официальными стандартами предпочтение должно отдаваться IPv6, но поскольку некоторые (0,01% или менее) машины неправильно настроили IPv6, клиенты стали умнее. В настоящее время большинство браузеров пытаются подключиться через IPv6, но если они не получат рабочее соединение в течение 300 миллисекунд, они попытаются подключиться через IPv4 параллельно. Первое успешное соединение затем используется. Это описано в RFC Happy Eyeballs .

Apple изменила это в Lion. Там операционная система фактически отслеживает производительность всех соединений, и если она определит, что соединение IPv4 имеет меньшую задержку, чем соединение IPv6, она начнет предпочитать IPv4. Но если соединение IPv4 становится медленным, оно может переключиться обратно на IPv6. Посмотрите эту ветку списка рассылки для обсуждения этой функции.

Для пользователя не должно иметь значения, используется ли IPv4 или IPv6, если он работает. IPv4 и IPv6 должны предоставляться одинаково хорошо. Веб-сайты должны работать точно так же с IPv4, как с IPv6 и т. Д.

IPv4 будет использоваться в течение многих лет. Он станет непригодным для использования, как только новые службы (веб-сайты, игры и т. Д.) Будут развернуты только через IPv6, поскольку больше не будет использоваться новых адресов IPv4. И в какой-то момент все, что работает через IPv4, также будет работать через IPv6. В этот момент отключение IPv4 сэкономит время и деньги (зачем поддерживать два протокола, когда одного достаточно?).


1
После того, как это было написано, RFC 3484 был устаревшим RFC 6724 .
Майкл Хэмптон

Как он определяет, какие протоколы доступны? Я видел случайное поведение, когда, apt-get updateнапример, пытается подключиться к хостам ipv6, но сам хост даже не имеет IPv6-адреса, кроме своего локального канала.
Halfgaar

1
Это обрабатывается выбором адреса источника и назначения (RFC 6724). В вашем случае кажется, что хост видит запись AAAA в DNS, выбирает этот адрес назначения, затем обнаруживает, что у него нет адреса источника, который он может использовать с этим назначением, и затем возвращается к IPv4.
Сандер Штеффанн

2

Промежуточный шаг, который используется сейчас, называется туннелированием. По сути, пакеты IPv6 перемещаются внутри пакетов IPv4, пока не достигнут точки, в которой они могут быть лишены инкапсуляции IPv4 и отправлены на другую сторону в полной сети IPv6. Конечно, здесь намного сложнее, но основная концепция в целом одинакова.

По мере того, как все больше и больше устройств станут поддерживать IPv6, и люди будут лучше знакомы с использованием адресов, использование IPv6 будет расти. Я не верю (личное мнение), что IPv6 действительно будет принят и увидит широкомасштабное развертывание на рынке малого и среднего бизнеса и персональном рынке, пока пространство IPv4 не станет дорогим товаром.

В какой-то момент в довольно отдаленном будущем, когда IPv6 обеспечивает подавляющее большинство трафика, я мог видеть изменение судьбы для IPv4, где трафик IPv4 должен быть инкапсулирован в обычные пакеты IPv6, а туннельные посредники выполняют аналогичную (но обращенную) роль из-за отсутствие широкой маршрутизации IPv4 / назначений IP.


1
Я не думаю, что это отвечает на вопрос ... Кроме того: туннелирование быстро исчезает в основном интернете IPv6, потому что родной IPv6 теперь доступен везде. Будет некоторое туннелирование для клиентов, но это не имеет ничего общего с выбором, который система делает при подключении. PS: туннелирование IPv4-over-IPv6 уже появляется. Некоторые операторы кабельного интернета внедряют DS-Lite в этом году, что и делает именно это.
Сандер Штеффанн

Я работаю в большом центре обработки данных и имею контакты со всей отраслью, и мой опыт работы с IPv6 определенно не везде сейчас. Туннелирование существует для преодоления разрыва, и, учитывая, что большинство конечных пользователей еще не имеют назначений IPv6, оно все еще актуально.
Гарретт

3
Туннелирование действительно используется, но его следует по возможности избегать. Интернет-провайдеры, которые еще не предлагают достойный IPv6 своим клиентам, не выполняют свою работу ... Но в любом случае: вопрос заключался в том, как клиентские приложения выбирают между IPv4 и IPv6, и это не имеет ничего общего с тем, как сеть имеет возможность подключения по IPv6. потому что это работа маршрутизатора, а не клиентского приложения. Клиентское приложение просто использует все, что доступно в локальной сети.
Сандер Штеффанн

Крестовый поход, друг мой.
Гаррет

-2

Я думаю, вы спрашиваете, как приложение решает, как выбрать. Со стороны программы это зависит от реализации приложения. Например, если кодер делает IPv6 более высоким приоритетом, чем IPv4, он сначала попытается использовать getipv6addr (). Если это не настроено или происходит сбой, то он попытается использовать getaddr () и т. Д. На основании этого приложение будет сначала отправлять запрос через IPv6, или наоборот.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.