Разрешение IP-адресов в физические адреса сетевых устройств. Протокол ARP
Для доставки IP-пакета к станции назначения, или от одного маршрутизатора к другому, необходимо передать его протоколу канального уровня, например Ethernet. Последний же «умеет» передавать кадры только по физическим адресам устройств, подключенных к среде передачи. В IP-сетях задачу преобразования сетевых адресов в физические решает протокол ARP (Address Resolution Protocol). Идея его функционирования иллюстрируется рис. 6.6.
![]() |
Пусть хост Н1 хочет отослать пакет хосту Н3, MAC-адрес которого не известен. Хост Н1 генерирует так называемый ARP-запрос – специальный МАС-кадр, имеющий широковещательный адрес назначения. В поле данных этого кадра (собственно, поля ARP-запроса) находится IP-адрес хоста, MAC-адрес которого необходимо узнать. Каждый узел сети, получив такой кадр, сравнивает находящийся в нем IP-адрес со своим сетевым адресом. Если совпадение обнаружено, то этот хост посылает запрашивающей станции ответный кадр (ARP-ответ), содержащий его физический адрес. На всех остальных станциях сети кадры, содержащие ARP-запросы с «чужим» искомым IP-адресом, уничтожаются. Для того, чтобы уменьшить количество передаваемых в сети ARP-запросов, каждое сетевое устройство имеет специальную буферную память, в которой хранит ARP-таблицу. Последняя пополняется каждый раз, когда хост получает ARP-ответ, или широковещательный ARP-запрос, в котором указаны сетевой и физический адреса станции-отправителя.
В ARP-таблице могут быть как статические, так и динамические записи. Статические записи добавляются администратором и сохраняются в таблице до перезагрузки устройства. Кроме того, в таблице всегда содержится широковещательный адрес (FFFFFFFFFFFF), который позволяет обрабатывать широковещательные пакеты. Динамические записи добавляются и удаляются автоматически. Запись добавляется в результате получения ARP-ответа на запрос, инициированный данной станцией, а также в результате приема широковещательных ARP-запросов, отправленных любой из станций сегмента (из них извлекается IP- и MAC-адреса источника). Каждая такая запись имеет потенциальное время жизни. После добавления записи в таблицу включается специальный таймер и, если в течение первых двух минут запись не используется (станция, соответствующая записи, не отвечала на ARP-запросы, или не отправляла их сама), то запись удаляется; в противном случае, время жизни такой записи составляет некое предустановленную величину (обычно 5-10 минут). Требования к хостам (Host Requirements RFC) говорит, что запись из ARP-таблицы должна удаляться по тайм-ауту, даже если данная запись используется, однако большинство реализаций протокола не делают этого - они обновляют значения времени жизни записи каждый раз, когда происходит обращение к ней. Ниже приведен фрагмент ARP-таблицы маршрутизатора.
Таблица 6.5
IP-address | Port | Type | Media Address | Address Source |
20.0.0.0 | Broadcast | FFFFFFFFFFFF | Static | |
10.0.0.0 | Broadcast | FFFFFFFFFFFF | Static | |
10.0.0.10 | Local | 080002145DE6 | Static | |
20.0.0.10 | Local | 080002145DE5 | Static | |
10.0.0.1 | External | 080002A56BC0 | ARP | |
20.0.0.1 | External | 080002A719DD | ARP |
Протокол ARP достаточно универсален, и его можно применять в сетях, использующих любые технологии на сетевом и канальном уровнях. ARP-сообщения имеют формат, представленный на рис. 6.7; они переносятся кадром канального протокола в его поле «Данные».
![]() |
В поле «Тип сети» указывается код канального протокола; для Ethernet указывается значение 1, определены значения этого поля и для других технологий канального уровня. Поле «Тип протокола» определяет протокол сетевого уровня. Эти поля совместно с полями «Длина аппаратного адреса» и «Длина сетевого адреса» обеспечивают отмеченную выше универсальность протокола ARP. В поле «Тип операции» для ARP-запроса указывается 1, для ARP-ответа – 2.
Устройство, отправляющее ARP-запрос, заполняет в этом сообщении-запросе все поля, кроме искомого аппаратного адреса. Значение этого поля заполняется станцией, опознавшей свой IP-адрес в указанном значении поля «Сетевой адрес получателя» при формировании сообщения ARP-ответа.