Ip

Исчерпание адресного пространства

С 1980-х годов, было очевидно, что пул свободных адресов IPv4 был истощается со скоростью, которая не предполагалась изначально в первоначальном проектировании системы сетевого адреса. Угроза истощения была мотивацией для восстановительных технологий, таких как: сети классовой адресации, методы бесклассовой адресации (CIDR), и преобразование сетевых адресов (NAT). В конечном счете, был создан IPv6, который имеет гораздо больше доступных адресов.

Некоторые рыночные силы ускорили истощение IPv4 адресов:

  • быстро растущее число Интернет-пользователей
  • ADSL модемы, кабельные модемы
  • мобильные устройства — ноутбуки, мобильные телефоны

Некоторые технологии смягчили истощение адресов IPv4:

  • Трансляция сетевых адресов (NAT — Network address translation) — это технология, которая позволяет частной сети использовать один публичный IP-адрес. Она разрешает частные адреса для частной сети.
  • Использование частных сетей
  • Dynamic Host Configuration Protocol (DHCP)
  • Виртуальный хостинг веб-сайтов на основе имени
  • Более строгий контроль со стороны региональных интернет-реестров по распределению адресов по местным Интернет регистрам
  • Перенумерация сети для возвращения крупных блоков адресного пространства, выделенного в первые дни Интернета

Основной пул адресов Интернета, утвержденный IANA, был исчерпан 3 февраля 2011 года, когда последние 5 блоков были выделены 5 региональным интернет-реестрам. Asia-Pacific Network Information Centre (APNIC) был первым региональным интернет-реестром, исчерпавшим свой региональный пул 15 апреля 2011, кроме небольшого количества адресного пространства, зарезервированного для перехода к IPv6, которые будут выделены в рамках гораздо более жесткой политики.

Принятое и стандартное долгосрочное решение заключается в использовании Internet Protocol Version 6. Размер адреса был увеличен в IPv6 до 128 бит, что обеспечивает существенное увеличение объема адресного пространства, что также позволяет улучшить агрегацию маршрута через Интернет и предлагает большие распределения подсетей с минимум 264 хост-адресов для конечных пользователей. Однако хосты IPv4-only не могут напрямую общаться с хостами IPv6-only, поэтому IPv6 в одиночку не обеспечивает немедленное решение проблемы исчерпания IPv4. Переход на IPv6 в стадии разработки, но завершение, как ожидается, займет значительное время.

Формат заголовок IP-пакета

В протоколе IP для реализации фрагментации используются три поля заголовка. Идентификатор пакета, флаги и смещение фрагмента.

Пакет

Идентификатор пакета задает номер пакета, который разбит на фрагменты, это поле должно быть одинаковое во всех фрагментах пакета.

Флаги

Размер поля 3 бита, но на практике используется только два. Флаг DF (Don’t Fragment) означает запрет фрагментирования. Флаг MF или (More Fragments), говорит о том что полученный фрагмент пакета не последний, будут еще пакеты.

Смещение фрагмента

Из статьи про протокол IP, мы помним, что сети IP не обеспечивают гарантию доставки и сохранения порядка следования сообщений, поэтому фрагменты пакета могут прийти в разном порядке. Например, сначала может прийти фрагмент, который вы отправили первым, затем третий фрагмент, и после этого второй.

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

Давайте рассмотрим пример, чтобы лучше понять.

  • У нас есть большой пакет размером 4 тысячи байт, в этом пакете 20 байт, это заголовок IP, а полезных данных 3980 байт.
  • Мы хотим передать полученные пакет по сети Ethernet, у который максимальный размер передаваемых данных 1 500 байт. Опять же с 1500 байт, 20 байт отдается под заголовок IP, и 1480 байт под полезные данные.
  • Таким образом, исходные данные размером 3 980 байт, будут разделены на три фрагмента, от 0 до  4179 байт, от 1480 до 2959, от  2960 до 3890.
  • Для того чтобы получить смещение каждого фрагмента, мы должны взять значение первого байта (это 0, 1480 и 2960), и разделить на 8, таким образом смещение получается 0 для первого фрагмента, 185 для второго фрагмента, и 370 для третьего фрагмента.

Пакет

IP-пакет — форматированный блок информации, передаваемый по компьютерной сети, структура которого определена протоколом IP. Соединения компьютерных сетей, не поддерживающие IP-пакеты, такие как традиционные соединения типа «точка-точка» в телекоммуникациях, просто передают данные в виде последовательности байтов, символов или битов. При использовании пакетного форматирования сеть может передавать длинные сообщения более надежно и эффективно.

