Протоколы ARP, RARP, ICMP, IGMP
Протокол преобразования адресов ARP
Протокол преобразования адресов ARP
ARP (англ. Address Resolution Protocol - протокол разрешения адресов) представляет собой сетевой протокол, предназначенный для преобразования IP-адресов (адресов сетевого уровня) в MAC-адреса (адреса канального уровня) в сетях TCP/IP. Т.е. для отображения IP-адресов в Ethernet адреса.
ARP-преобразование адресов выполняется путем поиска в таблице. Эта таблица, называемая также ARP-таблицей, хранится в памяти и содержит строки соответствия MAC/IP для каждого узла сети. Ниже приведен пример простейшей ARP-таблицы:
IP-адрес | Ethernet-адрес
192.168.0.1 |08:00:34:00:2F:C3
192.168.0.2 |08:00:5A:71:A7:72
192.168.0.3 |08:00:10:98:AC:24
ARP-таблицы строятся согласно документу RFC-1213 и для каждого IP-адреса содержит четыре кода:
ifindex | Физический порт (интерфейс), соответствующий данному адресу; |
Физический адрес | MAC-адрес, например Ethernet-адрес; |
IP-адрес | IP-адрес, соответствующий физическому адресу; |
тип адресного соответствия | это поле может принимать 4 значения: 1 - вариант не стандартный и не подходит ни к одному из описанных ниже типов; 2 - данная запись уже не соответствует действительности; 3 - постоянная привязка; 4 - динамическая привязка; |
ARP-таблица необходима потому, что IP-адреса и Ethernet-адреса выбираются независимо, и нет какого-либо алгоритма для преобразования одного в другой. IP-адрес выбирает менеджер сети с учетом положения машины в сети internet. Если машину перемещают в другую часть сети internet, то ее IP-адрес должен быть изменен. Ethernet-адрес выбирает производитель сетевого интерфейсного оборудования из выделенного для него по лицензии адресного пространства. Когда у машины заменяется плата сетевого адаптера, то меняется и ее Ethernet-адрес.
ARP Кэш
Эффективность функционирования ARP во многом зависит от ARP кэша (ARP cache), который присутствует на каждом хосте. В кэше содержатся Internet адреса и соответствующие им аппаратные адреса.
ARP кэш содержит:
Содержимое ARP кэша можно увидеть с использованием команды arp(8). Опция -a показывает все записи, содержащиеся в кэше:
bsdi % arp -a
sun (140.252.13.33) at 8:0:20:3:f6:42
svr4 (140.252.13.34) at 0:0:c0:c2:9b:26
Схема работы протокола ARP
Рассмотрим процедуру преобразования адресов при отправлении сообщения. Пусть прикладная программа одной ЭВМ отправляет сообщение другой. Прикладной программе IP-адрес места назначения обычно известен. Для определения Ethernet-адреса просматривается ARP-таблица. Если для требуемого IP-адреса в ней присутствует Ethernet-адрес, то формируется и посылается соответствующий пакет. Если же с помощью ARP-таблицы не удается преобразовать адрес, то выполняется следующее:
Каждая машина, принявшая ARP-запрос, в своем ARP-модуле сравнивает собственный IP-адрес с IP-адресом в запросе. Если IP-адрес совпал, то прямо по Ethernet-адресу отправителя запроса посылается ответ, содержащий как IP-адрес ответившей машины, так и ее Ethernet-адрес. После получения ответа на свой ARP-запрос машина имеет требуемую информацию о соответствии IP и Ethernet-адресов, формирует соответствующий элемент ARP-таблицы и отправляет IP-пакет, ранее поставленный в очередь. Если же в сети нет машины с искомым IP-адресом, то ARP-ответа не будет и не будет записи в ARP-таблицу. Протокол IP будет уничтожать IP-пакеты, предназначенные для отправки по этому адресу.
Формат пакета ARP
Функционально, ARP делится на две части. Одна - определяет физический адрес при посылке пакета, другая отвечает на запросы других машин. ARP-пакеты вкладываются непосредственно в ethernet-кадры.
Тип оборудования - это тип интерфейса, для которого отправитель ищет адрес; код содержит 1 для Ethernet.
Тип протокола - содержит код типа протокола. (для IP это 0800H)
HA-Len - длина аппаратного адреса;
PA-Len - длина протокольного адреса (длина в байтах, например, для IP-адреса PA-Len=4).
Поле код операции определяет, является ли данный пакет ARP-запросом (код = 1), ARP-откликом (2), RARP-запросом (3), или RARP-откликом (4). Это поле необходимо, как поле тип кадра в Ethernet пакетах, они идентичны для ARP-запроса и отклика.
Протокол Proxy- ARP
Еще одна разновидность протокола ARP служит для того, чтобы один и тот же сетевой префикс адреса можно было использовать для двух сетей. Этот протокол называется смешанным протоколом ARP (proxy).
В смешанном протоколе ARP нескольким IP-адресам ставится в соответствие один и тот же физический адрес. Поэтому системы, где предусмотрен контроль за соответствием физических и IP-адресов, не могут работать со смешанным протоколом ARP. Главным преимуществом этого протокола является то, что он позволяет путем добавления одного маршрутизатора (Gateway) подключить к Интернет еще одну сеть, не изменяя таблиц маршрутизации в других узлах. Протокол используется при построении сетей Интранет.
Протокол обратного адресного преобразования RARP
RARP (англ. Reverse Address Resolution Protocol - обратный протокол преобразования адресов) - протокол третьего (сетевого) уровня модели OSI - выполняет обратное отображение адресов, то есть преобразует аппаратный (MAC) адрес в IP-адрес.
Назначение протокола RARP
Протокол применяется во время загрузки узла (например, компьютера), когда он посылает групповое сообщение-запрос со своим физическим адресом. Сервер принимает это сообщение и просматривает свои таблицы (либо перенаправляет запрос куда-либо еще) в поисках соответствующего физическому IP-адреса. После обнаружения найденный адрес отсылается обратно на запросивший его узел. Другие станции также могут "слышать" этот диалог и локально сохранить эту информацию в своих ARP- таблицах. RARP позволяет разделять IP-адреса между не часто используемыми хост-узлами. После использования каким-либо узлом IP-адреса он может быть освобожден и выдан другому узлу.
Протокол RARP предполагает наличие специального сервера, обслуживающего RARP-запросы и хранящего базу данных о соответствии аппаратных адресов протокольным.
Формат RARP-сообщения
Этот протокол работает с любой транспортной средой, в случае же кадра Ethernet в поле тип будет записан код 803516.
Здесь обозначения те же, что и в описании ARP-формата. Для Internet PA-Len=4 и тип протокола=2048, а для Ethernet равно HA-Len=6 и тип оборудования=1. В RARP используется два кода операции. Код операции=3 используется для RARP-запросов, а код операции=4 - для RARP-откликов. В первом случае поле протокольный адрес отправителя и протокольный адрес адресата не определены. Обычно локальная сеть имеет несколько RARP-серверов, что позволяет загрузиться бездисковым машинам, даже если какой-то из серверов выключен или не исправен.
Протокол ICMP.
Назначение протокола ICMP
Протокол обмена управляющими сообщениями ICMP (Internet Control Message Protocol) позволяет маршрутизатору сообщить конечному узлу об ошибках, с которыми машрутизатор столкнулся при передаче какого-либо IP-пакета от данного конечного узла. Протокол ICMP описан в RFC 792 и является стандартом Интернета. Текущая версия ICMP для IPv4 называется ICMPv4.
Управляющие сообщения ICMP не могут направляться промежуточному маршрутизатору, который участвовал в передаче пакета, с которым возникли проблемы, так как для такой посылки нет адресной информации - пакет несет в себе только адрес источника и адрес назначения, не фиксируя адреса промежуточных маршрутизаторов.
Протокол ICMP - это протокол сообщения об ошибках, а не протокол коррекции ошибок. Конечный узел может предпринять некоторые действия для того, чтобы ошибка больше не возникала, но эти действия протоколом ICMP не регламентируются.
Каждое сообщение протокола ICMP передается по сети внутри пакета IP. Пакеты IP с сообщениями ICMP маршрутизируются точно так же, как и любые другие пакеты, без приоритетов, поэтому они также могут теряться. Кроме того, в загруженной сети они могут вызывать дополнительную загрузку маршрутизаторов. Для того, чтобы не вызывать лавины сообщения об ошибках, потери пакетов IP, переносящие сообщения ICMP об ошибках, не могут порождать новые сообщения ICMP.
Формат ICMP-пакета
Существует несколько типов сообщений ICMP. Каждый тип сообщения имеет свой формат, при этом все они начинаются с общих трех полей:
Сообщение ICMP всегда содержит заголовок и первые 64 бита данных пакета IP, который вызвал ошибку (для более точно анализа причины ошибки)
Поле типа может иметь следующие значения:
Эхо-ответ (Echo Replay) | |
Узел назначения недостижим (Destination Unreachable) | |
Подавление источника (Source Quench) | |
Перенаправление маршрута (Redirect) | |
Эхо-запрос (Echo Request) | |
Истечение времени дейтаграммы (Time Exceeded for a Datagram) | |
Проблема с параметром пакета (Parameter Problem on a Datagram) | |
Запрос отметки времени (Timestamp Request) | |
Ответ отметки времени (Timestamp Replay) | |
Запрос маски (Address Mask Request) | |
Ответ маски (Address Mask Replay) |
Утилита ping
Диагностическая программа: PING (отправитель пакетов Internet)
Как правило, в диагностических целях используются программы ping и traceroute. Они могут работать из Unix или из MSDOS. Программа Ping была написана Майком Муссом и предназначена для тестирования любого доступного хоста. Программа отправляет хосту ICMP сообщение запроса отклика, а затем ожидает возврат ICMP отклика. Ping измеряет время передачи сообщения туда и обратно, что косвенно индицирует, на сколько далеко расположен хост.
Программа Ping, которая отправляет запрос отклика, называется клиент, а адресованный хост называется сервер. Большинство TCP/IP реализаций поддерживают Ping-сервер непосредственно ядром, т.к. сервер это не пользовательский процесс.
Утилита traceroute
Утилита traceroute позволяет просматривать путь маршрутизации пакета от пользователя до удаленного хоста. Она часто используется сетевыми и системными администраторами как средство отладки маршрутизации пакетов из локальной сети организации в Internet.
Принцип работы traceroute заключается в том, что IP-датаграмма, содержащая это ICMP-сообщение, имеет в качестве адреса источника IP-адрес маршрутизатора.
Теперь легко понять, как работает traceroute. На хост назначения отправляется IP- датаграмма с TTL, равным единице. Первый маршрутизатор, который должен обработать датаграмму, уничтожает ее (так как TTL равно 1) и отправляет ICMP-сообщение об истечении времени (time exceeded). Таким образом определяется первый маршрутизатор в маршруте. Затем traceroute отправляет датаграмму с TTL, равным 2, что позволяет получить IP-адрес второго маршрутизатора. Так продолжается до тех пор, пока датаграмма не достигнет хоста назначения. Утилита traceroute может посылать в качестве такой датаграммы UDP-сообщение с номером порта, который заведомо не будет обработан приложением (порт выше 30000), поэтому хост назначения ответит "порт недоступен" (port unreachable). При получении такого ответа делается вывод, что удаленный хост работает корректно. В противном случае максимального значения TTL (по умолчанию 30) не хватило для того, чтобы его достигнуть.
В процессе обмена UDP- и ICMP-сообщениями формируется таблица задержек маршрутизации пакетов на каждом из узлов и на пути к удаленному хосту в целом. Эта информация и выводится на экран пользователя
Протокол IGMP: протокол управления группами Internet
Назначение протокола IGMP
Протокол управления группами Internet (IGMP - Internet Group Management Protocol) используется хостами и маршрутизаторами, для того чтобы поддерживать групповую рассылку сообщений. Он позволяет всем системам физической сети знать, какие хосты в настоящее время объединены в группы и к каким группам они принадлежат. Эта информация необходима для групповых маршрутизаторов, именно так они узнают, какие групповые датаграммы необходимо перенаправлять и на какие интерфейсы. IGMP определен в RFC 1112.
IGMP сообщения передаются в IP датаграммах. IGMP имеет сообщение фиксированного размера, без необязательных данных.
Формат IGMP-сообщений
Поле версии IGMP (IGMP version) установлено в 1. Поле тип IGMP (IGMP type) устанавливается в 1 для запроса, посылаемого групповым маршрутизатором, и в 2 для ответа, отправляемого хостом.
Групповой адрес (group address) это IP адрес класса D. В запросе поле группового адреса устанавливается в 0. В отчете оно содержит групповой адрес.
Список источников