Параметр сокета SCTP_DEFAULT_SEND_PARAM

Параметр сокета SCTP_DEFAULT_SEND_PARAM

SCTP поддерживает множество дополнительных параметров отправки, которые обычно передаются в виде вспомогательных данных или используются при вызове функции sctp_sendmsg (который часто реализуется как библиотечный вызов, передающий вспомогательные данные пользователя). Приложение, планирующее отправку большого количества сообщений с одинаковыми параметрами, может воспользоваться параметром SCTP_DEFAULT_SEND_PARAM для настройки значений параметров по умолчанию и тем самым избавиться от необходимости добавлять вспомогательные данные или вызывать sctp_sendmsg. На вход параметра поступает структура sctp_sndrcvinfo:

struct sctp_sndrcvinfo {

 u_int16_t sinfo_stream;

 u_int16_t sinfo_ssn;

 u_int16_t sinfo_flags;

 u_int32_t sinfo_ppid;

 u_int32_t sinfo_context;

 u_int32_t sinfo_timetolive;

 u_int32_t sinfo_tsn;

 u_int32_t sinfo_cumtsn;

 sctp_assoc_t sinfo_assoc_id;

};

Поля структуры определяются следующим образом:

sinfo_stream задает поток, в который по умолчанию направляются все сообщения;

sinfo_ssn игнорируется при установке значений параметров по умолчанию. При получении сообщений функцией recvmsg или sctp_recvmsg это поле содержит значение потокового последовательного номера (stream sequence number, SSN), помещенное собеседником в порцию данных;

sinfo_flags устанавливает значения всех флагов для будущих сообщений. Допустимые значения флагов приводятся в табл. 7.5;

sinfo_ppid задает значение идентификатора протокола SCTP для всех будущих передач данных;

sinfo_context задает значение по умолчанию для поля sinfo_context, которое является локальной меткой для сообщений, которые не могли быть доставлены собеседнику;

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

sinfo_tsn игнорируется при установке параметров по умолчанию. При получении сообщений функцией recvmsg или sctp_recvmsg это поле содержит значение транспортного последовательного номера (transport sequence number, TSN), помещенное собеседником в порцию данных SCTP;

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

sinfo_assoc_id содержит идентификатор ассоциации, для которой требуется установка параметров по умолчанию. Для сокетов типа «один-к-одному» это поле игнорируется.

Таблица 7.5. Допустимые значения флагов SCTP (поле sinfo_flags)

Константа Описание
MSG_ABORT Вызывает аварийное завершение ассоциации
MSG_ADDR_OVER Заставляет SCTP использовать указанный адрес вместо адреса по умолчанию
MSG_EOF Корректное завершение ассоциации после отправки сообщения
MSG_PR_BUFFER Включение частичной надежности в зависимости от буфера (если она вообще поддерживается)
MSG_PR_SCTP Включение частичной надежности доставки для данного сообщения (если поддерживается)
MSG_UNORDERED Указывает, что данное сообщение использует сервис неупорядоченной доставки

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

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Параметр сокета IP_HRDINCL

Из книги UNIX: разработка сетевых приложений автора Стивенс Уильям Ричард

Параметр сокета IP_HRDINCL Если этот параметр задан для символьного сокета IP (см. главу 28), нам следует создать наш собственный заголовок IP для всех дейтаграмм, которые мы отправляем через символьный сокет. Обычно ядро создает заголовок IP для дейтаграмм, отправляемых через


Параметр сокета IP_OPTIONS

Из книги автора

Параметр сокета IP_OPTIONS Установка этого параметра позволяет нам задавать параметры IP в заголовке IPv4. Это требует точного знания формата параметров IP в заголовке IP. Мы рассмотрим этот параметр в контексте маршрутизации от отправителя IPv4 в разделе


Параметр сокета IP_RECVDSTADDR

Из книги автора

Параметр сокета IP_RECVDSTADDR Этот параметр сокета заставляет функцию recvmsg возвращать IP-адрес получателя в получаемой дейтаграмме UDP в качестве вспомогательных данных. Пример использования этого параметра мы приводим в разделе


