AppleTalk Data Stream Protocol

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 19:24, 23 января 2019.
AppleTalk Data Stream Protocol
Protocol stack
CT843501.jpg
Developer(s) Apple Inc.
Introduced 1985; 34 years ago (1985)
Based on Apple Talk Phase II
Hardware LocalTalk, others

AppleTalk Data Stream Protocol представляет собой протокол сеансового уровня стека AppleTalk, который устанавливает и поддерживает двусторонний обмен данными между двумя сокетами AppleTalk. Протокол ADSP обеспечивает упорядочение данных и отсутствие дублированных пакетов. ADSP также использует механизм управления потоками, позволяющий пункту-получателю замедлять передачу данных от источника путем предоставления сведений об уменьшении размера окна приема. Протокол ADSP работает совместно с протоколом DDP.[Источник 1].

Рисунок 1 – Apple Talk и эталонная модель OSI

Обзор

ADSP является другим важным протоколом транспортного уровня Apple Talk. ADSP является ориентированным по потоку данных, а не по транзакциям. Он организует и поддерживает полностью дублированный поток данных между двумя гнездами в объединенной сети AppleTalk. ADSP является надежным протоколом в том плане, что он гарантирует доставку байтов в том же порядке, в каком они были отправлены, а также то, что они не будут дублированы. ADSP нумерует каждый байт, чтобы отслеживать отдельные элементы потока данных. ADSP также определяет механизм управления потоком. Пункт назначения может в значительной степени замедлять передачи источника путем сокращения размера об'явленного окна на прием. ADSP также обеспечивает механизм сообщений управления "выхода из полосы" (out-of-band) между двумя объектами AppleTalk. В качестве средства для перемещения сообщений управления выхода из полосы между двумя объектами AppleTalk используются пакеты "внимания" (attention packets).Эти пакеты используют отдельный поток номеров последовательностей, чтобы можно было отличать их от обычных пакетов данных ADSP. [Источник 2].

Объекты

Связь между двумя приложениями, использующими ADSP, происходит через соединение, которое устанавливается между двумя сокетами, которые используют эти сетевые объекты; ADSP назначает сокет для использования при инициализации каждого конца соединения, и ваше приложение становится клиентом этого сокета. Поскольку это соединение существует во время обмена, ADSP называется протоколом, ориентированным на соединение. ADSP управляет и контролирует поток данных между двумя сокетами на протяжении всего сеанса, чтобы данные доставлены и получены в том порядке, в котором они были отправлены, дубликаты данных не отправляются приложение или процесс на принимающей стороне соединения имеет буферную емкость для приема данных. В сеансе ADSP оба конца соединения имеют равный контроль над связью в одноранговых отношениях.

Для правильного функционирования двух концов соединения ADSP каждый должен хранить информацию для управления соединением и определения состояния соединения. Чтобы соответствовать этим требованиям, сокет на любом конце соединения имеет связанную с ним информацию, которая определяет состояние соединения. И информация, которую приложение и ADSP используют для управления соединением и связи по нему. Комбинация сокета и информации ADSP, поддерживаемой клиентом сокета, называется концом соединения. Для создания соединения необходимо установить и инициализировать два конца соединения. Каждый конец соединения рассматривает себя как локальный конец, а другой - как удаленный.

Соединение

ADSP является важным протоколом транспортного уровня Apple Talk. Как видно из его названия, ADSP является ориентированным по потоку данных, а не по транзакциям. Он организует и поддерживает полностью дублированный поток данных между двумя гнездами в объединенной сети AppleTalk. ADSP является надежным протоколом в том плане, что он гарантирует доставку байтов в том же порядке, в каком они были отправлены, а также то, что они не будут дублированы.

ADSP нумерует каждый байт, чтобы отслеживать отдельные элементы потока данных. ADSP также определяет механизм управления потоком. Пункт назначения может в значительной степени замедлять передачи источника путем сокращения размера об'явленного окна на прием. ADSP также обеспечивает механизм сообщений управления "выхода из полосы" (out-of-band) между двумя объектами AppleTalk. В качестве средства для перемещения сообщений управления выхода из полосы между двумя объектами AppleTalk используются пакеты "внимания" (attention packets).Эти пакеты используют отдельный поток номеров последовательностей, чтобы можно было отличать их от обычных пакетов данных ADSP.

