RFC: 826
Оригинал: An Ethernet Address Resolution Protocol
Категория: Стандарт Интернета
Дата публикации:
Автор:
Перевод: Николай Малых

RFC 826, Страница 5 из 10

Прием пакета

При получении пакета преобразования адресов (Запрос ARP в современной терминологии. Прим. перев.) принявший пакет модуль Ethernet передает этот пакет модулю преобразования адресов, который реализует описанный ниже алгоритм. Отрицательный результат в приведенной иллюстрации алгоритма означает завершение обработки и отбрасывание пакета.

  • ? У меня имеется аппаратный адрес, заданный полем ar$hrd?
  • Да: (почти определенный результат)
  • [дополнительная проверка размера адреса — ar$hln]
  • ? Указанный в поле ar$pro протокол поддерживается?
  • Да:
  • [дополнительная проверка размера адреса — ar$pln]
  • Merge_flag := false
  • Если пара <тип протокола, протокольный адрес отправителя> уже присутствует в таблице преобразования, поле аппаратного адреса отправителя обновляется в соответствии с полученным пакетом и устанавливается Merge_flag = true.
  • ? У меня имеется протокольный адрес получателя?
  • Да:
  • Если Merge_flag = false, в таблицу преобразования добавляется триплет <тип протокола, протокольный адрес отиправителя, аппаратный адрес отправителя>.
  • ? Код операции ares_op$REQUEST? (смотрим код запрошенной операции!!)
  • Да:
  • Меняем местами протокольное и аппаратное поля, помещаем локальный протокольный и аппаратный адрес в соответствующие поля отправителя.
  • Устанавливаем ar$op = ares_op$REPLY
  • Передаем пакет с использованием аппаратного адреса отправителя в качестве адресата.

Отметим, что триплет <тип протокола, протокольный адрес отправителя, аппаратный адрес отправителя> включается в таблицу до просмотра кода операции. Это делается, исходя из предположения о наличии двухсторонней связи (если A имеет что-то сказать B, то B возможно тоже имеет что сказать A). Отметим также, что при наличии в таблице записи для пары <тип протокола, протокольный адрес отправителя> в ней просто изменяется соответствующим образом поле аппаратного адреса.

Обобщение: Поля ar$hrd и ar$hln позволяют использовать описанный здесь протокол и формат пакетов для сетей, отличных от Ethernet. Лоя сетей Ethernet поля <ar$hrd, ar$hln> имеют значения <1, 6>. Для сетей других типов поле ar$pro может не соответствовать полю Ethernet type, но это значение должно быть связано с протоколом, для которого выполняется преобразование адресов.

2007 - 2018 © Русские переводы RFC, IETF, ISOC.