Интегрированные сети ISDN

         

Обработка ошибок


Обработка ошибок

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

Для выявления сообщений-дубликатов достаточно использовать открытый текст, содержащийся в цифровом конверте сообщения. Реакция получателя на сообщение-дубликат зависит от свойств идемпотентности конкретного типа сообщения, от числа дубликатов, частоты их поступления и от того, кто является их отправителем.

Поврежденным сообщением считается такое, которое не может быть обработано. В норме такие сообщения не должны приходить, так как имеется контроль корректности пакетов на транспортном уровне и при обнаружении любых повреждений сообщение должно быть переслано повторно. Но если такое “невозможное событие” все-таки произойдет, будет послано сообщение Error, содержащие код типа ошибки и идентификатор сообщения, ее вызвавшего. Приложение никогда не посылает сообщение Error в ответ на другое сообщение Error. Сообщения, которые не являются протокольными для SET, просто игнорируются.

Если тэг типа сообщения равен 999 (указывая, что это сообщение об ошибке), приложение SET не должно ни при каких обстоятельствах посылать на него отклик. Когда приложение сталкивается с ошибкой, оно формирует Error-сообщение в следующей последовательности.

Шаг Действие
1 Сформировать ErrorTBC следующим образом:

  • Установить ErrorCode равным значению, указывающему на причину (см. табл. 4.6.2.16)
  • Сформировать новый ErrorNonce
  • Если ошибка случилась из-за того, что приложение не знает, как обрабатывать расширение сертификата или сообщения, занести в ErrorOID объектный идентификатор расширения.
  • Если ошибка произошла из-за проблем с сертификатом, занести в ErrorThamb ThumbPrint сертификата
  • Если ошибка является результатом неудачной верификации подписи, занести в ErrorThamb хэш сертификата
  • ErrorMsg формируется следующим образом: заносится MessageHandler или все сообщение (но не более 20 килобайт). Выбор того, следует ли заносить все сообщение или только заголовок, оставляется на усмотрение разработчика.



  • 2 Подписать сообщение Error, если имеется сертификат подписи
    3 Вызвать формирование цифрового конверта и отправить сообщение
    <
    /p> Для сообщения Error определены следующие поля

    Имя поля Описание
    Error <Signed Error, UnsignedError >
    SignedError S(EE, ErrorTBS)
    UnsignedError ErrorTBS



    Неподписанная версия Error будет использоваться, если объект не имеет сертификата подписи


    ErrorTBS
    { ErrorCode, ErrorNonce, [ErrorOID], [ErrorThumb], ErrorMsg}


    ErrorCode
    Цифровой код, определяющий условия ошибки (см. табл. 4.6.2.16)


    ErrorNonce
    Разовый код, который гарантирует, что подпись генерируется для трудно предсказуемых данных


    ErrorOID
    Объектный идентификатор неподдерживаемых критических расширений, вызвавших ошибку


    ErrorThumb
    Оттиск сертификата, который вызвал ошибку или хэш сертификата, если произошла ошибка верификации подписи


    ErrorMsg


    <MessageHeader, BadWrapper>


    MessageHeader
    Заголовок сообщения, которое вызвало ошибку


    BadWrapper
    Цифровой конверт сообщения, которое вызвало ошибку (не более 20 килобайт)



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