Data Stream InterfaceData Stream Interface (с англ. — «Интерфейс потока данных») или DSI — сеансовый уровень, разработанный компанией Apple, который отвечал за перемещение трафика AFP (Apple Filing Protocol) через TCP. Краткий обзорКогда в 1990-х годах Apple представила свою реализацию TCP в виде MacTCP и Open Transport для Mac OS 7, им потребовалось, чтобы их протокол распространения файлов (AFP) работал одновременно и с TCP, и с AppleTalk. По совпадению, они представили протокол ASP (AppleTalk Session Protocol) и DSI с выпуском версии aFP 2.x. DSI встроен напрямую в AFP-клиенты, как, например, используемые в Mac OS и afpfs-ng. ПротоколDSI обеспечивает разговор между клиентом и сервером AFP. Все коммуникации DSI содержат в себе следующие заголовки: Структура пакета
Значения полей:
КомандыВсего имеется 7 возможных команд:[2]
Запросы и ответыПри получении большинства запросов DSI, клиент или сервер посылают ответное сообщение. Данное сообщение содержит:
Создание сессии, её поддержание и завершениеСессия запускается при помощи команды DSIOpenSession, отправляемой клиентом, которая будет включать в себя размер имеющегося у клиента буфера для приёма пакетов (т. н. квантов запросов, обычно 1024 байта). Сервер обрабатывает запрос и возвращает размер своего буфера приема данных (обычно 256 Кбайт на Mac OS X Leopard). Закрытие сессии может быть инициировано с любой стороны при помощи команды DSICloseSession. Отправитель не должен в ожидании ответа и должен немедленно завершить сессию после отправки данного сообщения. Поддержание связи осуществляется при помощи "щекотки" (англ. tickling). DSI предоставляет механизм для того, чтобы и клиент, и сервер знали, что другой всё ещё активен. Каждые 30 секунд отсутствия активности, сервер отправит запрос для привлечения внимания клиента. точно так же, клиент может отправить запрос серверу (это НЕ БУДЕТ являться ответным пакетом). Клиент или сервер могут самостоятельно завершить сессию, если не получат ответ от другого за 120 секунд. Клиент также может завершить сессию в момент отправления запроса, и тогда ни ответ, ни запрос активности не будет получен в ближайшие 60 секунд (начиная с версии Mac OS X v.10.2). Получение информации от сервера при помощи GetStatusДанная команда получает пакет типа FPGetSrvrInfo. Он используется клиентом для получения информации с сервера, к которому он не подключён. Элементы данных собираются в пакет с каталогом индексов, указывающих на структурированные данные.[3] Запрос на запрос DSIGetStatus приведет к ответу от сервера со следующей информацией:
Формат ответа DSIGetStatus идентичен формату FPGetSrvrInfo от AFP и используется для ASPGetStatus.[4] Коды ошибокКоды ошибок возвращают коды результатов AFP.[5] Дальнейшее развитиеDSI никогда не был отдельно задокументирован, и является гораздо более простым и статичным в сравнении с более старыми образцами, что делает его подходящим для современного применения. Концепты DSI идентичны по своему смыслу ASP, и поэтому обзор "Inside AppleTalk, Second Edition" может оказаться полезным. Самым кратким руководством можно назвать главу "AFP over TCP" из Apple Filing Protocol Programming Guide. Значительную часть информации для понимания DSI можно найти при анализе передач между клиентами AFP и серверами при помощи анализатора трафика. Примечания
|
Portal di Ensiklopedia Dunia