Протокол транспортного уровня, ориентированный на сообщения
В компьютерных сетях протокол управления перегрузкой датаграмм ( DCCP ) — это протокол транспортного уровня , ориентированный на сообщения . DCCP реализует надежную установку соединения, разрыв, явное уведомление о перегрузке (ECN), управление перегрузкой и согласование функций. IETF опубликовал DCCP как RFC 4340, предлагаемый стандарт , в марте 2006 года. RFC 4336 содержит введение.
Операция
DCCP предоставляет способ получить доступ к механизмам управления перегрузкой без необходимости их реализации на уровне приложения . Он допускает семантику на основе потока, как в протоколе управления передачей (TCP), но не обеспечивает надежную доставку в порядке очереди. Последовательная доставка в нескольких потоках, как в протоколе управления передачей потоков (SCTP), недоступна в DCCP. Соединение DCCP содержит трафик подтверждений , а также трафик данных. Подтверждения информируют отправителя о том, прибыли ли его пакеты и были ли они отмечены явным уведомлением о перегрузке (ECN). Подтверждения передаются настолько надежно, насколько того требует используемый механизм управления перегрузкой, возможно, полностью надежно.
DCCP имеет возможность использовать очень длинные (48-битные) порядковые номера, соответствующие идентификатору пакета, а не байтовому идентификатору, как в TCP. Большая длина порядковых номеров направлена на защиту от «некоторых слепых атак, таких как внедрение DCCP-Resets в соединение». [1]
Приложения
DCCP полезен для приложений с ограничениями по времени доставки данных. К таким приложениям относятся потоковое мультимедиа , многопользовательские онлайн-игры и интернет-телефония . В таких приложениях старые сообщения быстро становятся бесполезными, поэтому получение новых сообщений предпочтительнее повторной отправки потерянных сообщений. По состоянию на 2017 год [update]такие приложения часто либо довольствовались TCP, либо использовали протокол пользовательских датаграмм (UDP) и реализовывали собственные механизмы контроля перегрузки, либо вообще не имели контроля перегрузки. Будучи полезным для этих приложений, DCCP также может служить общим механизмом контроля перегрузки для приложений на основе UDP, добавляя, по мере необходимости, механизмы для надежной или упорядоченной доставки поверх UDP/DCCP. В этом контексте DCCP позволяет использовать различные, но в целом дружественные к TCP механизмы контроля перегрузки.
Реализации
Следующие операционные системы реализуют DCCP:
- FreeBSD , версия 5.1 [2] как патч
- Linux, начиная с версии 2.6.14, [3], но помечен как устаревший с версии 6.4 из-за отсутствия поддержки и запланирован к удалению в 2025 году. [4]
Библиотека пользовательского пространства:
- DCCP-TP Архивировано 23 июля 2008 г. в реализации Wayback Machine , оптимизированной для переносимости, но не претерпевшей изменений с июня 2008 г. [5]
- Целью данной реализации GoDCCP является предоставление стандартизированной, переносимой, дружественной к NAT среды для одноранговой связи с гибким контролем перегрузки в зависимости от приложения.
Структура пакета
Общий заголовок DCCP принимает различные формы в зависимости от значения X, бита расширенных порядковых номеров. Если X равен единице, поле порядкового номера имеет длину 48 бит, а общий заголовок занимает 16 байт, как показано ниже.
Если X равен нулю, передаются только младшие 24 бита порядкового номера, а общий заголовок имеет длину 12 байт.
- Исходный порт: 16 бит
- Определяет порт отправки.
- Порт назначения: 16 бит
- Определяет порт приема.
- Смещение данных: 8 бит
- Смещение от начала заголовка DCCP пакета до начала области его прикладных данных, в 32-битных словах.
- CCVal: 4 бита
- Используется CCID HC-Sender.
- Покрытие контрольной суммы (CsCov): 4 бита
- Покрытие контрольной суммы определяет части пакета, на которые распространяется поле контрольной суммы.
- Контрольная сумма: 16 бит
- Контрольная сумма заголовка DCCP пакета в Интернете (включая параметры), псевдозаголовок сетевого уровня и, в зависимости от покрытия контрольной суммы, все, некоторые или никакие данные приложения.
- Зарезервировано (Res): 3 бита; Res == 0
- Отправители ДОЛЖНЫ устанавливать это поле равным всем нулям в сгенерированных пакетах, а получатели ДОЛЖНЫ игнорировать его значение.
- Тип: 4 бита
- Поле Тип указывает тип пакета.
- Расширенные порядковые номера (X): 1 бит
- Установите значение «1», чтобы указать на использование расширенного универсального заголовка с 48-битными порядковыми номерами и номерами подтверждения.
- Порядковый номер: 48 или 24 бита
- Уникально идентифицирует пакет в последовательности всех пакетов, отправленных источником по данному соединению.
Текущее развитие
Подобно расширению протокола TCP с помощью многопутевой возможности ( MPTCP ), также для DCCP многопутевая функция обсуждается в IETF [6] соответственно обозначена как MP-DCCP. Первые реализации уже разработаны, протестированы и представлены в совместном подходе между операторами и академическими кругами [7] и доступны как решение с открытым исходным кодом.
Смотрите также
Ссылки
- ^ RFC 4340 раздел 7.6
- ^ "[dccp] Реализация FreeBSD". www.ietf.org . Получено 18 апреля 2018 г. .
- ^ "Linux получает DCCP [LWN.net]". lwn.net . Получено 18 апреля 2018 г. .
- ^ "dccp: Распечатать уведомление об устаревании". kernel.org .
- ^ "Журнал изменений для dccp-tp wiki, получено 13 июня 2011 г.". Архивировано из оригинала 4 октября 2011 г. Получено 13 июня 2011 г.
- ^ Аменд, Маркус; Брунстром, Анна; Касслер, Анес; Ракочевич, Веселин; Джонсон, Стивен (9 ноября 2021 г.). «Расширения DCCP для многопутевой работы с несколькими адресами».
- ^ «Многопутевое расширение для DCCP».
Внешние ссылки
- Устав протокола управления перегрузкой датаграмм IETF (dccp)
Спецификации протокола
- RFC 4340 — Протокол управления перегрузкой датаграмм
- RFC 5595 — Коды служб протокола управления перегрузкой датаграмм (DCCP)
- RFC 5596 — Метод одновременного открытия DCCP для упрощения прохождения NAT/Middlebox
- RFC 5762 — RTP и DCCP
- RFC 5238 — Datagram Transport Layer Security (DTLS) через DCCP
- RFC 5634 — Краткое руководство по DCCP
- RFC 6773 — Протокол управления перегрузкой датаграмм UDP-инкапсуляция для обхода NAT
Идентификаторы контроля перегрузки
- RFC 4341 — Профиль для DCCP Congestion Control ID 2: TCP-подобный Congestion Control
- RFC 4342 — Профиль для DCCP Congestion Control ID 3: TCP-Friendly Rate Control (TFRC)
- RFC 5622 — Профиль для DCCP Congestion Control ID 4: TCP-Friendly Rate Control для небольших пакетов (TFRC-SP)
Другая информация
- RFC 4336 — Постановка проблемы для протокола управления перегрузкой датаграмм (DCCP)
- Страница DCCP от одного из авторов DCCP
- Поддержка DCCP в Linux
- Протокол управления перегрузкой датаграмм (DCCP)