Протокол IGRP

       

Функциональная схема операция IOTP



Рисунок .7. Функциональная схема операция IOTP

На приведенной выше диаграмме Интернет рассматривается в качестве транспортного механизма. Но это не всегда так. Сообщения IOTP могут транспортироваться с использованием различных механизмов.

В этой версии IOTP специфицированы следующие операции IOTP (смотри раздел 9):

  • Покупка. Поддерживает предложение, платеж и, опционно, доставку.
  • Возврат. Поддерживает возврат денег для сделанной ранее покупки.
  • Обмен ценностями. Включает в себя два платежа, которые реализуют обмен ценностями, например валютный обмен.
  • Аутентификация. Поддерживает удаленную аутентификацию одной торговой роли другой ролью с помощью различных аутентификационных алгоритмов, и предоставляет информацию об организации – торгового агента, который должен быть аутентифицирован с целью, например, подготовки предложения.
  • Отзыв. Поддерживает отзыв электронного платежа из финансовой организации.
  • Депозит. Поддерживает депозит электронного платежа в финансовой организации.
  • Запрос. Поддерживает запрос состояния транзакции IOTP, которая в данный момент реализуется или уже завершилась.
  • Ping. Эта операция поддерживает простой запрос, который позволяет одному приложению IOTP выяснить, работает ли некоторое другое приложение IOTP.

3.2. Сообщение IOTP



Как было описано выше, сообщения IOTP представляют собой [XML] документы, которыми обмениваются торговые роли, участвующие в сделке.

XML-определение сообщения IOTP выглядит следующим образом.

<!ELEMENT IotpMessage
( TransRefBlk,

SigBlk?,
ErrorBlk?,
( AuthReqBlk |
AuthRespBlk |
AuthStatusBlk |
CancelBlk |
DeliveryReqBlk |
DeliveryRespBlk |
InquiryReqBlk |
InquiryRespBlk |
OfferRespBlk |
PayExchBlk |
PayReqBlk |
PayRespBlk |
PingReqBlk |
PingRespBlk |
TpoBlk |
TpoSelectionBlk
)*

) >
<!ATTLIST IotpMessage
xmlns CDATA
'iotp:ietf.org/iotp-v1.0'

Содержимое:

TransRefBlkсодержит информацию, которая характеризует сообщение IOTP в пределах операции IOTP (смотри раздел 3.3)


AuthReqBlk, AuthRespBlk, Торговые блоки.
DeliveryReqBlk Торговые блоки присутствуют в сообщениях IOTP, а само содержимое
DeliveryRespBlk торгового блока зависит от типа выполняемой операции IOTP
ErrorBlk смотри определение каждой операции в разделе 9.
InquiryReqBlk,
InquiryRespBlk,  
OfferRespBlk, PayExchBlk,  
PayReqBlk Полные определения каждого торгового блока описаны в разделе 8.
PayRespBlk, PingReqBlk,
PingRespBlk,
SigBlk,
TpoBlk,
TpoSelectionBlk
 
Атрибуты:

Xmlns Определение [XML Namespace] для сообщений IOTP.
3.2.1. XML Document Prolog

Сообщение IOTP является корневым элементом XML-документа. Оно, следовательно, должно предшествоваться соответствующим прологом документа XML. Например:

<?XML Version='1.0'?>
<!DOCTYPE IotpMessage >
<IotpMessage>
...
3.3. Блок ссылок операции (Transaction Reference Block)

Блок ссылок транзакции содержит информацию, которая идентифицирует IOTP-транзакцию и сообщение IOTP. Блок ссылок операции включает в себя:

  • Компонент ID-операции, который однозначно идентифицирует операцию IOTP. Компоненты ID-операции идентичны для всех сообщений IOTP, относящихся к одной IOTP-операции.
  • Компонент ID-сообщения, который предоставляет управляющую информацию о сообщении IOTP, а также однозначно идентифицирует сообщение IOTP в рамках операции IOTP.
  • Нуль или более компонентов Related To, которые связывают эту операцию IOTP с другими операциями или другими событиями, используя идентификаторы этих событий.
Определение блока ссылок операции (Transaction Reference Block) выглядит следующим образом:

