RFC: 4340
Оригинал: Datagram Congestion Control Protocol (DCCP)
Категория: Предложенный стандарт
Дата публикации:
Авторы: , ,
Перевод: Николай Малых

5.6. Пакеты DCCP-Reset

Пакеты DCCP-Reset служат для безусловного разрыва соединений. Нормальное завершение соединений также использует пакеты DCCP-Reset, но эти пакеты могут также применяться в других случаях, включая получение некорректного порядкового номера и/или некорректные отклики ECN Nonce Echo. Пакеты DCCP-Resets должны использовать 48-битовые порядковые номера (X=1).

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/            Generic DCCP Header with X=1 (16 bytes)            /
/                   with Type=7 (DCCP-Reset)                    /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/          Acknowledgement Number Subheader (8 bytes)           /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Reset Code   |    Data 1     |    Data 2     |    Data 3     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/                      Options and Padding                      /
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
/              Application Data Area (Error Text)               /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Reset Code: 8 битов
  • Указывает причину, по которой отправитель пакета разрывает соединение DCCP.
  • Data 1, Data 2, Data 3: по 8 битов каждое
  • Поля Data обеспечивают дополнительные данные о причине разрыва соединения DCCP. Трактовка этих полей определяется значением Reset Code.
  • Область данных приложения: Error Text
  • При наличии поля Error Text оно содержит понятное для человека текстовое сообщение в кодировке Unicode UTF-8 (предпочтительно на английском языке) с более детальным описанием причины разрыва соединения. Например, пакет DCCP Reset с Reset Code = 11 (Aggression Penalty) может содержать поле Error Text вида "Aggression Penalty: Received 3 bad ECN Nonce Echoes, assuming misbehavior".

Определенные в настоящее время значения Reset Code перечислены ниже. Если явно не указано иное, поля Data 1, 2 и 3 должны устанавливаться отправителем в 0, а получатель должен игнорировать эти поля в пакетах DCCP-Reset. Коды сопровождаются описаниями конкретных ситуаций, которые будут вызывать передачу каждого значения Reset Code, однако описание таких ситуаций не является исчерпывающим.

  • 0, "Unspecified" — причина не указана
  • Показывает отсутствие трактовки Reset Code. Использование Reset Code = 0 не рекомендуется — отправителю следует выбирать код, показывающий причину разрыва соединения.
  • 1, "Closed" — закрытия соединения
  • Нормальное завершение работы соединения (см. параграф 8.3).
  • 2, "Aborted" — прерывание соединения
  • Передающая конечная точка отказывается от соединения по причине того, что в нем ничего не происходит (см. параграфы 8.1.1 и 8.1.5).
  • 3, "No Connection" — нет соединения
  • Соединения не существует (см. параграф 8.3.1).
  • 4, "Packet Error" — ошибочный пакет
  • Получен корректный пакет неожиданного типа. Например, пакет DCCP-Data с корректной контрольной суммой в заголовке и порядковым номером был получен соединением, находящимся в состоянии REQUEST (см. параграф 8.3.1). Поле Data 1 содержит тип пакета-нарушителя (т. е., при получении ошибочного пакета типа 2 поле Data 1 будет иметь значение 2).
  • 5, "Option Error" — ошибка в опциях
  • Опция была ошибочной и эта ошибка достаточно серьезна для того, чтобы пришлось сбрасывать соединение (см. параграфы 6.6.7, 6.6.8 и 11.4). Поле Data 1 содержит тип ошибочной опции, а Data 2 и Data 3 — два первых байта поля опции (или 0, если опция использовала менее 2 байтов данных).
  • 6, "Mandatory Error" — ошибка в Mandatory
  • Передающая сторона не может обработать опцию O, которой непосредственно предшествовала опция Mandatory. Поля Data показывают тип и данные опции O с использованием такого же формата, как для Reset Code 5, "Option Error" (см. параграф 5.8.2).
  • 7, "Connection Refused" — соединение отвергнуто
  • Значение Destination Port не соответствует порту, открытому для прослушивания. Этот код передается только в пакетах DCCP-Request (см. параграф 8.1.3).
  • 8, "Bad Service Code" — некорректный код сервиса
  • Значение Service Code не совпадает с кодом сервиса, который связан в Destination Port. Этот код передается только в пакетах DCCP-Request (см. параграф 8.1.3).
  • 9, "Too Busy" — сервер занят
  • Сервер слишком занят для того, чтобы принимать новые соединения. Этот код передается только в пакетах DCCP-Request (см. параграф 8.1.3).
  • 10, "Bad Init Cookie" — некорректное значение Init Cookie
  • Клиент не вернул значение Init Cookie или указал некорректное значение (см. параграф 8.1.4).
  • 11, "Aggression Penalty" — наказание за агрессию
  • Конечная точка определила некорректность поведения другой стороны в плане контроля насыщения (см. параграф 12.3).
  • 12-127, зарезервированы
  • Резервные значения следует трактовать как Reset Code 0, "Unspecified".
  • 128-255, Связанные с CCID коды
  • Семантика этих кодов зависит от используемого в соединении CCID (см. параграф 10.3). Получателю следует трактовать неизвестные коды этого диапазона как Reset Code 0, "Unspecified".

Сводка определенных в настоящее время кодов приведена в таблице 2:

Код сбросаИмяДанные 1Данные 2 и 3
0Unspecified00
1Closed00
2Aborted00
3No Connection00
4Packet ErrorТип пакета0
5Option ErrorНомер опцииДанные опции
6Mandatory ErrorНомер опцииДанные опции
7Connection Refused00
8Bad Service Code00
9Too Busy00
10Bad Init Cookie00
11Aggression Penalty00
12-127Резерв00
128-25Коды, связанные с CCID00
 
Таблица 2: Коды DCCP Reset

Опции в пакетах DCCP-Reset обрабатываются до разрыва соединения. Это означает, что некоторые комбинации опций (в частности, включающие опцию Mandatory) могут заставлять конечную точку отвечать на корректный пакет DCCP-Reset другим пакетом DCCP-Reset. Это может вести к всплеску передачи таких пакетов (reset storm); поскольку после сброса первой конечной точкой соединения второй пакет DCCP-Reset будет игнорироваться.

2007 - 2017 © Русские переводы RFC, IETF, ISOC.