Соединение - это связь между двумя сокетами, которая надежно поддерживает поток данных между клиентами этих сокетов. Каждый сокет может поддерживать одновременные соединения ADSP с несколькими другими сокетами, но может быть только одно соединение ADSP между любыми двумя сокетами одновременно. Например, один сокет на узле A может иметь несколько одновременных сеансов, состоящих из одного соединения с сокетом на узле B, одного соединения с сокетом на узле C и одного соединения с сокетом на узле D.

Когда вы устанавливаете конец соединения ADSP, вы выделяете неразмещаемый блок памяти, называемый блоком управления соединением (connection control block -CCB), в котором ADSP хранит информацию о состоянии конца соединения. Когда вы инициализируете конец соединения, ADSP использует CCB для настройки управляющей информации, которую он поддерживает, и использует для синхронизации связи с другим клиентом сокета и для проверки ошибок.

Вы можете прочитать поля CCB, чтобы получить информацию о текущем состоянии конца соединения. В дополнение к уникальному интернет-адресу Appletalk, связанному с сокетом, каждый экземпляр конца соединения ассоциируется с идентификатором соединения, который его идентифицирует. Вы можете открыть соединение для сокета и закрыть это соединение, фактически не удаляя конец соединения, а затем открыть другое соединение для того же сокета. Когда вы закрываете соединение, номер сокета остается связанным с соединением, как и структуры данных, чья память была выделена. ADSP использует это, чтобы гарантировать, что любые данные, предназначенные для старого конца соединения, не будут доставлены на новый конец соединения с использованием того же номера сокета и структур данных.

ADSP не может доставлять пакеты на конец соединения только на основе адреса интернет-сокета Appletalk. Идентификатор соединения гарантирует, что пакет будет доставлен на конкретную сторону соединения, для которой он был предназначен. Вы вызываете подпрограмму нового идентификатора соединения (dspNewCID), чтобы ADSP назначил идентификатор соединения концу соединения, прежде чем открывать соединение. ADSP назначает идентификационный номер соединения, который он включает в каждый пакет, который он доставляет от конца вашего соединения к концу удаленного соединения.

В любое время любой конец потенциального соединения ADSP может инициировать сеанс. Кроме того, любой конец соединения может разорвать соединение, когда оно больше не нужно. Когда два конца соединения устанавливают связь, соединение считается открытое соединение. Когда оба конца соединения завершают соединение и удаляют информацию о соединении, которую каждый поддерживает, соединение считается замкнутым. Если один конец соединения установлен, но другой конец соединения недоступен или уничтожил информацию о своем соединении, соединение считается полуоткрытым соединением. Никакая связь не может происходить через полуоткрытое или закрытое соединение. Для предотвращения связывания ресурсов в полуоткрытом соединении ADSP автоматически закрывает любое полуоткрытое соединение, которое не может восстановить связь в течение двух минут, и сообщает своему клиенту, что соединение закрыто. При этих обстоятельствах ADSP вызовет подпрограмму завершения, предоставляемую приложением, для любой ожидающей асинхронной подпрограммы ADSP, если она была предоставлена. В противном случае ожидающая процедура ADSP вернется к вызывающей программе с сообщением об ошибке errState. Если вы попытаетесь вызвать процедуру ADSP для полуоткрытого соединения, ADSP также вернет сообщение об ошибке errState.

Надежная доставка данных

ADSP гарантирует, что байты данных доставляются в том же порядке, в котором они были отправлены, и что они не содержат дубликатов. Это гарантирует, что все отправленные данные будут доставлены в приемный буфер удаленного соединения. Для этого ADSP связывает порядковый номер с каждым отправляемым байтом. ADSP отбрасывает любые непоследовательные данные или любые дубликаты, которые доставлены. ADSP использует порядковые номера, чтобы гарантировать, что все данные, отправленные одним концом, получены другим концом. Если данные потеряны, ADSP передает их повторно. ADSP может отправить данные снова, потому что данные остаются в очереди отправки конечного соединения до тех пор, пока удаленный конец не получит их копию. Для получения дополнительной информации о том, как ADSP доставляет данные.

Незатребованные события ADSP

После открытия соединения вы можете получать события, которые не генерируются в ответ на любые вызовы ADSP, которые выполняет ваше приложение. Если другой конец соединения или ADSP инициирует эти события. Например, удаленный конец соединения может отправить вам сообщение с предупреждением или сброс в прямом направлении.

Вы получаете событие прямого сброса, когда конец удаленного соединения отменяет доставку всех ожидающих данных на конец вашего соединения. Прямой сброс приводит к тому, что ADSP отбрасывает все данные в очереди отправки, все данные, передаваемые в конец удаленного соединения, и все данные в очереди приема удаленного конца, которые клиент еще не прочитал. Если конец удаленного соединения может закрыть соединение, это также сгенерирует уведомление о событии для конца вашего соединения. Вы также получаете уведомление о событии, когда ADSP разрывает соединение, потому что удаленный конец стал недоступным.

