В последние годы протокол IPv6 постепенно завоевывает признание и когда-нибудь неизбежно получит широкое распространение в сфере IT. Тем не менее, многие специалисты до сих пор не представляют, с чего начинать внедрение IPv6, потому что новый протокол радикально отличается от привычного IPv4. В этой статье я приведу десять фактов, объясняющих принципы адресации IPv6.
1. Адреса IPv6 — шестнадцатеричные 128-битные номера
Привычные адреса IPv4 состоят из четырех групп по восемь цифр, которые в совокупности образуют 32-битный номер. Адреса IPv6 строятся по совсем другому принципу и представляют собой шестнадцатеричные 128-битные номера.
В адресах IPv4 группы цифр состоят из десятеричных чисел от 0 до 255 и отделяются друг от друга точками. Адреса IPv6 складываются из восьми групп по четыре шестнадцатеричных цифры в каждой. Длина одной группы составляет 16 бит, а вместе они образуют 128-битный адрес. В определенных случаях адреса IPv6 можно сокращать для удобства записи.
2. Однонаправленные адреса локальной связи легко опознать
Протокол IPv6 предусматривает использование определенных открывающих символов для разных типов адресов. Самый характерный пример — однонаправленные адреса локальной связи (link local unicast), которые всегда начинаются с «FE80». Широковещательные адреса (multicast) открываются комбинацией «FF0x», где «x» — число от 1 до 8.
3. Вводные нули подавляются
Поскольку адреса IPv6 очень длинные, в них обычно много нулей. Когда сегмент адреса начинается с одного или нескольких нулей, они служат всего лишь заполнителями и поэтому могут быть устранены.
Возьмем, например, адрес FE80:CD00:0000:0CDE:1257:0000:211E:729C. Вводные нули во всех сегментах этого адреса можно подавить. Тогда он станет ощутимо короче и будет выглядеть уже так: FE80:CD00:0:CDE:1257:0:211E:729C.
4. Внутренние нули тоже иногда можно устранить
В адресах IPv6, как правило, несколько сегментов состоят из одних нулей, которые тоже можно подавлять. Например, в адресе FE80:CD00:0000:0000:0000:0000:211E:729C четыре последовательных сегмента заполнены одними нулями. Вместо того, чтобы подавлять вводные нули в каждом сегменте, можно исключить все последовательные нули и заменить их двумя двоеточиями.
Два двоеточия указывают на то, что все сегменты в промежутке между ними состоят из одних нулей. Представленный выше адрес при этом будет выглядеть так: FE80:CD00::211E:729C.
Стоит учитывать два момента. Во-первых, устранять можно только сегменты, состоящие из одних нулей. Например, во втором сегменте упомянутого адреса нули сохраняются, потому что помимо них в этой группе есть и другие цифры. Во-вторых, двойное двоеточие можно использовать в адресе только один раз.
5. Адрес замыкания на себя даже не похож на адрес
Протокол IPv4 присваивает локальному компьютеру определенный адрес для замыкания на себя (loopback) — 127.0.0.1. В протоколе IPv6 такой адрес тоже имеется — 0000:0000:0000:0000:0000:0000:0000:0001. Однако после устранения всех ненужных нулей он даже перестает быть похожим на адрес и записывается всегда как ::1.
6. Традиционные маски подсети для IPv6 не нужны
Каждому адресу IPv4 соответствует определенная маска подсети. В случае с IPv6 идентификатор подсети включается непосредственно в адрес. Первые 48 битов — это префикс сети, а следующие 16 битов — идентификатор подсети. Последние 64 бита — идентификатор интерфейса (или устройства).
При необходимости биты, зарезервированные под идентификатор устройства, могут использоваться для дополнительного обозначения маски подсети, но обычно это не требуется: с помощью 16 битов можно успешно обозначить 65 535 подсетей, а 64 битов дают квинтиллионы возможных комбинаций для идентификации устройств в одной подсети. Тем не менее, некоторые организации уже используют расширенные обозначения для маски подсети.
7. DNS по-прежнему используется
Протокол IPv4 использует для привязки имени хоста к IP-адресу запись A. Протокол IPv6 тоже предусматривает использование DNS, но для привязки применяются ресурсные записи AAAA. Домен domain ip6.arpa используется для обратного разрешении имени хоста.
8. IPv6 можно туннелировать по сетям IPv4
Протокол IPv6 до сих пор не получил широкого распространения во многом потому, что не совместим с сетями IPv4. Для решения этой проблемы используются различные технологии туннелирования — в частности, Teredo и 6to4. Действуют эти технологии по-разному, но обе предусматривают инкапсулирование пакетов IPv6 в пакеты IPv4 для прохождения трафика IPv6 по сетям IPv4. Однако для успешного использования этой методики на обоих концах должны присутствовать конечные точки туннеля для извлечения инкапсулированных пакетов IPv6.
9. Вы, вполне возможно, уже используете IPv6
Начиная с Windows Vista, Microsoft по умолчанию реализует и активирует в своих операционных системах поддержку IPv6. Вполне вероятно, что ваш компьютер уже передает трафик по протоколу IPv6, а вы об этом даже не подозреваете. Разумеется, это не значит, что уже можно отказаться от IPv4: не все коммутаторы и маршуритизаторы поддерживают IPv6, да и во многие приложения встроены ссылки на адреса IPv4.
10. Windows не обеспечивает полной поддержки IPv6
Смешно, но несмотря на то, что Microsoft активно продвигает IPv6 в массы, Windows не в полной мере поддерживает новый протокол. Адрес IPv4 можно включить в имя, соответствующее соглашению об универсальном назначении имен, — к примеру \\127.0.0.1\C$. А вот с адресом IPv6 так поступить нельзя, потому что двоеточие распознается системой как указание на метку диска.
Чтобы решить эту проблему, Microsoft создала специальный домен для трансляции адресов IPv6. Чтобы включить такой адрес в имя, соответствующее соглашению об универсальном назначении имен, нужно заменить двоеточия дефисами и добавить в конце адреса «.ipv6.literal.net» — например, FE80-AB00–200D-617B.ipv6.literal.net.