Параметр сокета IP_RECVIF

Из книги автора

Параметр сокета IP_RECVIF Этот параметр сокета заставляет функцию recvmsg возвращать индекс интерфейса, на котором принимается дейтаграмма UDP, в качестве вспомогательных данных. Пример использования этого параметра мы приводим в разделе


Параметр сокета IP_TOS

Из книги автора

Параметр сокета IP_TOS Этот параметр позволяет нам устанавливать поле тип службы (тип сервиса) (TOS, type-of-service) (рис. А.1) в заголовке IP для сокета TCP или UDP. Если мы вызываем для этого сокета функцию getsockopt, возвращается текущее значение, которое будет помещено в поля DSCP и ECN


Параметр сокета IP_TTL

Из книги автора

Параметр сокета IP_TTL С помощью этого параметра мы можем устанавливать и получать заданное по умолчанию значение TTL (time-to-live field — поле времени жизни, рис. А.1), которое система будет использовать для данного сокета. (TTL для многоадресной передачи устанавливается при помощи


7.7. Параметр сокета ICMPv6

Из книги автора

7.7. Параметр сокета ICMPv6 Единственный параметр сокета, обрабатываемый ICMPv6, имеет аргумент level, равный


Параметр сокета ICMP6_FILTER

Из книги автора

Параметр сокета ICMP6_FILTER Этот параметр позволяет нам получать и устанавливать структуру icmp6_filter, которая определяет, какие из 256 возможных типов сообщений ICMPv6 передаются для обработки на символьный сокет. Мы обсудим этот параметр в разделе


Параметр сокета IPV6_CHECKSUM

Из книги автора

Параметр сокета IPV6_CHECKSUM Этот параметр сокета задает байтовое смещение поля контрольной суммы внутри данных пользователя. Если значение неотрицательное, ядро, во-первых, вычисляет и хранит контрольную сумму для всех исходящих пакетов и, во-вторых, проверяет полученную


Параметр сокета IPV6_DONTFRAG

Из книги автора

Параметр сокета IPV6_DONTFRAG Установка этого параметра запрещает автоматическое включение заголовка фрагментации для UDP и символьных сокетов. При этом исходящие пакеты, размер которых превышает MTU исходящего интерфейса, просто сбрасываются. Системный вызов ошибку не


Параметр сокета IPV6_NEXTHOP

Из книги автора

Параметр сокета IPV6_NEXTHOP Этот параметр задает адрес следующего транзитного узла для дейтаграммы в виде структуры адреса сокета. Подробнее о нем рассказывается в разделе


Параметр сокета IPV6_PATHMTU

Из книги автора

Параметр сокета IPV6_PATHMTU Этот параметр может быть только получен, но не установлен. При его считывании система возвращает текущее значение маршрутной MTU, определенное соответствующим методом (см. раздел


Параметр сокета IPV6_RECVDSTOPTS

Из книги автора

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


Параметр сокета TCP_MAXSEG

Из книги автора

Параметр сокета TCP_MAXSEG Этот параметр сокета позволяет нам получать или устанавливать максимальный размер сегмента (maximum segment size, MSS) для соединения TCP. Возвращаемое значение — это количество данных, которые наш TCP будет отправлять на другой конец соединения. Часто это


Параметр сокета TCP_NODELAY

Из книги автора

Параметр сокета TCP_NODELAY Если этот параметр установлен, он отключает алгоритм Нагла (Nagle algorithm) (см. раздел 19.4 [111] и с. 858–859 [128]). По умолчанию этот алгоритм включен.Назначение алгоритма Нагла — сократить число небольших пакетов в глобальной сети. Согласно этому алгоритму,


Параметр сокета SCTP_ADAPTION_LAYER

Из книги автора

Параметр сокета SCTP_ADAPTION_LAYER При инициализации ассоциации любой собеседник может указать на наличие уровня-адаптора. Это указание должно представлять из себя 32-разрядное беззнаковое целое, которое может использоваться двумя приложениями для координации локального