ADSP устанавливает биты поля пользовательских флагов блока управления соединением вашего соединения, чтобы определить тип события. Для получения дополнительной информации об этом поле см. «Создание и использование блока управления подключением». Вы можете предоставить пользовательскую процедуру, которую ADSP будет вызывать при получении одного из этих событий. Эта пользовательская процедура похожа по своей концепции и использованию на процедуру ioCompletion, которую используют многие другие протоколы Appletalk.

Процесс аутентификации

Понимание того, что влечет за собой этот процесс, может быть полезно для понимания значения и использования параметров, которые вы получаете от сервера аутентификации и передаете в ASDSP. Инициатор и получатель имеют закрытый ключ. закрытый ключ, также называемый ключом пользователя или клиентским ключом, представляет собой число, полученное из пароля; номер используется алгоритмом шифрования. Инициатор вызывает сервер аутентификации для запроса информации и учетных данных должен использоваться ASDSP при установлении аутентифицированного сеанса. учетные данные содержат информацию, необходимую для подтверждения того, что пользователи обоих концов соединения являются теми, кем они себя называют.

Пользователь клиентского приложения ASDSP инициатора присваивает серверу аутентификации свое собственное имя или идентификатор и имя пользователя клиентского приложения ASDSP получателя. сервер аутентификации возвращает инициатору уникальный сеансовый ключ, который сервер генерирует исключительно для использования процессом аутентификации для этого сеанса; сеансовый ключ действителен только в течение ограниченного времени. сервер аутентификации также возвращает инициатору набор учетных данных, которые зашифрованы в личном ключе получателя. учетные данные также содержат ключ сеанса и идентификационные данные инициатора, а также идентификационные данные посредника или прокси-сервера, если они использовались для получения учетных данных с сервера аутентификации.

Инициатор передает блок данных, содержащий учетные данные, в ASDSP, а ASDSP на стороне инициатора отправляет учетные данные в ASDSP на стороне получателя. последний расшифровывает весь блок учетных данных, получая ключ сеанса из блока учетных данных. ASDSP на стороне получателя затем использует сеансовый ключ в процессе аутентификации, который он выполняет от имени получателя. ASDSP имеет закрытый ключ получателя, который он использует для расшифровки учетных данных. Если процесс аутентификации успешен, ASDSP возвращает все учетные данные получателю. Поскольку инициатор и ASDSP от имени получателя должны каждый дешифровать сеансовый ключ, используя свой собственный закрытый ключ, каждый из них может быть убежден в том, что другой является тем, кем он себя считает, если они могут прийти к выводу, что другой знает сеансовый ключ. потребность в этом убеждении начинает процесс аутентификации «вызов-ответ», который позволяет каждому концу подтвердить, что другой конец также знает уникальный сеансовый ключ.

ASDSP выполняет процесс запроса и ответа от имени клиентских приложений способом, который прозрачен для приложений. Если процесс аутентификации завершается успешно, ASDSP открывает защищенное соединение; если процесс аутентификации завершается неудачно, ASDSP возвращает код ошибки как инициатору, так и получателю и разрывает соединение, которое было установлено для выполнения процесса аутентификации.

Функция шифрования данных

После того, как ASDSP успешно завершит процесс аутентификации, оба конца соединения, чьи идентификационные данные были проверены, могут обмениваться данными, а также могут шифровать эти данные. Функция шифрования ASDSP позволяет каждой стороне отправлять данные, которым можно доверять, для безопасной передачи способом, который не может быть прочитан кем-либо, кроме предполагаемого получателя, пока эти данные не будут расшифрованы ASDSP и доставлены получателю на другом конце ASDSP. сеанс связи. ASDSP шифрует только данные в основном потоке данных; он не шифрует данные в сообщениях о внимании или ASDSP заголовки пакетов.

Источники

  1. Протоколы верхнего уровня в сетях AppleTalk // Блог о шифровании. [2010—2014]. Дата обновления: 14.01.2011. URL: http://crypto.pp.ua/2011/01/protokoly-verxnego-urovnya-v-setyax-appletalk/ (дата обращения: 27.12.2018).
  2. AppleTalk. // citforum.ru. [1997—2000]. Дата обновления: 24.02.1997. URL: http://citforum.ru/nets/ito/16.shtml (дата обращения: 27.12.2018).

Ссылки