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

RFC 903, Страница 4 из 4

IV. Литература

[RFC826] David C. Plummer, «Протокол преобразования адресов Ethernet (ARP)», RFC 826, Ноябрь 1982.

Приложение A. Два примера реализации протокола для 4.2BSD Unix

Ниже приведены два наброска различных вариантов реализации сервера RARP для 4.2BSD.

  • Обеспечивается доступ к пакетам канального уровня за пределами ядра. Сервер RARP полностью реализуется за пределами ядра и взаимодействует с ядром только для приема или передачи пакетов RARP. Ядро изменяется так, чтобы обеспечивался требуемый доступ к пакетам RARP; в настоящее время ядро 4.2 обеспечивает доступ только для пакетов IP. Одним из существующих механизмов, которые обеспечивают возможность доступа к пакетам является псевдо-драйвер пакетного фильтра CMU. Этот драйвер успешно используется в CMU и Стэнфорде (Stanford) для реализации подобных серверов в пользовательском пространстве.

  • Создается кэш записей базы данных внутри ядра. Полная база данных сервера RARP поддерживается пользовательским процессом за пределами ядра. Сам сервер RARP реализуется в ядре и использует в откликах содержимое кэша записей. Кэш может быть таким же, какой используется для пересылки ARP. Кэш заполняется записями из базы данных с использованием двух новых операций ioctl (они подобны SIOCIFADDR в том, что реально не связываются с конкретным сокетом). Одна из операций обеспечивает нахождение в «спящем» режиме при отсутствии транзакций, а при появлении запросов передает их пользовательскому процессу, а вторая заносит запись этой транзакции в таблицу ядра. Таким образом, если ядро не может найти запись в кэше, оно помещает запрос в (глобальную) очередь и вызывает функцию wakeup(). Реализация первой операции ioctl включает вызов sleep(), считывание из очереди первого объекта т возврата его пользовательскому процессу. Поскольку ядро не может находится в состоянии ожидания на уровне прерывания, пока пользовательский процесс ответит, оно может отказаться от обработки запроса (в предположении, что клиент повторит запрос) или, если вторая операция ioctl передаст копию запроса обратно в ядро, сформировать и передать отклик на этот запрос.

Страница 4 из 4

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