Jump to content

Интерфейс потока данных

Интерфейс потока данных (DSI) — это сеансовый уровень, используемый для передачи трафика Apple Filing Protocol через протокол управления передачей .

Когда в 1990-х годах Apple представила TCP с MacTCP и Open Transport в System 7 , им нужно было, чтобы их протокол общего доступа к файлам (AFP) работал как на TCP, так и на AppleTalk . Они представили протокол сеансов AppleTalk (ASP) и DSI для TCP одновременно с AFP 2.x.

DSI реализуется непосредственно в клиентах AFP, например в Mac OS и afpfs-ng.

Протокол

[ редактировать ]

DSI используется между клиентом и сервером AFP. Вся связь DSI содержит следующий заголовок DSI:

Структура пакета

[ редактировать ]
Заголовок DSI [1]
Битовое смещение Биты 0–7 8-15 15-23 24-31
0 Флаги Команда Идентификатор запроса
32 Код ошибки/смещение вложенных данных
64 Общая длина данных
96 Сдержанный
128 Полезная нагрузка

Поля:

  • Флаги : является ли пакет запросом (0x00) или ответом (0x01).
  • Команда: одна из 7 возможных команд (см. ниже).
  • Идентификатор запроса: последовательный идентификатор, установленный в запросе и копируемый в ответе.
  • Код ошибки/смещение вложенных данных:
    • Для запросов это значение остается равным 0, за исключением случаев использования команды DSIWrite.
    • Для ответов это код ошибки.
  • Общая длина данных: вся длина данных после заголовка DSI.
  • Зарезервировано: для будущего расширения
  • Полезная нагрузка: здесь размещаются ограниченные данные DSI или, чаще всего, заголовок AFP.

Существует семь возможных команд: [2]

Команды DSI
Имя Код Направление Описание
DSICloseSession 1 Оба Закрывает установленную сессию
DSIКоманда 2 От клиента Прикрепленные полезные данные содержат команду AFP.
DSIGetStatus 3 От клиента Получить информацию о сервере
ДСИОпенсессион 4 От клиента Создать новую сессию
DSITickle 5 Оба Убедитесь, что соединение активно
DSIWrite 6 От клиента Запись данных на сервер
DSI Внимание 8 С сервера Привлеките внимание клиента

Запросы и ответы

[ редактировать ]

При получении большинства запросов DSI клиент или сервер отправляет ответное сообщение. Этот ответ содержит:

  • поле flags установлено в 0x01 (ответ)
  • поле команды установлено в то же значение, что и поле команды запроса
  • тот же идентификатор запроса, отправленный в запросе (используется клиентом для обнаружения подтвержденного запроса)
  • TotalDataLength соответствует длине полезных данных (если применимо).
  • где это применимо, сама полезная нагрузка данных, следующая за заголовком DSI. (Подробнее см. в отдельной команде.)

Команды DSITickle и DSICloseSession не вызывают ответа.

Создание, обслуживание и удаление сеанса

[ редактировать ]

Сеанс устанавливается клиентом, отправляющим DSIOpenSession, который будет включать размер буфера приема, который клиент имеет для пакетов (так называемый квант запроса, обычно 1024 байта). Сервер подтверждает запрос и возвращает размер своего буфера приема данных (обычно 256 КБ в Mac OS X Leopard).

Закрытие сеанса может быть инициировано любой стороной путем отправки DSICloseSession. Отправителю не нужно ждать ответа, и он должен немедленно закрыть сеанс после отправки сообщения.

Поддержание связи осуществляется щекоткой . DSI предоставляет механизм, гарантирующий, что клиент и сервер знают, что другой все еще активен. Каждые 30 секунд бездействия сервер отправляет клиенту запрос на щекотание. Аналогичным образом клиент также отправляет свой собственный сигнал. (Это НЕ ответный пакет.) Клиент или сервер могут завершить сеанс DSI, если они не получают ответа от другого в течение 120 секунд. Клиент также может отключиться, если запрос находится в процессе выполнения и ни ответа, ни щелчка не получено в течение 60 секунд (в Mac OS X v.10.2 и более поздних версиях).

Получение информации о сервере с помощью GetStatus

[ редактировать ]

Эта команда DSI инкапсулирует пакет FPGetSrvrInfo. Он используется клиентом для получения информации с сервера, на котором он не зарегистрирован.

Элементы данных организованы в пакет с каталогом индексов, указывающих на структурированные данные. [3]

Запрос на запрос DSIGetStatus приведет к тому, что сервер ответит следующей информацией:

  • флаги основных характеристик сервера
  • имя сервера (7-битный ASCII и UTF-8)
  • подпись: используется для уникальной идентификации сервера для других транзакций AFP.
  • тип сервера: обычно «Macintosh» или «Netatalk».
  • список строк, описывающих произносимые версии AFP (например, «AFP3.2»)
  • Список UAM: список строк, описывающих методы аутентификации пользователя (например, «DHX2»).
  • значок размером 64x64 пикселей
  • список серверов каталогов

Формат ответа DSIGetStatus идентичен формату FPGetSrvrInfo AFP и используется для ASPGetStatus. [4]

Коды ошибок

[ редактировать ]

Возвращенные коды ошибок являются кодами результатов AFP. [5]

Дальнейшие исследования

[ редактировать ]

DSI никогда не документируется отдельно и достаточно прост и статичен, поэтому старые ссылки подходят для современных реализаций. Концепции DSI идентичны протоколу сеансов AppleTalk (ASP), и обзор в журнале Inside AppleTalk, второе издание, может оказаться полезным.

Самым кратким руководством является «AFP через TCP» глава Руководства по программированию протокола Apple Filing Protocol .

Важный источник информации для понимания DSI можно найти, анализируя связь между клиентами и серверами AFP с помощью анализатора пакетов.

  • Протокол хранения файлов AppleTalk версии 2.1 и 2.2 [1]
  • Внутри AppleTalk Сидху, Гурхаран С.; Эндрюс, Ричард Ф.; Оппенгеймер, Алан Б. (май 1990 г.), Inside AppleTalk, второе издание , Addison-Wesley Publishing Company, Inc., ISBN  0-201-55021-0
  • Руководство по программированию протокола файлов Apple [2]
  • Справочник по протоколу подачи документов Apple [3]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: e7ea76dcffaf1dcea9e0035be59e912e__1563359820
URL1:https://arc.ask3.ru/arc/aa/e7/2e/e7ea76dcffaf1dcea9e0035be59e912e.html
Заголовок, (Title) документа по адресу, URL1:
Data Stream Interface - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)