Почему появился IPv6?
Когда в 1981 году создавали IPv4, казалось, что 4,3 миллиарда адресов — это невероятно много. Но создатели не предвидели, что интернет станет массовым, а у каждого человека будет несколько устройств: смартфон, ноутбук, планшет, умные часы, телевизор, холодильник...
К 2011 году адреса IPv4 официально закончились. Решение — новый протокол IPv6 с огромным количеством адресов.
📦 IPv4
- Размер: 32 бита
- Адресов: 2³² ≈ 4,3 млрд
- Формат: 4 числа через точку
- Пример: 192.168.1.1
📦 IPv6
- Размер: 128 бит
- Адресов: 2¹²⁸ ≈ 3,4 × 10³⁸
- Формат: 8 групп через двоеточие
- Пример: 2001:0db8::1
🔢 Насколько велико число 3,4 × 10³⁸?
Это 340 ундециллионов адресов. Если бы мы раздавали по миллиарду адресов каждую секунду, нам потребовалось бы 10 миллиардов триллионов лет, чтобы раздать все.
Другая аналогия: на каждый квадратный метр поверхности Земли (включая океаны) приходится 6,5 × 10²³ адресов.
Структура IPv6-адреса
IPv6-адрес состоит из 128 бит, разделённых на 8 групп по 16 бит. Каждая группа записывается в шестнадцатеричной системе (hex) — 4 символа.
Полный формат IPv6:
XXXX : XXXX : XXXX : XXXX : XXXX : XXXX : XXXX : XXXX
└─┬─┘ └─┬─┘ └─┬─┘ └─┬─┘ └─┬─┘ └─┬─┘ └─┬─┘ └─┬─┘
Всего: 8 групп × 16 бит = 128 бит
💡 Шестнадцатеричная система
В hex используются цифры 0-9 и буквы A-F (или a-f):
| Десятичное |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
| Hex |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
Правила сокращения IPv6
Полный IPv6-адрес очень длинный и неудобный для записи. Поэтому существуют правила сокращения.
📝 Исходный адрес для примеров
2001:0db8:0000:0000:0000:0000:0000:0001
1 Убираем ведущие нули в каждой группе
Нули в начале группы можно не писать. Но хотя бы один символ должен остаться!
До: 2001 : 0db8 : 0000 : 0000 : 0000 : 0000 : 0000 : 0001
↓ ↓ ↓ ↓ ↓ ↓ ↓
После: 2001 : db8 : 0 : 0 : 0 : 0 : 0 : 1
Результат: 2001:db8:0:0:0:0:0:1
2 Заменяем последовательность нулевых групп на ::
Если несколько групп подряд состоят только из нулей, их можно заменить на двойное двоеточие.
До: 2001:db8: 0:0:0:0:0 :1
└────┬────┘
6 нулевых групп подряд
↓
После: 2001:db8: :: 1
Результат: 2001:db8::1
⚠️ Главное правило: :: можно использовать только ОДИН раз!
Почему? Потому что иначе невозможно понять, сколько нулей скрыто в каждом месте.
Адрес: 2001:0000:0000:0042:0000:0000:0000:0001
❌ Неправильно: 2001::42::1
Непонятно: сколько нулей слева от 42? Сколько справа?
✓ Правильно: 2001:0:0:42::1
или: 2001::42:0:0:0:1
Выбираем вариант, где :: заменяет БОЛЬШЕ нулей.
В данном случае лучше: 2001:0:0:42::1
Примеры сокращения
| Полный адрес |
Шаг 1: убираем нули |
Шаг 2: используем :: |
2001:0db8:0000:0000:0000:0000:0000:0001 |
2001:db8:0:0:0:0:0:1 |
2001:db8::1 |
fe80:0000:0000:0000:0000:0000:0000:0001 |
fe80:0:0:0:0:0:0:1 |
fe80::1 |
0000:0000:0000:0000:0000:0000:0000:0001 |
0:0:0:0:0:0:0:1 |
::1 |
0000:0000:0000:0000:0000:0000:0000:0000 |
0:0:0:0:0:0:0:0 |
:: |
2001:0db8:0000:0042:0000:0000:0000:0001 |
2001:db8:0:42:0:0:0:1 |
2001:db8:0:42::1 |
Специальные IPv6-адреса
| Адрес |
Полная форма |
Назначение |
:: |
0000:0000:...:0000 |
Неопределённый адрес (аналог 0.0.0.0) |
::1 |
0000:0000:...:0001 |
Локальный хост — loopback (аналог 127.0.0.1) |
fe80:: |
fe80:0000:...:xxxx |
Link-local — адрес только для локальной сети |
2001:db8:: |
2001:0db8:...:xxxx |
Зарезервировано для документации и примеров |
Как восстановить полный адрес из сокращённого?
📝 Пример: восстановим 2001:db8::42:1
1 Считаем группы
Видим группы: 2001, db8, ::, 42, 1
Без :: у нас 4 группы. Всего должно быть 8.
Значит, :: скрывает 8 - 4 = 4 группы нулей.
2 Вставляем нули
2001:db8:0:0:0:0:42:1
3 Дописываем ведущие нули
2001:0db8:0000:0000:0000:0000:0042:0001
Частые ошибки
| ❌ Неправильно |
✓ Правильно |
Почему? |
2001:db8::1::2 |
2001:db8::1:0:0:2 |
Двойное двоеточие можно использовать только один раз |
2001:db8:0000::1 |
2001:db8::1 |
Если используем ::, не нужно писать 0000 |
2001:DB8::1 |
2001:db8::1 |
Технически оба верны, но рекомендуется нижний регистр |
2001:db8:0:0:0:0:0:1 |
2001:db8::1 |
Не ошибка, но лучше использовать :: для краткости |
Сравнение записи IPv4 и IPv6
| Параметр |
IPv4 |
IPv6 |
| Разделитель |
Точка . |
Двоеточие : |
| Система счисления |
Десятичная |
Шестнадцатеричная |
| Количество групп |
4 |
8 |
| Бит в группе |
8 |
16 |
| Символов в группе |
1-3 |
1-4 |
| Сокращение нулей |
Нельзя |
Можно (:: и ведущие нули) |
📝 Итог: алгоритм сокращения IPv6
- Убери ведущие нули в каждой группе (0042 → 42, 0000 → 0)
- Найди самую длинную последовательность нулевых групп
- Замени её на :: (только один раз!)
- Если есть несколько одинаковых последовательностей — заменяй первую