ИМЯ udplite - облегчённый протокол пользовательских датаграмм
ОБЗОР #include <sys/socket.h>
sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDPLITE);
ОПИСАНИЕ Это реализация облегчённого протокола пользовательских датаграмм (UDP-Lite), описанная в RFC 3828.
UDP-Lite представляет собой расширение UDP (RFC 768), содержащее поддержку контрольных сумм переменной длины. Это даёт преимущества при передаче данных некоторых типов мультимедиа, для которых допустимо использовать слегка повреждённые датаграммы, если бы они не отбрасывались другими нижележащими протоколами.
Охват (coverage) контрольной суммы переменной длины задаётся с помощью параметра через setsockopt(2). Если параметр не установлен, то отличием от UDP будет только другой идентификатор протокола IP (номер по IANA — 136).
Реализация UDP-Lite представляет собой полноценное расширение udp(7) — используется тот же программный интерфейс и поведение; кроме этого имеются два параметра сокета для управления охватом контрольной суммы.
Формат адреса В UDP-Litev4 используется формат адреса sockaddr_in, описанный в ip(7). В UDP-Litev6 используется формат адреса sockaddr_in6, описанный в ipv6(7).
Параметры сокета Для получения и задания параметров сокетов UDP-Lite, используйте вызовы getsockopt(2) и setsockopt(2), соответственно. Значение аргумента уровня параметров должно быть равно IPPROTO_UDPLITE. Кроме того, сокетам UDP-Lite доступно большинство параметров сокета IPPROTO_UDP. Дополнительная информация приведена в udp(7).
Следующие параметры относятся только к UDP-Lite.
UDPLITE_SEND_CSCOV Этим параметром задаётся охват данных контрольной суммой; в качестве аргумента ожидается значение типа int, которым задаётся охват в диапазоне 0..2^16-1.
Значение 0 означает, что охватывается вся датаграмма. Значения 1-7 некорректны (RFC 3828, 3.1) и округляются до минимального охвата — 8.
При использовании джумбограмм (jumbograms) IPv6 (RFC 2675), охват контрольной суммы в UDP-Litev6 ограничен первыми 2^16-1 октетами (согласно RFC 3828, 3.5). Большие значения безошибочно урезаются до 2^16-1. Текущее значение охвата всегда можно запросить с помощью getsockopt(2).
UDPLITE_RECV_CSCOV Это аналог с приёмной стороны, использует тот же формат аргумента и диапазон значений, что и у UDPLITE_SEND_CSCOV. Данный параметр не требуется для приёма трафика с контрольной суммой частичного охвата. Он предназначен для фильтрации трафика: если включён, то это указывает ядру отбрасывать все
ФАЙЛЫ /proc/net/snmp - основные счётчики статистики UDP-Litev4. /proc/net/snmp6 - основные счётчики статистики UDP-Litev6.
ВЕРСИИ UDP-Litev4/v6 впервые появился в Linux 2.6.20.
ДЕФЕКТЫ Если поддержка в glibc отсутствует, то требуются следующие определения:
#define IPPROTO_UDPLITE 136 #define UDPLITE_SEND_CSCOV 10 #define UDPLITE_RECV_CSCOV 11
СМОТРИТЕ ТАКЖЕ ip(7), ipv6(7), socket(7), udp(7)
В RFC 3828 описан облегчённый протокол пользовательских датаграмм (Lightweight User Datagram Protocol — UDP-Lite).
Файл Documentation/networking/udplite.txt в дереве исходного кода ядра Linux
|