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).
The UDP-Lite implementation is a full extension of
udp(7)—that is,
it shares the same API and API behavior, and in addition offers two socket
options to control the checksum coverage.
В 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
- This option sets the sender checksum coverage and takes an
int as argument, with a checksum coverage value in the range
0..2^16-1.
- Значение
0 означает,
что
охватывается
вся
датаграмма.
Значения 1-7
некорректны
(RFC 3828, 3.1) и
округляются
до
минимального
охвата — 8.
- With regard to IPv6 jumbograms (RFC 2675), the
UDP-Litev6 checksum coverage is limited to the first 2^16-1 octets, as per
RFC 3828, 3.5. Higher values are therefore silently truncated to
2^16-1. If in doubt, the current coverage value can always be queried
using getsockopt(2).
- UDPLITE_RECV_CSCOV
- Это
аналог с
приёмной
стороны,
использует
тот же
формат
аргумента
и диапазон
значений,
что и у UDPLITE_SEND_CSCOV.
Данный
параметр
не
требуется
для приёма
трафика с
контрольной
суммой
частичного
охвата. Он
предназначен
для
фильтрации
трафика:
если
включён, то
это
указывает
ядру
отбрасывать
все пакеты,
у которых
охват
менее
заданного
значения.
- Если
значение
UDPLITE_RECV_CSCOV
превышает
реальный
охват
пакета, то
поступающие
пакеты
просто
отбрасываются,
но при этом
может
генерироваться
предупреждающее
сообщение
в
системный
журнал.
Могут быть
возвращены
любые
ошибки,
описанные
для
udp(7). UDP-Lite не
вносит
никаких
дополнительных
типов
ошибок.
- /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
Русский
перевод
этой
страницы
руководства
был сделан
Azamat Hackimov <
[email protected]>, Dmitriy Ovchinnikov
<
[email protected]>, Dmitry Bolkhovskikh <
[email protected]>,
Katrin Kutepova <
[email protected]>, Yuri Kozlov
<
[email protected]> и Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]