IPv6 поддерживает 2128 (примерно 3,4x1038 адресов). Таким образом на каждого из 6,5 миллиардов жителей Земли приходится по 5x1028 (около 295) адресов. Или это примерно 252 адресов для каждой звезды в известной нам вселенной. Т.е. более чем в десять миллиардов миллиардов миллиардов раз больше адресов, чем поддерживает IPv4.

Адреса IPv6

128 бит

Главное отличие IPv6 от IPv4 - длина сетевых адресов. IPv6-адреса имеют длину128 (так определено в RFC 4291), в то время IPv4-адреса всего 32 бита. Таким образом адресное пространство IPv4 содержит около 4 млрд. адресов, IPv6 имеет 3,4 × 10^38 уникальных адресов.

Как правило адрес IPv6 состоит из двух логических частей: 64-битного префикса (под-)сети и 64-битного адреса узла, который либо автоматически генерируется на основе MAC-адреса или устанавливается вручную. Так как уникальный во всем мире MAC-адрес позволяет отслеживать пользователей оборудования, то в IPv6 были внесены изменения (RFC 3041) с возможности отключения постоянной привязки оборудования к IPv6 адресу. Таким образом, удалось восстановить некоторые возможности анонимности, существующие в IPv4. RFC 3041 определяет механизм, с помощью которого, вместо MAC-адресов могут быть использованы случайные битовые строки.

Нотация

Адреса IPv6, как правило, записываются в виде восьми групп по четыре шестнадцатеричные цифры, где каждая группа разделяется двоеточием (:). Например, 2001:0db8:85a3:08d3:1319:8a2e:0370:7334 является IPv6-адресом.

Если одна или несколько из четырех групп цифр нули (0000), они могут быть опущены и заменены двумя двоеточиями (::). Например, 2001:0db8:0000:0000:0000:0000:1428:57ab может быть сокращен до 2001:0db8::1428:57. В соответствии с этим правилом, любое число последовательных 0000-групп может быть сокращены до двух двоеточий, до тех пор, пока существует только одно двойное двоеточие. Ведущие нули в группе могут быть опущены (например ::1 для localhost). Таким образом, следующие адреса правильны и идентичны:

  • 2001:0db8:0000:0000:0000:0000:1428:57ab
  • 2001:0db8:0000:0000:0000::1428:57ab
  • 2001:0db8:0:0:0:0:1428:57ab
  • 2001:0db8:0:0::1428:57ab
  • 2001:0db8::1428:57ab
  • 2001:db8::1428:57ab

Адрес с двумя двойными двоеточиями является недействительным, поскольку создает двусмысленность в нотации. Например, сократив 2001:0000:0000:FFD3:0000:0000:0000:57ab до 2001::FFD3::57ab мы получим возможные комбинации: 2001:0000:0000:0000:0000:FFD3:0000:57ab, 2001:0000:FFD3:0000:0000:0000:0000:57ab и т.д.

Последовательность из 4 байт в конце IPv6-адреса может быть записана в десятичной форме, используя в качестве разделителя точки. Эта нотация часто используется для совместимости с адресами. Кроме того, это решение удобно, когда речь идет о смешанной среде IPv4 и IPv6-адресов. Общее обозначение имеет форму х:х:х:х:х:х:d.d.d.d, где х - 6 групп шестнадцатеричных цифр верхнего октета, а d соответствует десятичным цифрам нижнего октета адреса, поскольку он в формате IPv4. Так, например, ::ffff:12.34.56.78 соответствует ::ffff:0c22:384e или 0:0:0:0:0:ffff:0c22:384e. Следует помнить, что использование данной нотации не рекомендуется и не поддерживается многими приложениями.

Дополнительная информация может быть найдена в RFC 4291 - IP Version 6 Addressing Architecture.

Использование IPv6-адресов в URL

В URL IPv6-адреса заключаются в скобки.

Пример:
http://[2001:0db8:85a3:08d3:1319:8a2e:0370:7348]/

Эта нотация позволяет при разборе URL не перепутать IPv6-адрес и номер порта:
https://[2001:0db8:85a3:08d3:1319:8a2e:0370:7344]:443/

Также может быть использован сокращенный вариант
https://[2001:db8::1428:57ab]:443/

Дополнительную информацию можно найти в "RFC 2732 - Format for Literal IPv6 Addresses in URL's " и "RFC 3986 - Uniform Resource Identifier (URI): Generic Syntax".

Сетевые нотации

IPv6-сети строятся с использованием CIDR-нотации.

IPv6-сети (или подсети) является непрерывной группой IPv6-адресов, размеры которой должны быть степенью двойки; первые биты адреса, которые являются одинаковыми для всех узлов в сети, называются префиксом сети.

Сеть задается первым адресом в сети и размером в битах префикса (в десятичной системе), разделенных косой чертой. Например, 2001:0db8:1234::/48 обозначает сеть с адресами от 2001:0db8:1234:0000:0000:0000:0000:0000 до 2001:0db8:1234:ffff:ffff:ffff:ffff:ffff

Так как каждый узел может рассматриваться как сеть со 128-битным префиксом, их адреса, иногда следуют с /128.