Кое-что про протокол IPv6

В последнее время все больше стали говорить о переходе с протокола IPv4 (IP, версия 4) к протоколу IPv6 (IP, версия 6), что не удивительно, и, в общем-то, правильно. Дело в том, что используемая сейчас 4-ая версия протокола создавалась далекие 1970-ые годы (по меркам IT-сферы в доисторическую эпоху), и именно сейчас в полной мере стали проявляться проблемы, о которых не думали в то далекое время.

Для начала немного истории. У вас может возникнуть вопрос: «Везде говорят про IPv4 и IPv6, а где IPv5, и что было с IPv1, IPv2 и IPv3?» Здесь все просто, IPv1, IPv2 и IPv3 как таковых не было. Как вы знаете, с протоколом IP в интернете тесно связан протокол TCP, настолько тесно, что их обычно и пишут вместе: TCP/IP. История TCP началась в 1973 году, когда создавалась сеть ARPAnet — родитель Интернета, именно для нее и была подготовлена первая версия протокола TCP (стандарт RFC 675 от 1974 года). Затем в 1977 году была разработана вторая версия протокола TCP, после чего вышел документ Internet Engineering Note number 2 (IEN2), в котором говорится уже про «Internet Protoсol» (сокращение IP там не появляется) и говорится о «слоистой» модели протоколов, которая затем в 1978 году утвердилась в виде так называемой модели OSI. В третьей версии протокол TCP разделился на два отдельных протокола: TCP и IP. Это произошло в 1978 году, но первый стандарт, который утверждает такое разделение вышел в 1980 году, и протоколу IP дали такую же версию, как и новому подправленному TCP, то есть 4-ю версию. Ну а в 1981 году вышел исправленный стандарт протокола IP, который был окончательно утвержден, и используется до сих пор (RFC 791, перевод стандарта на русский язык).

Протокол IPv5 разрабатывался параллельно с IPv6, но считается экспериментальным, и не предназначен для публичного использования, зато некоторые его наработки были взяты в протокол IPv6. Так что на данный момент у нас есть всего две реально используемые версии протокола: четвертая и шестая.

Интересно, что несколько лет назад ходили слухи, будто бы китайцы собираются переходить сразу на IPv9, который был замечен в документе RFC 1606, но обратите внимание на дату публикации (1 апреля 1994 года). Правда, потом китайцы говорили, что они не имели в виду этот шуточный документ, а делали свой протокол, но его признали в итоге неудачным. Вот несколько ссылок по этой теме: 1, 2, 3.

Согласно стандарту IPv4 все адреса (IP-адреса) состоят всего из четырех байт. То есть всего возможно 24 * 8 = 232 = 4 294 967 296 адресов. Эти адреса расходуются и на интернет-серверы, где особенно важно, чтобы каждый сервер однозначно идентифицировался, и на обычных пользователей, которые подключаются к интернету. При этом надо помнить, что часть этих возможных адресов зарезервирована для локальных сетей (откуда и пошли так всеми любимые 192.168.*.*) и для некоторых других нужд, но в то же время есть технические способы давать разным людям одинаковые IP (внешние), поэтому число 232 не отражает реальное количество возможных подключенных узлов.

Много ли это 4 294 967 296 возможных адресов? В прошлом веке их вполне хватало, а теперь, можно сказать, что эти адреса уже исчерпаны. Дело в том, что 1 февраля 2011 года среди пяти региональных регистраторов распределили последние пять блоков IP-адресов. Каждый блок состоит из 224 = 16 777 216 адресов, то есть осталось всего каких-то 83 886 080 свободных IP-адресов на весь мир. Поговаривают, что эти адреса оприходуют уже к концу лета, началу осени этого года.

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

На самом деле разработчики давно понимали, что когда-то эти возможные адреса будут исчерпаны, и уже в в конце 1980-ых, начале 1990-ых годов заговорили о новой версии IP-протокола, главной особенностью которого должно стать расширение возможного количества адресов. В январе 1995 года вышел стандарт RFC 1752, который описывал новую версию протокола, названный тогда IPng — от слов IP Next Generation. Черновик того, что сейчас называется IPv6, вышел 10 августа 1998 года, а датой принятия окончательной версии протокола считается апрель 2003 года (стандарт RFC 3513).

Итак, самое главное, ради чего создавался новый протокол, это увеличение количества возможных IP-адресов. Если в IPv4 на адрес отводилось 32 бита, то в IPv6 на него выделяется аж 128 бит.

Таким образом, с использованием протокола IPv6 всего возможно 2128 = 340 282 366 920 938 463 463 374 607 431 768 211 456 адресов. Правда, говорят, что Google уже прикупил себе каких-то 296 адресов (с 2001:4860:0000:0000:0000:0000:0000:0000 по 2001:4860:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF, про обозначение новых IP-адресов будет сказано далее), но все-равно свободными осталось еще 2128 — 296 = 340 282 366 841 710 300 949 110 269 838 224 261 120 адресов, хотя что часть из них тоже зарезервирована для различных целей, но в целом этого количества адресов должно хватить надолго.

