IP (англ. Internet Protocol — межсетевой протокол) — маршрутизируемый сетевой протокол, основа стека протоколов TCP/IP.

Протокол IP (RFC 791) используется для негарантированной доставки данных (разделяемых на так называемые пакеты) от одного узла сети к другому. Это означает, что на уровне этого протокола (третий уровень сетевой модели OSI) не даётся гарантий надёжной доставки пакета до адресата. В частности, пакеты могут прийти не в том порядке, в котором были отправлены, продублироваться (когда приходят две копии одного пакета; в реальности это бывает крайне редко), оказаться повреждёнными (обычно повреждённые пакеты уничтожаются) или не прибыть вовсе. Гарантии безошибочной доставки пакетов дают протоколы более высокого (транспортного) уровня сетевой модели OSI — например, TCP — которые IP используют в качестве транспорта.

В современной сети Интернет используется IP четвёртой версии, также известный как IPv4. В протоколе IP этой версии каждому узлу сети ставится в соответствие IP-адрес длиной 4 октета (иногда говорят «байта», подразумевая распространённый восьмибитовый минимальный адресуемый фрагмент памяти ЭВМ; название «октет» идёт с тех времён, когда байты на разных компьютерах содержали разное число битов). При этом компьютеры в подсетях объединяются общими начальными битами адреса. Количество этих бит, общее для данной подсети, называется маской подсети (ранее использовалось деление пространства адресов по классам — A, B, C; класс сети определялся диапазоном значений старшего октета и определял число адресуемых узлов в данной сети, сейчас используется бесклассовая адресация).

В настоящее время вводится в эксплуатацию шестая версия протокола — IPv6, которая позволяет адресовать значительно большее количество узлов, чем IPv4. Эта версия отличается повышенной разрядностью адреса, встроенной возможностью шифрования и некоторыми другими особенностями. Переход с IPv4 на IPv6 связан с трудоёмкой работой операторов связи и производителей программного обеспечения и не может быть выполнен одномоментно. На начало 2007 года в Интернете присутствовало около 760 сетей, работающих по протоколу IPv6. Для сравнения, на то же время в адресном пространстве IPv4 присутствовало более 203 тысяч сетей, но в IPv6 сети гораздо более крупные, нежели в IPv4.

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

Диапазоны для локальных сетей
При подключении пользовательского компьютера к Интернету, IP-адреса выбираются из диапазона, предоставленного провайдером. Компьютеры, не имеющие IP-адреса, выданного провайдером, могут (при правильной настройке маршрутизации[1]) работать с другими локальными компьютерами, имея IP-адреса из диапазонов, зарезервированных для локальных сетей (RFC 1918)[2]:

    * 10.0.0.0 — 10.255.255.255 (одна сеть класса A или 16777216 хостов)
    * 172.16.0.0 — 172.31.255.255 (шестнадцать сетей класса B или 1048576 хостов )
    * 192.168.0.0 — 192.168.255.255 (256 сетей класса C или 65536 хостов)
    * сеть 2001:0DB8::/32 в IPv6 — зарезервировано для примеров и документации

Компьютеры с такими адресами могут получать доступ к Интернету посредством прокси-серверов или NAT. Иногда в компьютерном сленге адреса из указанных диапазонов для локальных сетей называются плю́шевыми IP.

При построении сетей, составляющих Интернет (например, сетей провайдеров), выбираются строго определённые диапазоны адресов, назначенные организацией IANA (подконтрольна ICANN, «высшей инстанции» в вопросах резервирования диапазонов адресов) и имеет свои представительства по всему миру[3] — например, в Европе распределение адресов координирует RIPE NCC.


ICMP (англ. Internet Control Message Protocol
— межсетевой протокол управляющих сообщений) — сетевой протокол, входящий в стек протоколов TCP/IP. В основном ICMP используется для передачи сообщений об ошибках и других исключительных ситуациях, возникших при передаче данных. Также на ICMP возлагаются некоторые сервисные функции.