<!ELEMENT TransRefBlk (TransId, MsgId, RelatedTo*) >
<!ATTLIST TransRefBlk ID ID #REQUIRED >

Атрибуты:

ID Идентификатор, который однозначно определяет блок ссылок операции в пределах IOTP-процедуры (смотри раздел 3.4).
Cодержимое:

TransId Смотри 3.3.1 Id-компонент операции.
MsgId Смотри 3.3.2 Id-компонент сообщения.
RelatedTo Смотри 3.3.3 Компонент Related To.
3.3.1.


Идентификационная компонента транзакции

Идентификационная компонента транзакции содержит информацию, которая однозначно задает транзакцию IOTP. Ее определение представлено ниже:

<!ELEMENT TransId EMPTY >
<!ATTLIST TransId ID ID #REQUIRED
Version NMTOKEN #FIXED '1.0'
IotpTransId CDATA #REQUIRED
IotpTransType CDATA #REQUIRED
TransTimeStamp CDATA #REQUIRED >
Атрибуты:

ID Идентификатор, который однозначно определяет Id-компонент транзакции в рамках операции IOTP.
Version Определяет версию IOTP и, следовательно структуру сообщений IOTP, которые используются транзакцией IOTP.
IotpTransId Содержит данные, которые однозначно определяют транзакцию IOTP. Это атрибут должен отвечать правилам для идентификаторов сообщений [RFC 822].
IotpTransTyp Это тип исполняемой транзакции IOTP. Для базовой версии IOTP он идентифицирует "стандартную" транзакцию IOTP и предполагает определенную последовательность и содержимое сообщений IOTP, которыми обмениваются торговые роли. Корректными значениями атрибута являются:
о BaselineAuthentication (Базовая аутентификация)
o BaselineDeposit
o BaselinePurchase
o BaselineRefund
o BaselineWithdrawal
o BaselineValueExchange
o BaselineInquiry
o BaselinePing
Значение IotpTransType управляется процедурой, описанной в разделе 12 IANA Considerations, которая позволяет пользователю определить величины IotpTransType. В последних версиях IOTP, этот список будет расширен с целью поддержки различных типов транзакций IOTP. Вероятно, будет поддержан динамический тип (Dynamic), который указывает, что последовательность шагов в транзакции не является стандартной.

TransTimeStamp Там где система, запускающая транзакцию IOTP, имеет внутренние часы, атрибут устанавливается равным времени старта транзакции IOTP в формате [UTC].
Главным назначением этого атрибута является обеспечение альтернативного пути идентификации транзакции путем спецификации времени его запуска.

Некоторые системы не могут генерировать временные метки.


В этом случае этот атрибут должен содержать значение "NA" (Not Available).

3.3.2. Идентификатор сообщения

Компонент Id-сообщения предоставляет контрольную информацию о сообщении IOTP, а также однозначно идентифицирует сообщение в рамках транзакции IOTP. Его определение выглядит следующим образом.

<!ELEMENT MsgId EMPTY >
<!ATTLIST MsgId ID ID #REQUIRED RespIotpMsg NMTOKEN #IMPLIED
xml:lang NMTOKEN #REQUIRED LangPrefList NMTOKENS #IMPLIED
CharSetPrefList NMTOKENS #IMPLIED SenderTradingRoleRef NMTOKEN #IMPLIED
SoftwareId CDATA #REQUIRED TimeStamp CDATA #IMPLIED >
Атрибуты:

