Набор интернет-протоколов |
---|
Уровень приложения |
Транспортный уровень |
Интернет-уровень |
Связующий слой |
|
В компьютерных сетях , то дейтаграммы перегрузки протокол управления ( 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]
Реализации [ править ]
Следующие операционные системы реализуют DCCP:
- FreeBSD , версия 5.1 [2] в виде патча
- Linux, начиная с версии 2.6.14 [3]
Библиотека пользовательского пространства:
- Реализация DCCP-TP оптимизирована для переносимости, но не претерпела изменений с июня 2008 г. [4]
- 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 | Res | Тип | Х = 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 | Res | Тип | Х = 0 | Порядковый номер (высокий) | ||||||||||||
10 | 80 | Порядковый номер (младшие биты) |
- Исходный порт (16 бит)
- Определяет порт отправки
- Порт назначения (16 бит)
- Определяет принимающий порт
- Смещение данных
- (8 бит): смещение от начала заголовка DCCP пакета до начала его области данных приложения в 32-битных словах.
- CCVal (4 бита)
- Используется CCID HC-Sender
- Покрытие контрольной суммы (CsCov) (4 бита)
- Checksum Coverage определяет части пакета, которые покрываются полем Checksum.
- Контрольная сумма (16 бит)
- Контрольная сумма заголовка DCCP пакета (включая параметры) в Интернете, псевдозаголовок сетевого уровня и, в зависимости от покрытия контрольной суммы, все, некоторые или никакие данные приложения.
- Зарезервировано (Res) (3 бита)
- Отправители ДОЛЖНЫ установить в этом поле все нули в сгенерированных пакетах, а получатели ДОЛЖНЫ игнорировать его значение.
- Тип (4 бита)
- В поле Тип указывается тип пакета.
- Расширенные порядковые номера (X) (1 бит)
- Установите в единицу, чтобы указать на использование расширенного универсального заголовка с 48-битным порядковым номером и номерами подтверждения.
- Порядковый номер (48 или 24 бита)
- Однозначно идентифицирует пакет в последовательности всех пакетов, отправленных источником по этому соединению.
См. Также [ править ]
- Протокол передачи управления потоком (SCTP)
- Транспортный уровень § Сравнение протоколов транспортного уровня
Ссылки [ править ]
- ^ RFC 4340 раздел 7.6
- ^ "[dccp] Реализация FreeBSD" . www.ietf.org . Проверено 18 апреля 2018 года .
- ^ "Linux получает DCCP [LWN.net]" . lwn.net . Проверено 18 апреля 2018 года .
- ^ Журнал изменений для вики dccp-tp, получен 13 июня 2011 г.
Внешние ссылки [ править ]
- Устав протокола управления перегрузкой дейтаграмм IETF (dccp)
Спецификации протокола [ править ]
- RFC 4340 - протокол управления перегрузкой дейтаграмм
- RFC 5595 - служебные коды протокола управления перегрузкой дейтаграмм (DCCP)
- RFC 5596 - метод одновременного открытия DCCP для облегчения обхода NAT / промежуточного ящика
- 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-Friendly Rate Control (TFRC)
- RFC 5622 - Профиль для DCCP Congestion Control ID 4: TCP-Friendly Rate Control for Small Packets (TFRC-SP)
Другая информация [ править ]
- RFC 4336 - Постановка проблемы для протокола управления перегрузкой дейтаграмм (DCCP)
- Страница DCCP от одного из авторов DCCP
- Поддержка DCCP в Linux
- Протокол управления перегрузкой дейтаграмм (DCCP)