Datagram Delivery Protocol

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 20:03, 23 января 2019.
Datagram Delivery Protocol
Communications protocol
Ddp.jpg
Purpose доставка дейтаграмм сокета в порт через сеть AppleTalk
Developer(s) Apple Inc.
Introduced 14
Based on AppleTalk

DDP (англ. Datagram Delivery Protocol) является элементом набора сетевых протоколов AppleTalk. Его основная задача заключается в доставке дейтаграмм сокета в порт через сеть AppleTalk.[Источники 1]

Общая информация

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

Серия DDP-пакетов, передаваемых через интернет AppleTalk с одного узла на другой может пройти через одну высокоскоростную сеть EtherTalk, или они могут несколько промежуточных линий передачи данных, таких как LocalTalk или TokenTalk, которые подключены по маршрутизаторам. В ходе этого процесса может произойти некоторая потеря пакетов, например, в результате столкновений. Если вы не планируете внедрять восстановление из потери пакетов в вашем приложении, но ваше приложение требует этого, вы должны рассмотреть возможность использования транспортный протокол AppleTalk, такой как протокол передачи данных AppleTalk (ADSP) или протокол транзакций AppleTalk (ATP); эти протоколы защищают от потери пакетов и обеспечить надежность, используя положительное подтверждение с повторной передачей пакетов механизмы.[Источники 2]

Стек протоколов обеспечивает передачу данных от узла к узлу в интернете. DDP - клиент протокола доступа к каналу - будь то LLAP, ELAP, TLAP или FDDILAP, - и он использует услуги доставки от узла к узлу, предоставляемые линией передачи данных для отправки и приема данных. DDP отвечает за доставку данных из сокета в сокет через Интернет AppleTalk.

DDP занимает центральное место в процессе отправки и приема данных через интернет AppleTalk. Независимо от того, какая линия передачи данных используется и какие (если есть) протоколы более высокого уровня обработки данных, все данные AppleTalk переносятся в виде пакетов DDP, известных как дейтаграммы. (В этой главе используются термины datagram и DDP-пакет взаимозаменяемо.) A датаграмма состоит из заголовка, за которым следуют данные. DDP позволяет одновременно отправлять и получать данные по пакету. Если вы используете DDP, вы должны обратить каждый пакет данных в сокет, для которого он предназначен. Сокет - это часть программного обеспечения который служит в качестве адресного объекта в сетевом узле. Сокеты пронумерованы и каждое приложение, использующее DDP для передачи данных, связано с уникальным сокетом. Вы не может открывать и поддерживать сеанс между двумя сокетами, используя DDP, и по этой причине, DDP называется протоколом без установления соединения. Чтобы использовать DDP, вы должны предоставить прослушиватель сокетов и процедуру, которая считывает пакеты из код приемника сокета после его получения. Слушатель сокета - это процесс, который получает пакеты, адресованные сокету DDP, связанному с вашим приложением. Поскольку драйвер, который реализует DDP, драйвер MPP использует регистры, недоступные с более высокого уровня языки, такие как Pascal, чтобы передавать информацию вашему слушателю сокета, вы должны написать код прослушивателя сокета на языке ассемблера.

DDP обеспечивает наилучшую работу сокет-сокет по сравнению с сетью интернет.

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

Принципы работы

Рисунок 1 - Два приложения работают на одном узле, каждый со своим сокетом
Рисунок 2 - Отправка и получение данных с использованием DDP

Каждое приложение, использующее DDP для передачи данных, должно отправлять или получать эти данные через сокет. Использование сокетов позволяет DDP определять, для какого приложения пакет предназначен. Каждый узел поддерживает до 254 сокетов, и каждый сокет идентифицируется 8-разрядное число, которое объединяется с номером сети и идентификатором узла, чтобы сформировать адрес интернет-сокета приложения. Когда приложение или процесс вызывает DDP для открыть сокет, DDP связывает номер этого сокета с приложением, делая приложение отличается от других приложений на одном узле. Приложение который связан с конкретным сокетом через DDP, является клиентом этого сокета или сокет.

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