ID Идентификатор, который однозначно идентифицирует сообщение IOTP в рамках транзакции IOTP (смотри раздел 3.4 ID атрибуты). Заметим, что если сообщение IOTP пересылается повторно, тогда значение этого атрибута остается неизменным.
RespIotpMsg Это ID-атрибут содержит Id-компонент сообщения IOTP, откликом на которое оно является. Таким образом все сообщения IOTP в пределах транзакции оказываются связаны. Это поле необходимо каждому сообщению IOTP за исключением первого сообщения IOTP в транзакции.
SenderTradingRoleRef Элемент ссылки (смотри раздел 3.5) торговой роли, которая сформировала сообщение IOTP. Он используется, чтобы идентифицировать сетевую позицию (Net Locations) (смотри раздел 3.9) торговой роли, которой требуется сообщить о технических ошибках (смотри раздел 4.1), связанных с торговыми блоками.
Xml:lang Определяет язык, используемый атрибутом, или дочерние элементы в пределах этого компонента, если не переписан атрибутом xml:lang в дочернем элементе. Смотри раздел 3.8.
LangPrefList Опционный список языковых кодов, который согласуется с идентификацией языков [XML]. Он используется отправителем, чтобы указать порядок предпочтения языков, которые получатель сообщения должен использовать при подготовке отклика. Получатель не обязан использовать один из указанных языков.
CharSetPrefList Опционный список идентификаторов символьных наборов, которые соответствуют символам в [XML]. Он используется отправителем для указания порядока предпочтения символьных наборов, которые получатель может применить при формировании отклика. Получатель не обязан использовать один из указанных символьных наборов.
SoftwareId Содержит информацию, которая идентифицирует программу, сформировавшую сообщение IOTP. Его целью является помочь разрешить проблему совместной работы различных программ, обменивающихся сообщениями. Это простая текстовая строка на языке, определенном xml:lang. Она должна содержать, по крайней мере:
  • имя производителя программного продукта
  • название программного продукта
  • версию программы
  • форму программного обеспечения (build)
  • TimeStamp Когда прибор, отправляющий сообщение имеет внутренние часы, атрибут делается равным времени генерации сообщения IOTP в формате [UTC].



    3.3.3. Компонент Related To

    Компонент Related To связывает транзакции IOTP с другими транзакциями или другими событиями с помощью идентификаторов этих событий. Определение этого компонента представлено ниже.

    <!ELEMENT RelatedTo (PackagedContent) >
    <!ATTLIST RelatedTo ID ID #REQUIRED xml:lang NMTOKEN #REQUIRED
    RelationshipType NMTOKEN #REQUIRED Relation CDATA #REQUIRED
    RelnKeyWords NMTOKENS #IMPLIED >
    Атрибуты:

    ID Идентификатор, который однозначно jghtltkztn компонент Related To в рамках транзакции IOTP.
    xml:lang Определяет язык, использованный атрибутом или дочерним элементом в данном компоненте, если не переписан атрибутом xml:lang дочернего элемента. Смотри раздел 3.8.
    RelationshipType Определяет тип отношения. Корректными значениями являются:
    • IotpTransaction, в случае которого элемент Packaged Content содержит IotpTransId другой транзакции IOTP.
    • Ссылка, в случае которой элемент Packaged Content содержит указатель на некоторый другой, не-IOTP документ.
    Значения RelationshipType управляются процедурами, определенными в разделе 12 IANA Considerations, которые позволяют пользователю определить свои значения атрибута.

    Relation Атрибут Relation содержит фразу на языке, определенном xml:lang, он определяет природу отношений между транзакцией, которая содержит этот компонент и другой транзакцией или другим событием. Окончательное текстовое выражение оставлено на усмотрение составителей программ IOTP.
    Целью атрибута является обеспечение торговых ролей, включенных в транзакцию IOTP, объяснением природы отношений между транзакциями. Следует позаботиться о том, чтобы слова, использованные в атрибуте Relation, правильно указывали "направление" отношений. Например: одна транзакция может быть возвратом денег для другой выполненной ранее транзакции. В этом случае транзакция, которая возвращает деньги, должна содержать слова атрибута Relation, такие как "возврат за", а не "возврат кому" или просто "возврат".



    RelnKeyWords Этот атрибут содержит ключевые слова, которые могут быть использованы, чтобы помочь идентифицировать подобные отношения, например все виды возвратов. Ожидается, что рекомендуемые ключевые слова будут выбраны в процессе практического использования. В этой версии спецификации не содержится никаких специальных рекомендаций по ключевым словам
    Cодержимое:

    PackagedContent Packaged Content (смотри раздел 3.7) содержит данные, которые идентифицируют связанные транзакции. Его формат варьируется в зависимости от значения атрибута RelationshipType.
    3.4. ID-атрибуты

    IOTP-сообщения, блоки (т.e. блоки ссылок операции и торговые блоки), торговые компоненты (включая ID-компонент транзакции и компонент подписи) и некоторые их дочерние элементы задаются атрибутом "ID" XML, который служит для идентификации этих XML-элементов. Эти элементы используются так, что один элемент может ссылаться на другой. Всем этим атрибутам присваиваются ID.

    Значения каждого ID-атрибута является уникальным в пределах транзакции IOTP т.e. набор IOTP-сообщений, который имеет тот же самый компонент ID транзакции. Однажды присвоенное значение ID-атрибута элемента никогда не меняется. Это означает, что когда элемент копируется, значение ID-атрибута остается неизменным.

    Как следствие можно использовать эти идентификаторы для ссылки и нахождения содержимого любого сообщения IOTP, блока или компонента (смотри раздел 3.5).

    3.4.1. Определение ID-атрибутов сообщений IOTP

    ID-атрибут Id-компонента IOTP-сообщения должен быть уникальным в пределах транзакции IOTP. Его определение представлено ниже:

    IotpMsgId_value ::= IotpMsgIdPrefix IotpMsgIdSuffix
    IotpMsgIdPrefix ::= NameChar (NameChar)*
    IotpMsgIdPrefix Кроме того сообщения, которые содержат: торговый блок информационного запроса, информационного отклика, запроса или отклика Ping, используют один и тот же префикс для всех сообщений, посланных Продавцом или Покупателем:
    о "M" - Продавец (Merchant)
    о "C" – Покупатель (Consumer)
    Для сообщений, которые содержат торговый блок информационного запроса или блок запроса Ping, префикс делается равным "I" (Inquiry).



    Для сообщений, которые содержат торговый блок отклика на информационный запрос или блок отклика Ping, префикс равен "Q".

    Префикс для других торговых ролей в сделке содержится в компоненте Organisation (организации) и прописывается обычно Продавцом. Ниже представлены рекомендуемые значения:

    о "P" - Первый Кассир
    o "R" – Второй Кассир
    o "D" – Агент доставки
    o "C" – Доставка (Deliver To)
    Префиксы должны содержать один символ. NameChar имеет то же значение, что и определение NameChar в [XML].

    IotpMsgIdSuffix Суффикс состоит из одной или более цифр. Суффикс должен быть уникальным для данной торговой роли транзакции IOTP. Рекомендации сводятся к следующему:
    o Первому сообщению IOTP, посланному торговой ролью, присваивается суффикс "1".
    o Для второго и последующих IOTP-сообщений, посланных той же торговой ролью, суффикс увеличивается на 1 для каждого последующего сообщения.
    o Суффикс не может содержать начальных нулей.
    Короче Id-компонент первого сообщения IOTP, посланного Покупателем будет иметь ID-атрибут "C1", второе - "C2", третье - "C3" и т.д. Цифра имеет то же определение что и в [XML].

    3.4.2. Определения ID-атрибута для блока и компонента

    ID-атрибут блоков и компонентов в пределах транзакции IOTP также должен быть уникальным. Ниже представлено его определение:

    BlkOrCompId_value ::= IotpMsgId_value "." IdSuffix
    IdSuffix ::= Digit (Digit)*
    IotpMsgId_value ID-атрибут. ID-компонента сообщения IOTP, где блок или компонент использован впервые.
    В IOTP, торговые компоненты и торговые блоки копируются из одного сообщения IOTP в другое. I D-атрибут не изменяется, когда существующий торговый блок или компонент копируется в другое сообщение IOTP.

    IdSuffix Суффикс состоит из одной или более цифр. Суффикс должен быть уникальным для ID-атрибута ID-компонента сообщения, используемого для генерации ID-атрибута. Рекомендуется здесь следующее:
    o Первому блоку или компоненту, посылаемому торговой ролью присваивается суффикс "1"
    o Для второго и далее блоков или компонентов ID-атрибуты увеличивается на 1 для каждого последующего сообщения.
    o Суффикс не может содержать начальных нулей.
    Короче, первый новый блок или компонент добавляется ко второму посылаемому сообщению IOTP, например, первый ID-атрибут - "C2.1", второй - "C2.2", третий - "C2.3" и т.д.Цифра имеет то же определение, что и в [XML].

    3.4.3. Пример использования ID-атрибутов

    На диаграмме проиллюстрировано, как используются значения ID-атрибутов.




    Содержание раздела