Протокол передачи команд и сообщений об ошибках (ICMP). Протоколы DCCP и TFRC
Инициация и разрыв соединения
Любое соединение DCCP предполагает формирование DCCP сокетов в пассивном состоянии прослушивания. Активной стороной считается клиент, а роль пассивной стороны выполняет сервер.
Характеристики
DCCP имеет встроенный механизм согласования параметров соединения, такой, как активные CCID для обоих полусоединений (см. рис. 3.12). Опции Change, Prefer и Confirm служат для согласования параметров. Change посылается с целью изменения определенного параметра. Адресат может откликнуться, послав Prefer, где попросит партнера заменить значение параметра, или может изменить значение параметра и послать подтверждение Confirm. Надежность установления параметров обеспечивается повторной передачей, если это потребуется.
Пакеты DCCP
Протокол DCCP использует девять различных типов пакетов: DCCP-Request, DCCP-Response, DCCP-Data, DCCP-Ack, DCCP-DataAck, DCCP-CloseReq, DCCP-Close, DCCP-Reset, и DCCP-Move. Длина пакета DCCP варьируется в пределах от 12 до 1020 байт. Алгоритм формирования и разрыва DCCP соединения подразумевает следующие обмены.
Посылается клиентом для инициализации соединения (первый шаг трехходовой процедуры).
Посылается сервером в ответ на запрос DCCPRequest (второй этап трехшаговой процедуры инициации соединения).
Используется для передачи прикладных данных.
Используется для передачи только подтверждений.
Используется для передачи прикладных данных в сочетании с подтверждениями.
Посылается сервером для предложения клиенту закрыть соединение.
Используется клиентом или сервером для закрытия соединения; также для запуска процедуры сброса (DCCPReset).
Используется для закрытия соединения, обычным или необычным образом.
Используется для ресинхронизации номеров пакетов после длительного периода потерь.
Процедура взаимодействия партнеров включает в себя следующие обмены.
- Клиент посылает серверу пакет DCCP-Request, специфицируя номера портов клиента и сервера, запрашиваемый сервис, и любые параметры, подлежащие согласованию, включая CCID, который должен использовать сервер при работе с клиентом. Клиент может опционно подключать к пакету DCCP-Request некоторые данные.
- Сервер посылает клиенту пакет-отклик, уведомляя его о своем желании осуществить обмен данными. В отклике указываются любые особенности и опции, которые предлагает сервер. Опционно отклик может содержать Init Cookie.
- Клиент посылает серверу пакет DCCP-Ack, который подтверждает получение пакета DCCP-отклика.
- Далее следуют обмен нулем или более подтверждениями DCCP-Ack, если требуется завершить согласование используемых параметров.
- Сервер и клиент обмениваются пакетами DCCP-Data, DCCP-Ack. Если у клиента нет данных, тогда сервер посылает пакеты DCCP-Data и DCCP-DataAck, в то время как клиент будет посылать только DCCP-Acks.
- Сервер посылает пакет DCCP-CloseReq, запрашивая закрытие соединения.
- Клиент посылает пакет DCCP-Close, подтверждая закрытие.
- Сервер посылает пакет DCCP-Reset, в котором поле причина содержит "Closed", при этом состояние соединения ликвидируется.
- Клиент получает пакет DCCP-Reset и сохраняет свое состояние в течение некоторого времени для завершения происходящих обменов.