Иногда утверждается, что новый протокол может обеспечить по 5·1028 адресов на каждого жителя Земли. Однако такое огромное адресное пространство IPv6 было введено ради иерархичности адресов (это упрощает маршрутизацию) и бо́льшая его часть в принципе не будет задействована никогда. Тем не менее, увеличенное пространство адресов сделаетNAT необязательным. Классическое применение IPv6 (по сети /64 на абонента; используется только unicast-адресация) обеспечит возможность использования более 300 млн IP-адресов на каждого жителя Земли.
Из IPv6 убраны вещи, усложняющие работу маршрутизаторов:
· Маршрутизаторы больше не разбивают пакет на части (возможно разбиение пакета с передающей стороны). Соответственно, оптимальный MTU придётся искать через Path MTU discovery. Для лучшей работы протоколов, требовательных к потерям, минимальный MTU поднят до 1280 байтов. Информация о разбиении пакетов вынесена из основного заголовка в расширенные.
· Исчезла контрольная сумма. С учётом того, что канальные (Ethernet) и транспортные (TCP и UDP) протоколы тоже проверяют корректность пакета, контрольная сумма на уровне IP воспринимается как излишняя. Тем более каждый маршрутизатор уменьшает hop limit на единицу, что в IPv4 приводило к пересчёту суммы.
Несмотря на огромный размер адреса IPv6, благодаря этим улучшениям заголовок пакета удлинился всего лишь вдвое: с 20 до 40 байт.
Улучшения IPv6 по сравнению с IPv4:
· На сверхскоростных сетях возможна поддержка огромных пакетов (джамбограмм) — до 4 гигабайт;
· Time to Live переименовано в Hop Limit;
· Появились метки потоков и классы трафика;
· Появилось многоадресное вещание;
При инициализации сетевого интерфейса ему назначается локальный IPv6-адрес, состоящий из префикса fe80::/10 и идентификатора интерфейса, размещённого в младшей части адреса. В качестве идентификатора интерфейса часто используется 64-битный расширенный уникальный идентификатор EUI-64, часто ассоциируемый с MAC-адресом. Локальный адрес действителен только в пределах сетевого сегмента канального уровня и используется, в основном, для обмена информационными ICMPv6 пакетами.
Для настройки других адресов узел может запросить информацию о настройках сети у маршрутизаторов, отправив ICMPv6 сообщение «Router Solicitation» на групповой адрес маршрутизаторов. Маршрутизаторы, получившие это сообщение, отвечают ICMPv6 сообщением «Router Advertisement», в котором может содержаться информация о сетевом префиксе, адресе шлюза, адресах рекурсивных DNS серверов[4], MTU и множестве других параметров. Объединяя сетевой префикс и идентификатор интерфейса, узел получает новый адрес. Для защиты персональных данных идентификатор интерфейса может быть заменён на псевдослучайное число.
Для большего административного контроля может быть использован DHCPv6, позволяющий администратору маршрутизатора назначать узлу конкретный адрес.
Для провайдеров может использоваться функция делегирования префиксов клиенту, что позволяет клиенту просто переходить от провайдера к провайдеру, без изменения каких-либо настроек.
Существуют различные типы адресов IPv6: одноадресные (Unicast), групповые (Anycast) и многоадресные (Multicast).
Адреса типа Unicast хорошо всем известны. Пакет, посланный на такой адрес, достигает в точности интерфейса, который этому адресу соответствует.
Адреса типа Anycast синтаксически неотличимы от адресов Unicast, но они адресуют группу интерфейсов. Пакет, направленный такому адресу, попадёт в ближайший (согласно метрике маршрутизатора) интерфейс. Адреса Anycast могут использоваться только маршрутизаторами.
Адреса типа Multicast идентифицируют группу интерфейсов. Пакет, посланный на такой адрес, достигнет всех интерфейсов, привязанных к группе многоадресного вещания.
Широковещательные адреса IPv4 (обычно xxx.xxx.xxx.255) выражаются адресами многоадресного вещания IPv6.
Адреса разделяются двоеточиями (напр. fe80:0:0:0:200:f8ff:fe21:67cf). Большое количество нулевых групп может быть пропущено с помощью двойного двоеточия (fe80::200:f8ff:fe21:67cf). Такой пропуск должен быть единственным в адресе.
· Глобальные
Соответствуют публичным IPv4 адресам. Могут находиться в любом не занятом диапазоне. В настоящее время региональные интернет-регистраторы распределяют блок адресов 2000::/3 (с 2000:: по 3FFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF).
· Link-Local
Соответствуют
автосконфигурированным с помощью протокола APIPA IPv4 адресам. Начинаются с FE80.
Используется:
1. В качестве исходного адреса для Router Solicitation(RS) и Router Advertisement(RA) сообщений, для обнаружения маршрутизаторов
2. Для обнаружения соседей (эквивалент ARP для IPv4)
3. Как next-hop адрес для маршрутов
· Unique-Local
RFC 4193, соответствуют внутренним IP адресам, которыми в версии IPv4 являлись 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16. Начинаются с цифр FC00 и FD00.
Адреса IPv6 отображаются как восемь групп по четыре шестнадцатеричные цифры, разделённые двоеточием. Пример адреса:
2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d
Если одна или более групп подряд равны 0000, то они могут быть опущены и заменены на двойное двоеточие (::). Например, 2001:0db8:0000:0000:0000:0000:ae21:ad12 может быть сокращён до 2001:db8::ae21:ad12, или 0000:0000:0000:0000:0000:0000:ae21:ad12 может быть сокращён до ::ae21:ad12. Сокращению не могут быть подвергнуты 2 разделённые нулевые группы из-за возникновения неоднозначности.
При использовании IPv6-адреса в URL необходимо заключать адрес в квадратные скобки:
http://[2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d]/
Если необходимо указать порт, то он пишется после скобок:
http://[2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d]:8080/