- •6. Сети tcp/ip
- •6.1. Архитектура стека протоколов tcp/ip
- •6.2.1. Структура ip-пакета
- •6.2.2. Адресация в сетях ip
- •6.2.3. Разрешение ip-адресов в физические адреса сетевых устройств. Протокол arp
- •6.2.5. Icmp-протокол обмена управляющей информацией
- •6.2.5. Ip маршрутизация
- •6.2.6. Обработка ip-пакетов маршрутизатором
6.2.3. Разрешение 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 |
2 |
Broadcast |
FFFFFFFFFFFF |
Static |
10.0.0.0 |
1 |
Broadcast |
FFFFFFFFFFFF |
Static |
10.0.0.10 |
1 |
Local |
080002145DE6 |
Static |
20.0.0.10 |
2 |
Local |
080002145DE5 |
Static |
10.0.0.1 |
1 |
External |
080002A56BC0 |
ARP |
20.0.0.1 |
2 |
External |
080002A719DD |
ARP |
Протокол ARP достаточно универсален, и его можно применять в сетях, использующих любые технологии на сетевом и канальном уровнях. ARP-сообщения имеют формат, представленный на рис. 6.7; они переносятся кадром канального протокола в его поле «Данные».
В поле «Тип сети» указывается код канального протокола; для Ethernet указывается значение 1, определены значения этого поля и для других технологий канального уровня. Поле «Тип протокола» определяет протокол сетевого уровня. Эти поля совместно с полями «Длина аппаратного адреса» и «Длина сетевого адреса» обеспечивают отмеченную выше универсальность протокола ARP. В поле «Тип операции» для ARP-запроса указывается 1, для ARP-ответа – 2.
Устройство, отправляющее ARP-запрос, заполняет в этом сообщении-запросе все поля, кроме искомого аппаратного адреса. Значение этого поля заполняется станцией, опознавшей свой IP-адрес в указанном значении поля «Сетевой адрес получателя» при формировании сообщения ARP-ответа.
