Протокол управления перегрузкой дейтаграмм - Datagram Congestion Control Protocol
Набор интернет-протоколов |
---|
Уровень приложения |
Транспортный уровень |
Интернет-уровень |
Связующий слой |
В компьютерная сеть, то Протокол управления перегрузкой дейтаграмм (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:
Библиотека пользовательского пространства:
- 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 г.
внешние ссылки
Спецификации протокола
- 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)