Як клієнтські програми знають використовувати 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 змінила це в Леві. Там операційна система фактично відстежує продуктивність усіх підключень, і якщо вона визначить, що з'єднання 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 по-справжньому буде сприйнятий і побачить масштабну розгортання на SMB та особистому ринку, поки простір IPv4 не стане дорогим товаром.

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


1
Я не думаю, що це відповідає на питання ... Крім того: тунелювання швидко зникає в основному інтернеті IPv6, тому що рідний IPv6 зараз доступний скрізь. Для клієнтів буде кілька тунелів, але це не має нічого спільного з вибором, який система робить при підключенні. PS: Тунелювання IPv4 над IPv6 вже з’являється. Деякі оператори кабельного Інтернету цього року розгортають DS-Lite, що робить саме це.
Сандер Стеффан

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

3
Тунелювання справді використовується, але його слід уникати, де це можливо. Інтернет-провайдери, які ще не пропонують своїм клієнтам гідний IPv6, не виконують свою роботу ... Але все одно: питання полягало у тому, як клієнтські програми вибирають між IPv4 та IPv6, і це не має нічого спільного з тим, як мережа має IPv6-з'єднання. адже це робота роутера, а не клієнтська програма. Клієнтська програма просто використовує все, що є в локальній мережі.
Сандер Стеффан

Хрестовий похід, мій друже.
Гаррет

-2

Я думаю, ви запитуєте, як додаток вирішує, як вибрати. З боку програми це залежить від реалізації програми. Якщо, наприклад, кодер робить IPv6 вищим пріоритетом, ніж IPv4, він спершу спробує використовувати getipv6addr (). Якщо це не налаштовано або виходить з ладу, тоді він спробує використовувати getaddr () тощо.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.