Протокол управления перегрузкой дейтаграмм
Набор интернет-протоколов |
---|
Прикладной уровень |
Транспортный уровень |
Интернет-слой |
Слой связи |
В компьютерных сетях ( протокол управления перегрузкой дейтаграмм DCCP ) , ориентированный на сообщения транспортного уровня представляет собой протокол . DCCP реализует надежную установку соединения, разрыв соединения, явное уведомление о перегрузке (ECN), контроль перегрузки и согласование функций. IETF опубликовал DCCP как RFC 4340 , предложенный стандарт , в марте 2006 года. RFC 4336 содержит введение.
Операция [ править ]
DCCP предоставляет возможность получить доступ к механизмам контроля перегрузки без необходимости реализовывать их на уровне приложений . Он допускает семантику на основе потоков, как в протоколе управления передачей (TCP), но не обеспечивает надежную доставку по порядку. Последовательная доставка в нескольких потоках, как в протоколе управления потоками (SCTP), недоступна в DCCP. Соединение DCCP содержит трафик подтверждения , а также трафик данных. Подтверждения информируют отправителя о том, прибыли ли его пакеты и были ли они отмечены явным уведомлением о перегрузке (ECN). Подтверждения передаются настолько надежно, насколько этого требует используемый механизм контроля перегрузки, возможно, полностью надежно.
DCCP имеет возможность использовать очень длинные (48-битные) порядковые номера, соответствующие идентификатору пакета, а не байтовому идентификатору, как в TCP. Большая длина порядковых номеров призвана защитить от «некоторых слепых атак, таких как внедрение DCCP-Reset в соединение». [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 байт, как показано ниже.
Смещения | Октет | 0 | 1 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Октет | Кусочек | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
0 | 0 | Исходный порт | |||||||||||||||
2 | 16 | Порт назначения | |||||||||||||||
4 | 32 | Смещение данных | CCVal | CsCov | |||||||||||||
6 | 48 | Контрольная сумма | |||||||||||||||
8 | 64 | Рез | Тип | Х=1 | Сдержанный | ||||||||||||
10 | 80 | Порядковый номер (старшие биты) | |||||||||||||||
12 | 96 | Порядковый номер | |||||||||||||||
14 | 112 | Порядковый номер (младшие биты) |
Если X равен нулю, передаются только младшие 24 бита порядкового номера, а длина общего заголовка составляет 12 байт.
Смещения | Октет | 0 | 1 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Октет | Кусочек | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
0 | 0 | Исходный порт | |||||||||||||||
2 | 16 | Порт назначения | |||||||||||||||
4 | 32 | Смещение данных | CCVal | CsCov | |||||||||||||
6 | 48 | Контрольная сумма | |||||||||||||||
8 | 64 | Рез | Тип | Х=0 | Порядковый номер (высокий) | ||||||||||||
10 | 80 | Порядковый номер (младшие биты) |
- Исходный порт (16 бит)
- Определяет порт отправки
- Порт назначения (16 бит)
- Определяет порт приема
- Смещение данных
- (8 бит): смещение от начала заголовка DCCP пакета до начала области данных приложения в 32-битных словах.
- CCVal (4 бита)
- Используется CCID HC-Sender
- Покрытие контрольной суммы (CsCov) (4 бита)
- Покрытие контрольной суммы определяет части пакета, которые покрываются полем Контрольная сумма.
- Контрольная сумма (16 бит)
- Интернет-контрольная сумма заголовка DCCP пакета (включая параметры), псевдозаголовок сетевого уровня и, в зависимости от покрытия контрольной суммы, все, некоторые или ни одного из данных приложения.
- Зарезервировано (Res) (3 бита)
- Отправители ДОЛЖНЫ установить в этом поле все нули в сгенерированных пакетах, а получатели ДОЛЖНЫ игнорировать его значение.
- Тип (4 бита)
- Поле Type указывает тип пакета.
- Расширенные порядковые номера (X) (1 бит)
- Установите значение «1», чтобы указать использование расширенного общего заголовка с 48-битными номерами последовательности и подтверждения.
- Порядковый номер (48 или 24 бита)
- Уникально идентифицирует пакет в последовательности всех пакетов, отправленных источником по этому соединению.
Текущее развитие [ править ]
Аналогично расширению протокола TCP за счет возможности многопутевого распространения ( MPTCP ), также и для DCCP функция многопутевого распространения обсуждается в IETF. [6] соответственно обозначается как MP-DCCP . Первые реализации уже разработаны, протестированы и представлены в результате сотрудничества операторов и научных кругов. [7] и доступны как решение с открытым исходным кодом.
См. также [ править ]
- Протокол передачи управления потоком (SCTP)
- Транспортный уровень § Сравнение протоколов транспортного уровня
Ссылки [ править ]
- ^ RFC 4340, раздел 7.6.
- ^ «[dccp] Реализация FreeBSD» . www.ietf.org . Проверено 18 апреля 2018 г.
- ^ «Linux получает DCCP [LWN.net]» . lwn.net . Проверено 18 апреля 2018 г.
- ^ «dccp: Распечатать уведомление об устаревании» . ядро.орг .
- ^ «Журнал изменений вики-сайта dccp-tp, получено 13 июня 2011 г.» . Архивировано из оригинала 4 октября 2011 года . Проверено 13 июня 2011 г.
- ^ Поправь, Маркус; Брунстрем, Анна; Касслер, Анис; Ракочевич, Веселин; Джонсон, Стивен (9 ноября 2021 г.). «Расширения DCCP для многопутевой работы с несколькими адресами» .
- ^ «Расширение Multipath для DCCP» .
Внешние ссылки [ править ]
Спецификации протокола [ править ]
- RFC 4340 — Протокол контроля перегрузки дейтаграмм
- RFC 5595 — Сервисные коды протокола управления перегрузкой дейтаграмм (DCCP)
- RFC 5596 — Метод одновременного открытия DCCP для облегчения обхода NAT/Middlebox
- RFC 5762 — RTP и DCCP
- RFC 5238 — Безопасность дейтаграммного транспортного уровня (DTLS) через DCCP
- RFC 5634 — Быстрый старт для DCCP
- RFC 6773 — протокол управления перегрузкой дейтаграмм, инкапсуляция UDP для обхода NAT
Идентификаторы контроля перегрузки [ править ]
- RFC 4341 — Профиль для DCCP Congestion Control ID 2: TCP-подобный контроль перегрузки
- RFC 4342 — Профиль для DCCP Congestion Control ID 3: Управление скоростью, дружественное к TCP (TFRC)
- RFC 5622 — Профиль для DCCP Congestion Control ID 4: TCP-дружественное управление скоростью для небольших пакетов (TFRC-SP)
Другая информация [ править ]
- RFC 4336 — Постановка задачи для протокола управления перегрузкой дейтаграмм (DCCP)
- Страница DCCP от одного из авторов DCCP
- Поддержка DCCP в Linux
- Протокол управления перегрузкой дейтаграмм (DCCP)