Протокол ICMP описан в RFC 792 (с дополнениями в RFC 950) и является стандартом Интернета (входит в стандарт STD 5 вместе с IP). Хотя формально ICMP использует IP (ICMP пакеты инкапсулируются в IP пакеты), он является неотъемлемой частью IP и обязателен при реализации стека TCP/IP. Текущая версия ICMP для IPv4 называется ICMPv4. В IPv6 существует аналогичный протокол ICMPv6.

Протокол ICMP не делает протокол IP средством надёжной доставки сообщений. Для этих целей существует TCP.

ICMP сообщения (тип 12) генерируются при нахождении ошибок в заголовке IP пакета (за исключением самих ICMP пакетов, дабы не привести к бесконечно растущему потоку ICMP сообщений об ICMP сообщениях).

ICMP сообщения (тип 3) генерируются маршрутизатором при отсутствии маршрута к адресату.

Утилита ping, служащая для проверки возможности доставки IP пакетов использует ICMP сообщения с типом 8 (эхо-запрос) и 0 (эхо-ответ).

Утилита traceroute, отображающая путь следования IP пакетов, использует ICMP сообщения с типом 11.

ICMP сообщения с типом 5 используются маршрутизаторами для обновления записей в таблице маршрутизации отправителя.

ICMP сообщения с типом 4 используются получателем (или промежуточным маршрутизатором) для управления скоростью отправки сообщений отправителем.

Типы ICMP пакетов (полный список)

    * 0 — Эхо-ответ
    * 1 — Зарезервировано
    * 2 — Зарезервировано
    * 3 — Адресат недоступен

код 0 — Сеть недостижима
код 1 — Хост недостижим
код 2 — Протокол недостижим
код 3 — Порт недостижим
код 4 — Необходима фрагментация, но установлен флаг ее запрета (DF)
код 5 — Неверный маршрут от источника
код 6 — Сеть назначения неизвестна
код 7 — Хост назначения неизвестен
код 8 — Хост источник изолирован
код 9 — Сеть административно запрещена
код 10 — Хост административно запрещен
код 11 — Сеть недоступна для TOS
код 12 — Хост недоступен для TOS
код 13 — Коммуникации административно запрещены

    * 4 — Сдерживание источника (отключение источника при переполнении очереди)
    * 5 — Перенаправление

код 0 — Перенаправление пакетов в сеть
Код 1 — Перенаправление пакетов к хосту
Код 2 — Перенаправление для каждого типа обслуживания (TOS)
Код 3 — Перенаправление пакета к хосту для каждого типа обслуживания

    * 6 — Альтернативный адрес хоста
    * 7 — Зарезервировано
    * 8 — Эхо-запрос
    * 9 — Объявление маршрутизатора (RFC-1256)
    * 10 — Запрос маршрутизатора (RFC-1256)
    * 11 — Превышение временного интервала (для дейтаграммы время жизни истекло)

код 0 — Время жизни пакета (TTL) истекло при транспортировке
код 1 — Время жизни пакета (время сборки фрагментов) истекло при дефрагментации

    * 12 — Неверный параметр (проблема с параметрами дейтаграммы: ошибка в IP-заголовке или отсутствует необходимая опция)

код 0 — Указатель говорит об ошибке
код 1 — Отсутствует требуемая опция
код 2 — Некорректная длина

    * 13 — Запрос метки времени
    * 14 — Ответ с меткой времени
    * 15 — Информационный запрос
    * 16 — Информационный ответ
    * 17 — Запрос адресной маски (RFC-950)
    * 18 — Отклик на запрос адресной маски (RFC-950)
    * 19 — Зарезервировано (для обеспечения безопасности)
    * 20-29 — Зарезервировано (для экспериментов на устойчивость к ошибкам)
    * 30 — Трассировка маршрута (RFC-1393)
    * 31 — Ошибка преобразования дейтаграммы (RFC-1475)
    * 32 — Перенаправление для мобильного хоста
    * 33 — IPv6 Where-Are-You (где вы находитесь)
    * 34 — IPv6 I-Am-Here (я здесь)
    * 35 — Запрос перенаправления для мобильного хоста
    * 36 — Отклик на запрос перенаправления для мобильного хоста
    * 37 — Запрос доменного имени (Domain Name Request)
    * 38 — Ответ на запрос доменного имени (Domain Name Reply)
    * 39 — SKIP
    * 39 — Photuris

