Протокол управления перегрузкой дейтаграмм

редактировать
Протокол транспортного уровня, ориентированный на сообщения

В компьютерных сетях, Протокол управления перегрузкой дейтаграмм (DCCP ) - это ориентированный на сообщения протокол транспортного уровня . DCCP реализует надежную установку соединения, разрыв, явное уведомление о перегрузке (ECN), контроль перегрузки и согласование функций. IETF опубликовал DCCP как RFC 4340, предлагаемый стандарт, в марте 2006 г. RFC 4336 представляет собой введение.

DCCP предоставляет способ получить доступ к механизмам управления перегрузкой без необходимости их реализации на прикладном уровне. Он позволяет использовать семантику на основе потоков, как в Протокол управления передачей (TCP), но не обеспечивает надежную доставку по порядку. Последовательная доставка в нескольких потоках, как в Протокол передачи управления потоком (SCTP), недоступна в DCCP. Соединение DCCP содержит трафик подтверждения, а также трафик данных. Подтверждения информируют отправителя о том, прибыли ли его пакеты и помечены ли они явным уведомлением о перегрузке (ECN). Подтверждения передаются настолько надежно, насколько этого требует используемый механизм управления перегрузкой, возможно, полностью надежно.

DCCP полезен для приложений с ограничениями по времени доставки данных. К таким приложениям относятся потоковое мультимедиа, многопользовательские онлайн-игры и Интернет-телефония. В таких приложениях старые сообщения быстро становятся бесполезными, поэтому получение новых сообщений предпочтительнее повторной отправки потерянных сообщений. По состоянию на 2017 год такие приложения часто либо соглашались на TCP, либо использовали протокол дейтаграмм пользователя (UDP) и реализовывали свои собственные механизмы контроля перегрузки, либо вообще не имели контроля перегрузки. Будучи полезным для этих приложений, DCCP может также служить в качестве общего механизма управления перегрузкой для приложений на основе UDP, добавляя, при необходимости, механизмы для надежной или упорядоченной доставки поверх UDP / DCCP. В этом контексте DCCP позволяет использовать различные, но обычно дружественные к TCP механизмы контроля перегрузки.

DCCP имеет возможность использовать очень длинные (48-битные) порядковые номера, соответствующие идентификатору пакета, а не байтовому идентификатору, как в TCP. Большая длина порядковых номеров предназначена для защиты от «некоторых слепых атак, таких как внедрение DCCP-Reset в соединение».

Содержание
  • 1 Реализации
  • 2 Структура пакета
  • 3 См. Также
  • 4 Ссылки
  • 5 Внешние ссылки
    • 5.1 Спецификации протокола
    • 5.2 Идентификаторы контроля перегрузки
    • 5.3 Другая информация
Реализации

Следующие операционные системы реализуют DCCP:

  • FreeBSD, версия 5.1 как патч
  • Linux, начиная с версии 2.6.14

Библиотека пользовательского пространства:

  • реализация DCCP-TP оптимизирована для переносимости, но не претерпела изменений с июня 2008 г..
  • GoDCCP цель этой реализации - предоставить стандартизированную переносимую среду NAT для одноранговой связи с гибким контролем перегрузки в зависимости от приложения.
Структура пакета

Общий заголовок DCCP принимает разные формы в зависимости от значения X, бита расширенных порядковых номеров. Если X равен единице, поле порядкового номера имеет длину 48 бит, а общий заголовок занимает 16 байтов, как показано ниже.

Общий заголовок DCCP
СмещенияОктет 01
ОктетБит 0123456789101112131415
00Порт источника
216Порт назначения
432Смещение данныхCCValCsCov
648Контрольная сумма
864ResТипX = 1Зарезервировано
1080Порядковый номер (старшие биты)
1296Порядковый номер
14112Порядковый номер (младшие биты)

Если X равен нулю, передаются только младшие 24 бита порядкового номера, и общий заголовок имеет длину 12 байтов.

СмещенияОктет 01
ОктетБит 0123456789101112131415
00Порт источника
216Порт назначения
432Смещение данныхCCValCsCov
648Контрольная сумма
864ResТипX = 0Порядковый номер (старший)
1080Порядковый номер (младшие биты)
Порт источника (16 бит)
Идентифицирует порт отправки
Порт назначения (16 бит)
Идентифицирует порт приема
Смещение данных
(8 бит): смещение от начала заголовка DCCP пакета до начала его области данных приложения, 32-битными словами.
CCVal (4 бита)
Используется CCID HC-Sender
Покрытие контрольной суммы (CsCov) (4 бита)
Покрытие контрольной суммы определяет части пакета, которые покрываются полем контрольной суммы.
Контрольная сумма (16 бит)
Интернет контрольная сумма заголовка DCCP пакета (включая параметры), псевдозаголовок сетевого уровня и, в зависимости от покрытия контрольной суммы, все, некоторые или ни одно приложение данные
Зарезервировано (Res) (3 бита)
Отправители ДОЛЖНЫ установить в этом поле все нули в сгенерированных пакетах, а получатели ДОЛЖНЫ игнорировать его значение
Тип (4 бита)
Поле Тип определяет тип пакета
Расширенные порядковые номера (X) (1 бит)
Устанавливается в единицу, чтобы указать на использование расширенного универсального заголовка с 48-битным порядковым номером и номерами подтверждения
Порядковый номер (48 или 24 бита)
Однозначно идентифицирует пакет в последовательности всех пакетов, отправленных источником по этому соединению
См. также
Ссылки
Внешние ссылки

Спецификации протокола

  • RFC 4340 - Протокол управления перегрузкой дейтаграмм
  • RFC 5595 - Коды обслуживания протокола управления перегрузкой дейтаграмм (DCCP)
  • RFC 5596 - Техника одновременного открытия DCCP для упрощения NAT / Мидлбокс Обход
  • RFC 5762 - RTP и DCCP
  • RFC 5238 - Datagram Transport Layer Security (DTLS) через DCCP
  • RFC 5634 - Быстрый старт для DCCP
  • RFC 6773 - UDP-инкапсуляция протокола управления перегрузкой дейтаграммы для прохождения NAT

Идентификаторы контроля перегрузки

  • RFC 4341 - Профиль для DCCP с идентификатором 2 контроля перегрузки: TCP-подобный контроль перегрузки
  • RFC 4342 - Профиль для DCCP Congestion Control ID 3: TCP-Friendly Rate Control (TFRC)
  • RFC 5622 - Профиль для DCCP Congestion Control ID 4: TCP-Friendly Rate Control for Small Packets (TFRC-SP)

Другая информация

Последняя правка сделана 2021-05-17 14:12:29
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте