Выбрать главу
SRC_offset Смещение адреса отправителя в блоке M_PROTO OPT_length Размер опций ОРТ_offset Смещение опций в блоке M_PROTO T_UDERROR_IND M_PROTO Сообщение об ошибке датаграммы. Этот примитив применим только для транспортных услуг без предварительного установления связи и указывает пользователю, что датаграмма с указанным адресом получателя и опциями вызвала ошибку. Сообщение состоит из одного блока M_PROTO, содержащего размер адреса и сам адрес получателя, опции, а также код ошибки, зависящий от конкретного транспортного протокола. Блок M_PROTO содержит следующие поля: PRIM_type Тип примитива — T_UDERROR_IND DEST_length Размер адреса протокола DEST_offset Смещение адреса отправителя в блоке M_PROTO OPT_length Размер опций OPT_offset Смещение опций в блоке M_PROTO ERROR_type Код ошибки T_DATA_REQ M_PROTO Запрос на передачу данных. Этот примитив применим только для транспортных услуг без предварительного установления связи и информирует поставщика транспортных услуг, что сообщение содержит пакет данных интерфейса (Transport Interface Data Unit, TIDU). Одно или более таких сообщений формируют пакет данных протокола TSDU. Сообщение состоит из одного блока M_PROTO, за которым может следовать один или несколько блоков типа M_DATA, содержащих прикладные данные пользователя. Блок M_PROTO содержит флаг MORE_flag, указывающий, является ли следующее сообщение T_DATA_REQ частью того же TSDU. На основании этого флага поставщик транспортных услуг компонует транспортные пакеты TSDU. Передача данных с помощью запросов T_DATA_REQ позволяет сохранить границы записи при передаче. Заметим, что протоколом TCP данная возможность не поддерживается. T_DATA_IND M_PROTO Индикация получения данных. Этот примитив применим только для транспортных услуг без предварительного установления связи и информирует пользователя, что сообщение содержит пакет данных интерфейса TIDU. Сообщение состоит из одного блока M_PROTO, за которым может следовать один или несколько блоков типа M_DATA, содержащих прикладные данные удаленного пользователя. Блок M_PROTO содержит флаг MORE_flag, позволяющий пользователю определить границы TSDU. Т_EXDATA_REQ M_PROTO Запрос на передачу экстренных данных. Этот примитив аналогичен
T_DATA_REQ, но служит для передачи экстренных данных. Протокол TCP поддерживает передачу экстренных данных с помощью функции t_snd(3N) с аргументом flags, содержащим флаг T_EXPEDITED и, возможно, T_MORE. T_EXDATA_IND M_PROTO Индикация получения экстренных данных. Этот примитив аналогичен T_DATA_IND, но служит для передачи пользователю экстренных данных. T_OK_ACK M_PCPROTO Положительное подтверждение. Этот примитив сообщает пользователю транспортных услуг, что предшествующий примитив, инициированный им, был успешно принят поставщиком транспортных услуг. В то же время, получение подтверждения не означает, что поставщиком были совершены какие-либо действия, связанные с предыдущим примитивом. Сообщение состоит из одного блока M_PCPROTO в котором хранится тип подтвержденного примитива CORRECT_prim. T_ERROR_ACK M_PCPROTO Сообщение об ошибке. Этот примитив сообщает пользователю услуг, последний примитив, инициированный им, вызвал ошибку. Получение этого примитива может рассматриваться как отрицательное подтверждение, свидетельствующее, что никаких действий, связанных с ошибочным примитивом, не было предпринято. Сообщение состоит из одного блока M_PCPROTO, содержащего тип примитива, вызвавшего ошибку, код TLI и код системной ошибки UNIX. Блок M_PCPROTO содержит следующие поля: PRIM_type Тип примитива — T_ERROR_ACK ERROR_prim Тип ошибочного примитива TLI_error Код ошибки TLI UNIX_error Код системной ошибки UNIX T_INFO_REQ M_PCPROTO Запрос на получение параметров транспортного протокола. Этот примитив служит для запроса пользователем значений размеров различных параметров протокола, а также информации о текущим состоянии поставщика транспортных услуг. Сообщение состоит из одного блока M_PCPROTO. T_INFO_ACK M_PCPROTO Параметры транспортного протокола. Этот примитив служит для передачи пользователю ранее запрошенных с помощью T_INFO_REQ параметров транспортного протокола. Сообщение состоит из одного блока M_PCPROTO, содержащего информацию, часть из которой возвращается функцией t_open(3N), рассмотренной в разделе "Программный интерфейс сокетов" ранее в этой главе. Блок M_PCPROTO состоит из следующих полей: PRIM_type Тип примитива — T_INFO_ACK TSDU_size Определяет максимальный размер пакета данных протокола TSDU ETSDU_size Определяет максимальный размер пакета экстренных данных протокола ETSDU CDATA_size Определяет максимальный объем данных, передаваемых при установлении связи. Соответствует полю connect структуры info функции t_open(3N) DDATA_size Определяет максимальный объем данных, передаваемых при разрыве связи. Соответствует полю discon структуры info функции t_open(3N) ADDR_size Определяет максимальный объем транспортного протокола. Соответствует полю addr структуры info функции t_open(3N) OPT_size Определяет размер опций для данного протокола. Соответствует полю options структуры info функции t_open(3N) TIDU_size Определяет размер пакета данных интерфейса TIDU SERV_type Определяет тип транспортных услуг, предоставляемых поставщиком. Соответствует полю servtype структуры info функции t_open(3N) CURRENT_state Определяет текущее состояние поставщика транспортных услуг PROVIDER_flag Определяет дополнительные характеристики поставщика транспортных услуг T_OPTMGMT_REQ M_PROTO Управление опциями протокола. Этот примитив позволяет пользователю получить или установить опции протокола. Сообщение состоит из одного блока M_PROTO, включающего следующие поля: PRIM_type Тип примитива — T_OPTMGMT_REQ OPT_length Размер опций ОРТ_offset Смещение опций в блоке M_PROTO MGMT_flags Флаги, определяющие характер запроса пользователя: T_NEGOTIATE — установить опции, указанные пользователем. В результате опции, установленные поставщиком, могут отличаться от заказанных; T_CHECK — проверить, поддерживаются ли опции, указанные пользователем, поставщиком; T_DEFAULT — возвратить значения опций протокола. T_OPTMGMT_ACK M_PCPROTO Положительное подтверждение. Этот примитив подтверждает завершение операции с опциями протокола, заказанными пользователем. Сообщение состоит из одного блока M_PROTO, включающего те же поля, что и T_OPTMGMT_REQ.