код 0 — Зарезервировано
код 1 — Неизвестный индекс параметров безопасности (Unkown Security Parameters Index)
код 2 — Параметры безопасности верны, но произошла ошибка аутентификации (Valid Security Parameters, but Authentication Failed)
код 3 — Параметры безопасности верны, но произошел сбой при дешифровке (Valid Security Parameters, but Decryption Failed)

    * 41-255 — Зарезервировано


IGMP (англ. Internet Group Management Protocol
— протокол управления группами Интернета) сетевой протокол, используется узлами в сети, основанной на протоколе IPv4, для сообщения принадлежности к IP-группе сетевым маршрутизаторам, а также выполнения других функций управления групповой маршрутизацией.

IGMP версии 3 определён в RFC 3376. Предыдущие версии IGMP определены в RFC 2236 (версия 2) и RFC 1112 (версия 1).

OSPF (англ. Open Shortest Path First) — протокол динамической маршрутизации, основанный на технологии отслеживания состояния канала (link-state technology) и использующий для нахождения кратчайшего пути Алгоритм Дейкстры (Dijkstra's algorithm).

Протокол OSPF был разработан IETF в 1988 году. Последняя версия протокола представлена в RFC 2328. Протокол OSPF представляет собой протокол внутреннего шлюза (Interior Gateway Protocol — IGP). Протокол OSPF распространяет информацию о доступных маршрутах между маршрутизаторами одной автономной системы.

OSPF предлагает решение следующих задач:

    * Увеличение скорости сходимости (в сравнении с протоколом RIP2, т.к. нет необходимости выжидания многократных таймаутов по 30с);
    * Поддержка сетевых масок переменной длины (VLSM);
    * Достижимость сети (быстро обнаруживаются отказавшие маршрутизаторы, и топология сети изменяется сооответствующим образом);
    * Оптимальное использование пропускной способности (т.к строится минимальный остовный граф по алгоритму Дейкстры);
    * Метод выбора пути.

Терминология протокола OSPF
    * Интерфейс (interface) — соединение маршрутизатора и одной из подключенных к нему сетей. При обсуждении OSPF термины интерфейс и канал (link) часто употребляются как синонимы.
    * Объявление о состоянии канала (link-state advertisement, LSA) — объявление описывает все каналы маршрутизатора, все интерфейсы и состояние каналов.
    * Состояние канала (link state) — состояние канала между двумя маршрутизаторами; обновления происходят при помощи пакетов LSA.
    * Метрика (metric) — условный показатель "стоимости" пересылки данных по каналу;
    * Автономная система (autonomous system) — группа маршрутизаторов, обменивающаяся маршрутизирующей информацией с помощью одного протокола маршрутизации.
    * Зона (area) — совокупность сетей и маршрутизаторов, имеющих один и тот же идентификатор зоны.
    * Соседи (neighbours) — два маршрутизатора, имеющие интерфейсы в общей сети.
    * Состояние соседства (adjacency) — взаимосвязь между определенными соседними маршрутизаторами установленная с целью обмена информацией маршрутизации.
    * Hello-протокол (hello protocol) — используется для поддержания соседских отношений.
    * База данных соседей (neighbours database) — список всех соседей.
    * База данных состояния каналов (link state database, LSDB) — список всех записей о состоянии каналов. Встречается также термин топологическая база данных (topological database), употребляется как синоним базы данных состояния каналов.
    * Идентификатор маршрутизатора (router ID, RID) — уникальное 32-битовое число, которое уникально идентифицирует маршрутизатор в пределах одной автономной системы.

Описание работы протокола
   1. Маршрутизаторы обмениваются hello-пакетами через все интерфейсы, на которых активирован OSPF. Маршрутизаторы, разделяющие общий канал передачи данных, становятся соседями, когда они приходят к договоренности об определенных параметрах, указанных в их hello-пакетах.
   2. На следующем этапе работы протокола маршрутизаторы будут пытаться перейти в состояние соседства с маршрутизаторами, находящимися с ним в пределах прямой связи (на расстоянии одного хопа). Переход в состояние соседства определяется типом маршрутизаторов, обменивающихся hello-пакетами, и типом сети, по которой передаются hello-пакеты. OSPF определяет несколько типов сетей и несколько типов маршрутизаторов. Пара маршрутизаторов, находящихся в состоянии соседства, синхронизирует между собой базу данных состояния каналов.
   3. Каждый маршрутизатор посылает объявление о состоянии канала маршрутизаторам, с которыми он находится в состоянии соседства.
   4. Каждый маршрутизатор, получивший объявление от соседа, записывает передаваемую в нём информацию в базу данных состояния каналов маршрутизатора и рассылает копию объявления всем другим своим соседям.
   5. Рассылая объявления через зону, все маршрутизаторы строят идентичную базу данных состояния каналов маршрутизатора.
   6. Когда база данных построена, каждый маршрутизатор использует алгоритм «кратчайший путь первым» для вычисления графа без петель, который будет описывать кратчайший путь к каждому известному пункту назначения с собой в качестве корня. Этот граф — это дерево кратчайшего пути.
   7. Каждый маршрутизатор строит таблицу маршрутизации из своего дерева кратчайшего пути.

Типы сетей, поддерживаемые протоколом OSPF

    * Широковещательные сети со множественным доступом (Ethernet, Token Ring)
    * Точка-точка (T1, E1, коммутируемый доступ)
    * Нешироковещательные сети со множественным доступом (NBMA) (Frame relay)
    * Виртуальные каналы (virtual links)

Выделенный маршрутизатор (DR) и резервный выделенный маршрутизатор (BDR)
В сетях со множественным доступом отношения соседства должны быть установлены между всеми маршрутизаторами. Это приводит к тому, что рассылается большое количество копий LSA. Если, к примеру, количество маршрутизаторов в сети со множественным доступом равно n, то будет установлено n(n-1)/2 отношений соседства. Каждый маршрутизатор будет рассылать n-1 LSA своим соседям, плюс одно LSA для сети, в результате сеть сгенерирует n² LSA.

Для предотвращения проблемы рассылки копий LSA в сетях со множественным доступом выбираются DR и BDR.

Выделенный маршрутизатор (designated router, DR) — управляет процессом рассылки LSA в сети. Каждый маршрутизатор сети устанавливает отношения соседства с DR. Информация об изменениях в сети отправляется DR маршрутизатором обнаружившим это изменение, а DR отвечает за то, чтобы эта информация была отправлена остальным маршрутизаторам сети.

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

Резервный выделенный маршрутизатор (backup designated router, BDR). Каждый маршрутизатор сети устанавливает отношения соседства не только с DR, но и BDR. DR и BDR также устанавливают отношения соседства и между собой. При выходе из строя DR, BDR становится DR и выполняет все его функции. Так как маршрутизаторы сети установили отношения соседства с BDR, время недоступности сети минимизируется.

Маршрутизатор, выбранный DR или BDR в одной присоединённой к нему сети со множественным доступом, может не быть DR (BDR) в другой присоединённой сети. Роль DR (BDR) является свойством интерфейса, а не свойством всего маршрутизатора.

Таймеры протокола
    * HelloInterval — Интервал времени в секундах по истечению которого маршрутизатор отправляет следующий hello-пакет с интерфейса. Для широковещательных сетей и сетей точка-точка значение по умолчанию, как правило, 10 секунд. Для нешироковещательных сетей со множественным доступом значение по умолчанию 30 секунд.
    * RouterDeadInterval — Интервал времени в секундах по истечению которого сосед будет считаться "мертвым". Этот интервал должен быть кратным значению HelloInterval. Как правило, RouterDeadInterval равен 4 интервалам отправки hello-пакетов, то есть 40 секунд.
    * Wait Timer — Интервал времени в секундах по истечению которого маршрутизатор выберет DR в сети. Его значение равно значению интервала RouterDeadInterval.
    * RxmtInterval — Интервал времени в секундах по истечению которого маршрутизатор повторно отправит пакет на который не получил подтверждения о получении (например, Database Description пакет или Link State Request пакеты). Это интервал называется также Retransmit interval. Значение интервала 5 секунд.

Типы маршрутизаторов
Внутренний маршрутизатор (internal router)
— маршрутизатор все интерфейсы которого принадлежат одной зоне. У таких маршрутизаторов только одна база данных состояния каналов.

Пограничный маршрутизатор (area border router, ABR)
— соединяет одну или больше зон с магистральной зоной и выполняет функции шлюза для межзонального трафика. У пограничного маршрутизатора всегда хотя бы один интерфейс принадлежит магистральной зоне. Для каждой присоединенной зоны маршрутизатор поддерживает отдельную базу данных состояния каналов.

Магистральный маршрутизатор (backbone router)
— маршрутизатор у которого всегда хотя бы один интерфейс принадлежит магистральной зоне. Определение похоже на пограничный маршрутизатор, однако магистральный маршрутизатор не всегда является пограничным. Внутренний маршрутизатор интерфейсы которого принадлежат нулевой зоне, также является магистральным.

Пограничный маршрутизатор автономной системы (AS boundary router, ASBR)
— обменивается информацией с маршрутизаторами принадлежащими другим автономным системам. Пограничный маршрутизатор автономной системы может находиться в любом месте автономной системы и быть внутренним, пограничным или магистральным маршрутизатором.

Типы объявлений о состоянии канала (LSA)

Type 1 LSA — Router LSA — объявление о состоянии каналов маршрутизатора. Эти LSA распространяются всеми маршрутизаторами. В LSA содержится описание всех каналов маршрутизатора и стоимость (cost) каждого канала. Распространяются только в пределах одной зоны.

Type 2 LSA — Network LSA — объявление о состоянии каналов сети. Распространяется DR в сетях со множественным доступом. В LSA содержится описание всех маршрутизаторов присоединенных к сети, включая DR. Распространяются только в пределах одной зоны.

Type 3 LSA — Network Summary LSA — суммарное объявление о состоянии каналов сети. Объявление распространяется пограничными маршрутизаторами. Объявление описывает только маршруты к сетям вне зоны и не описывает маршруты внутри автономной системы. Пограничный маршрутизатор отправляет отдельное объявление для каждой известной ему сети.

Когда маршрутизатор получает Network Summary LSA от пограничного маршрутизатора он не запускает алгоритм вычисления кратчайшего пути. Маршрутизатор просто добавляет к стоимости маршрута указанного в LSA стоимость маршрута к пограничному маршрутизатору. Затем маршрут к сети через пограничный маршрутизатор помещается в таблицу маршрутизации.

Type 4 LSA — ASBR Summary LSA — суммарное объявление о состоянии каналов пограничного маршрутизатора автономной системы. Объявление распространяется пограничными маршрутизаторами. ASBR Summary LSA отличается от Network Summary LSA тем, что распространяется информация не о сети, а о пограничном маршрутизаторе автономной системы.

Type 5 LSA — AS External LSA — объявления о состоянии внешних каналов автономной системы. Объявление распространяется пограничным маршрутизатором автономной системы в пределах всей автономной системы. Объявление описывает маршруты внешние для автономной системы OSPF или маршруты по умолчанию (default route) внешние для автономной системы OSPF.

Type 7 LSA — AS External LSA for NSSA — объявления о состоянии внешних каналов автономной системы в NSSA зоне. Это объявление может передаваться только в NSSA зоне. На границе зоны пограничный маршрутизатор преобразует type 7 LSA в type 5 LSA.

Типы зон
При разделении автономной системы на зоны, маршрутизаторам принадлежащим к одной зоне не известна информация о детальной топологии других зон.

Разделение на зоны позволяет:

    * Снизить нагрузку на ЦП маршрутизаторов за счет уменьшения количества перерасчетов по алгоритму OSPF
    * Уменьшить размер таблиц маршрутизации
    * Уменьшить количество пакетов обновлений состояния канала

Каждой зоне присваивается идентификатор зоны (area ID). Идентификатор может быть указан в десятичном формате или в формате записи IP-адреса. Однако идентификаторы зон не являются IP-адресами и могут совпадать с любым назначенным IP-адресом.

Магистральная зона (backbone area)

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


Протокол RIP (англ. Routing Information Protocol)
— один из наиболее распространенных протоколов маршрутизации в небольших компьютерных сетях, который позволяет маршрутизаторам динамически обновлять маршрутную информацию (направление и дальность в хопах), получая ее от соседних маршрутизаторов.

История
Алгоритм маршрутизации RIP (алгоритм Беллмана — Форда) был впервые разработан в 1969 г., как основной для сети ARPANET.

Прототип протокола RIP — Gateway Information Protocol, часть пакета PARC Universal Packet.

Версия RIP, которая поддерживает протокол интернета была включена в пакет BSD операционной системы Unix под названием routed (route daemon), а также многими производителями, реализовавшими свою версию этого протокола. В итоге протокол был унифицирован в документе RFC 1058.

В 1994 г. был разработан протокол RIP2 (RFC 2453), который является расширением протокола RIP, обеспечивающим передачу дополнительной маршрутной информации в сообщениях RIP и повышающим уровень безопасности.
Для работы в среде IPv6 была разработана версия RIPng.

Техническая информация
RIP — так называемый дистанционно-векторный протокол, который оперирует хопами в качестве метрики маршрутизации. Максимальное количество хопов, разрешенное в RIP — 15 (метрика 16 означает «бесконечно большую метрику»). Каждый RIP-маршрутизатор по умолчанию вещает в сеть свою полную таблицу маршрутизации раз в 30 секунд, генерируя довольно много трафика на низкоскоростных линиях связи. RIP работает на прикладном уровне стека TCP/IP, используя UDP порт 520.

В современных сетевых средах RIP — не самое лучшее решение для выбора в качестве протокола маршрутизации, так как его возможности уступают более современным протоколам, таким как EIGRP, OSPF. Ограничение на 15 хопов не дает применять его в больших сетях. Преимущество этого протокола — простота конфигурирования.

IPX (англ. Internetwork Packet Exchange) — протокол сетевого уровня модели OSI в стеке протоколов SPX. Он предназначен для передачи датаграмм, являясь неориентированным на соединение (так же, как IP и NetBIOS), и обеспечивает связь между NetWare-серверами и конечными станциями.

Стек протоколов IPX/SPX был разработан Novell для ее проприетарной сетевой операционной системы NetWare. За основу IPX был взят протокол IDP из стека протоколов Xerox Network Services.

С конца 1980-х и до середины 1990-х годов сети на основе IPX были широко распространены из-за большой популярности NetWare. Однако в дальнейшем с развитием Интернета и стека TCP/IP оригинальный транспортный протокол SPX от Novell не способствовал успеху IPX-сетей. Из-за стремительного роста популярности TCP/IP сети на основе IPX в настоящее время имеют шансы исчезнуть.

В качестве адреса хоста IPX использует идентификатор, образованный из четырёхбайтного номера сети (назначаемого маршрутизаторами) и MAC-адреса сетевого адаптера.