Параметр сокета SCTP_STATUS
Параметр сокета SCTP_STATUS
Этот параметр сокета служит для получения информации о текущем статусе ассоциации SCTP. Для обеспечения максимальной переносимости пользуйтесь функцией sctp_opt_info, а не getaddrinfo. Приложение должно предоставить структуру sctp_status, указав идентификатор ассоциации sstat_assoc_id. Структура будет заполнена информацией о выбранной ассоциации и возвращена приложению. Формат структуры sctp_status таков:
struct sctp_status {
sctp_assoc_t sstat_assoc_id;
int32_t sstat_state;
u_int32_t sstat_rwnd;
u_int16_t sstat_unackdata;
u_int16_t sstat_penddata;
u_int16_t sstat_instrms;
u_int16_t sstat_outstrms;
u_int32_t sstat_fragmentation_point;
struct sctp_paddrinfo sstat_primary;
};
Поля структуры имеют следующий смысл:
? sstat_assoc_id содержит идентификатор ассоциации;
? sstat_state содержит константу, обозначающую состояние ассоциации (табл. 7.8). Подробное описание состояний конечной точки SCTP, чередующихся при установке и завершении ассоциации, приводится на рис. 2.8;
? sstat_rwnd содержит текущее вычисленное значение приемного окна собеседника;
? sstat_unackdata содержит количество неподтвержденных порций данных, ждущих ответа собеседника;
? sstat_penddata содержит количество непрочитанных порций данных, подготовленных локальной конечной точкой SCTP для приложения;
? sstat_instrms содержит количество потоков, используемых собеседником для передачи данных на данную конечную точку;
? sstat_outstrms содержит количество потоков, по которым данная конечная точка может передавать данные собеседнику;
? sstat_fragmentation_point содержит текущее значение границы фрагментации пользовательских сообщений, используемое локальной конечной точкой SCTP. Это значение обычно равняется минимальной MTU для всех адресатов или еще меньшей величине, установленной при помощи параметра SCTP_MAXSEG;
? sstat_primary содержит текущий основной адрес. Основной адрес используется по умолчанию для отправки данных собеседнику.
Таблица 7.8. Состояния SCTP
Константа Описание SCTP_CLOSED Ассоциация закрыта SCTP_COOKIE_WAIT Ассоциация отправила пакет INIT SCTP_COOKIE_ECHOED Ассоциация отправила эхо-ответ cookie SCTP_ESTABLISHED Ассоциация установлена SCTP_SHUTDOWN_PENDING Ассоциация ждет отправки сообщения о завершении SCTP_SHUTDOWN_SENT Ассоциация отправила сообщение о завершении SCTP_SHUTDOWN_RECEIVED Ассоциация получила сообщение о завершении SCTP_SHUTDOWN_ACK_SENT Ассоциация ждет пакета SHUTDOWN-COMPLETEЭти параметры полезны для диагностики соединения и определения характеристик текущего сеанса. Например, функция sctp_get_no_strms в разделе 10.2 будет считывать sstat_outstrms для определения количества доступных для отправки данных потоков. Низкое значение sstat_rwnd или высокое значение sstat_unackdata позволяет сделать вывод о заполнении приемного буфера собеседника, так что приложение может вовремя замедлить передачу данных. Поле sstat_fragmentation_point может использоваться некоторыми приложениями для уменьшения количества пакетов, создаваемых SCTP, путем уменьшения размеров сообщений.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Параметр сокета IP_HRDINCL
Параметр сокета 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-разрядное беззнаковое целое, которое может использоваться двумя приложениями для координации локального