Приложения обмениваются данными друг с другом через свои сокеты. Клиент сокета может отправлять и получать датаграммы только через связанный сокет. Более того, каждый приложение-сокет-клиент, которое использует DDP непосредственно для передачи данных, должно быть связано с ним прослушиватель сокетов, который получает датаграммы, адресованные сокету от имени это клиентское приложение этого сокета. Слушатель сокетов - это процесс, который вы предоставляете как часть своего клиентского приложения. Вы должны напишите свой прослушиватель сокетов на языке ассемблера и соблюдайте особые требования в отношении использования регистров и процедур, которые вы вызываете для приема пакетов. за удовлетворяя этим требованиям AppleTalk, ваш слушатель сокетов может выполнять любые другие функций, которые требует ваше приложение сокета-клиента. См. «Слушатель гнезда для образцов» начиная со страницы 7-20 для более подробной информации. Когда вы вызываете DDP для открытия сокета, вы предоставляете указатель на ваш прослушиватель сокетов для это гнездо. DDP поддерживает таблицу сокетов, которая включает запись для каждого открытого сокета и его прослушиватель сокета. Когда драйвер .MPP получает пакет, он не читает и обрабатывать пакет. Вместо этого он считывает часть номера сокета в интернет-сокете адрес, а затем проверяет таблицу сокетов, чтобы определить, открыт ли этот сокет. Если это так, MPP вызывает прослушиватель сокетов, связанный с сокетом, для обработки приема пакет для клиентского приложения. Использование прослушивателей сокетов помогает максимизировать пропускной способности между DDP и уровнем протокола доступа к каналу связи, устраняя ненужные буферное копирование.

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

Работа с мультиузлами

Если вы используете DDP, вы можете указать многоузловый адрес для конечной точки. Это позволяет привязывать конечные точки к нескольким адресам узла на одном физическом порту, что может быть полезно для тестирования. Используя только одну физическую машину, вы можете использовать многоузловую адресацию для моделирования нескольких машин. Если многоузловый клиент отправляет широковещательный или самоссылаемый пакет, Open Transport делает копии пакета для других многоузловых клиентов на той же машине внутренне, что снижает трафик в сети.

Значимыми полями для формата адреса многоузлов являются номер сети и идентификатор узла. Вы можете запросить конкретные значения для этих элементов адреса, когда вы связываете многоузловую конечную точку, и OTBindфункция возвратит фактические значения сети и узла для адреса, к которому Open Transport привязал конечную точку. Конечные точки с несколькими узлами должны использовать эту DDP_OPT_SRCADDR опцию, чтобы указать исходный адрес DDP для исходящих пакетов для каждого пакета.[Источники 3]

Назначение номеров сокетов

Рисунок 3 - Назначение сокетов

DDP поддерживает два класса сокетов: сокеты, которые назначаются статически и сокеты которые назначаются динамически. Существуют некоторые ограничения на то, какие номера сокетов они используют:

  • Статически назначенные сокеты имеют номера в диапазоне 1-127.
    • Номера гнезд 1-63 зарезервированы для использования Apple Computer, Inc.
    • Номера программ 64-127 доступны для разработки программы.
  • Динамически назначенные сокеты имеют номера в диапазоне от 128 до 254.

Чтобы использовать статически назначенный сокет, приложение должно запросить определенный номер сокета. В большинстве случаев вам не следует использовать статически назначенные сокеты.

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

Источники

  1. Datagram Delivery Protocol // revolvy [1997-2018] Дата обновления: 22.08.2016. URL:https://www.revolvy.com/page/Datagram-Delivery-Protocol (дата обращения: 21.09.2018)
  2. DDP // Developer Apple [1996-2019] Дата обновления: 07.07.1996. URL: https://developer.apple.com/library/archive/documentation/mac/Networking/Networking-179.html#HEADING179-0 (дата обращения: 21.09.2018)
  3. Datagram Delivery Protocol (DDP) // Mirror Informatimago [1997-2018] Дата обновления: 22.08.2016. URL: http://mirror.informatimago.com/next/developer.apple.com/documentation/mac/NetworkingOT/NetworkingWOT-68.html (дата обращения: 21.09.2018)