В отличие от IPv4, где адреса записывались в виде x.x.x.x, где x — это значение от 0 до 255, адреса в IPv6 могут быть записаны различными способами. Самая развернутая запись выглядит таким образом: x:x:x:x:x:x:x:x, где x — это 16-ричное представление двух байт. В стандарте приводятся два примера такой записи: FEDC:BA98:7654:3210:FEDC:BA98:7654:3210 и 1080:0:0:0:8:800:200C:417A.

Однако, в реальности в такой длинной колбасе может быть много последовательно идущих нулей, чтобы их не писать, вместо них можно написать просто «::» (без кавычек), тогда адрес 1080:0:0:0:8:800:200C:417A превратится в 1080::8:800:200C:417A, FF01:0:0:0:0:0:0:101 — в FF01::101. Чтобы не было неопределенности, сокращатель :: может использоваться в адресе только один раз. Хотелось бы упомянуть еще два особых случая: 0:0:0:0:0:0:0:1 станет ::1, а 0:0:0:0:0:0:0:0 просто ::. Адрес ::1 — это аналог сегодняшнего localhost (более точно это называется the loopback address). Причем обратите внимание, что раньше для localhost было зарезервировано много адресов от 127.0.0.0 до 127.255.255.255, а в IPv6 он остался один. Запись :: обозначает «неопределенный адрес».

Также в стандарте предлагается еще один вид записи: x:x:x:x:x:x:d.d.d.d, где x — это по-прежнему 16-битное представление двух байт, а d — это десятичное представление одного байта (конец напоминает запись адреса из IPv4, тоже через точки). Поэтому адрес может быть записан еще и таким образом: 0:0:0:0:0:0:13.1.68.3 (в сокращенной форме ::13.1.68.3), или 0:0:0:0:0:FFFF:129.144.52.38 (в сокращенной форме ::FFFF:129.144.52.38). Все примеры адресов взяты из стандарта RFC 3513). Такая запись удобна при работе со старым протоколом IPv4. Дело в том, что протокол IPv6 имеет встроенные возможности для туннелирования IPv6-пакетов через оборудование, работающее по протоколу IPv4, а также для представления старых IPv4-адресов в пространстве адресов IPv6.

Теоретически с переходом на IPv6 жизнь пользователей может упроститься благодаря тому, что за каждому человеку (пользователю) могут раздать по постоянному IP-адресу (а то и не по одному), и не надо будет мучиться с динамическими адресами, NAT и т.п., то есть должна упроститься маршрутизация.

Так как IPv6 все-равно не имеет обратной совместимости с IPv4, то разработчики протокола внесли в него дополнительные возможности, которых не было в старом протоколе. Коротко перечислю их:

  • IPv6 более расширяемый. Если в будущем он перестанет удовлетворять каким-то требованиям, то вполне возможно, что не придется создавать еще один протокол, а достаточно будет создать расширения для IPv6.
  • Многоадресное вещание.
  • Обязательное использование подтверждения подлинности и (или) шифрования IP-пакетов с помощью протоколов IPsec. Раньше IPsec тоже можно было использовать, но с введением IPv6 это стало обязательным.
  • Из протокола IP убрана контрольная сумма, потому что ее все-равно проверяют другие протоколы, которые работают вместе с IP.
  • Возможна поддержка больших пакетов (до 4 ГБ).

Это основное, что хотелось рассказать про IPv6. За кадром остались вопросы, касающиеся поддержки протокола IPv6 железом, операционных систем, настройки IPv6 для конечного пользователя и т.п. Может быть, когда-нибудь я к этому еще вернусь. Собственно, протоколом IPv6 я заинтересовался в тот момент, когда увидел, что, например, Windows 7 уже предлагает использовать этот протокол наравне с IPv4, а в Windows XP поддержка этого протокола уже была, но еще в каком-то зачаточном состоянии (его можно подключить через командную строку).

И в заключении некоторые ссылки, которые помогли мне написать этот пост:

Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.

Пожалуйста, оцените запись

УжасноПлохоТак себеХорошоОтлично (Количество голосов: 3, средняя оценка: 5,00)
Загрузка...

комментария 4

  1. Electriq:

    Интересно, спасибо 🙂
    У меня почему-то где-то глубоко засело неверное предположение, что IPv6 использует 6-байтовые адреса против 4-байтовых у IPv4, и потому так называется. А оказывается там все 16 байт.

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

  2. Jenyay:

    Я когда-то тоже думал, что это не номер версии, а разрядность адреса, а потом оказалось, что все намного интереснее.

    Я про железо особо не смотрел, но из того, что попадалось во время написания поста, сложилось впечатление, что даже сейчас еще есть проблемы, чтобы найти железо, которое поддерживает IPv6.

  3. zaporozhskiystudent:

    Думаю его долго будут вводить!

  4. Максим:

    А что там с маской подсети?

Leave a comment

Subscribe without commenting