Версия 4 (IPv4)

Основная статья: IPv4

Октет 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Версия IHL Differentiated Services Code Point ECN Длина пакета
4 Идентификатор Флаги Смещение фрагмента
8 Время жизни (TTL) Протокол Контрольная сумма заголовка
12 IP-адрес отправителя
16 IP-адрес получателя
20 Параметры (от 0 до 10 32-битных слов)
  Данные
  • Версия — для IPv4 значение поля должно быть равно 4.
  • IHL — (Internet Header Length) длина заголовка IP-пакета в 32-битных словах (dword). Именно это поле указывает на начало блока данных (англ. payload — полезный груз) в пакете. Минимальное корректное значение для этого поля равно 5.
  • Длина пакета — (Total Length) длина пакета в октетах, включая заголовок и данные. Минимальное корректное значение для этого поля равно 20, максимальное — 65 535.
  • Идентификатор — (Identification) значение, назначаемое отправителем пакета и предназначенное для определения корректной последовательности фрагментов при сборке пакета. Для фрагментированного пакета все фрагменты имеют одинаковый идентификатор.
  • 3 бита флагов. Первый бит должен быть всегда равен нулю, второй бит DF (don’t fragment) определяет возможность фрагментации пакета и третий бит MF (more fragments) показывает, не является ли этот пакет последним в цепочке пакетов.
  • Смещение фрагмента — (Fragment Offset) значение, определяющее позицию фрагмента в потоке данных. Смещение задается количеством восьмибайтовых блоков, поэтому это значение требует умножения на 8 для перевода в байты.
  • Время жизни (TTL) — число маршрутизаторов, которые может пройти этот пакет. При прохождении маршрутизатора это число уменьшается на единицу. Если значение этого поля равно нулю, то пакет должен быть отброшен, и отправителю пакета может быть послано сообщение Time Exceeded (ICMP тип 11 код 0).

Версия 6 (IPv6)

Основная статья: IPv6

Позиция в октетах 1 2 3
Позиция в битах 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Версия Класс трафика
4 32 Длина полезной нагрузки След. заголовок Число переходов
8 64 IP-адрес отправителя
12 96
16 128
20 160
24 192 IP-адрес получателя
28 224
32 256
36 288
  • Версия — для IPv6 значение поля должно быть равно 6.
  • Класс трафика — определяет приоритет трафика (QoS, класс обслуживания).
  • Метка потока — уникальное число, одинаковое для однородного потока пакетов.
  • Длина полезной нагрузки — длина данных в октетах (заголовок IP-пакета не учитывается).
  • Следующий заголовок — задаёт тип расширенного заголовка (англ. IPv6 extension), который идёт следующим. В последнем расширенном заголовке поле Next header задаёт тип транспортного протокола (TCP, UDP и т. д.) и определяет следующий инкапсулированный уровень.
  • Число переходов — максимальное число маршрутизаторов, которые может пройти пакет. При прохождении маршрутизатора это значение уменьшается на единицу и по достижении нуля пакет отбрасывается.

Свойства протокола

Путь IP пакета от отправителя к адресату может быть извилистым и проходить через множество различных серверов. Каждый бывает настроен по-своему или же перегружен. Поэтому могут возникать ситуации, когда узел физически не может пропустить пакет из-за его размера. Тогда протокол разбивает пакет на составные, более мелкие части и спокойно их переправляет через проблемный сервер. «Куски» пакета доставляются адресату и протокол IP объединяет их в единое целое. Свойство IP, которое может дробить данные, а затем соединять их, называется фрагментацией.

Стоит сказать, что IP также может и запретить разбивать пакеты на составляющие. Если такие данные не могут пройти через узел полностью, то они будут уничтожены, а отправителю направлено сообщение о проблеме.

Заключение

Фрагментация — это разбиение IP пакет на несколько частей, фрагментов для передачи по сети с маленьким MTU. Фрагментации используются для объединения сетей построенных на основе разных технологий, у которых отличается MTU.

В заголовке Ip пакета для фрагментации используются три поля: идентификатор пакета, флаги и смещение фрагмента. Следует отметить, что в следующей версии протокола ipv6 отказались от фрагментации на маршрутизаторах, в IPv6  узлы отправителей должны сами подобрать максимальный размер пакета с помощью технологии Path MTU Discovery.

Рекомендую прочесть статьи про протокол IP и IP маршрутизацию в компьютерных сетях.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector