RUDP

Поделись знанием:
Перейти к: навигация, поиск

Протокол RDP (англ. Reliable Data Protocol) разработан для обеспечения надежной передачи данных между пакетно-ориентированными приложениями. Изначально он был разработан для приложений, реализующих удаленную загрузку данных и удаленное устранение неполадок, однако его можно использовать и в других приложениях, требующих надежной передачи сообщений. Существуют две версии RDP, описанные в спецификациях RFC 908 и RFC 1151 соответственно.

Протокол RUDP (англ.  Reliable User Datagram Protocol), основанный на протоколе RDP, разработан для передачи телефонных сигналов через IP-сети. Этот протокол не стандартизирован, он не имеет официальной спецификации.

Протоколы RDP и RUDP используются в тех случаях, когда нельзя использовать UDP из-за его ненадежности, а использование TCP влечет за собой слишком высокую сложность процесса передачи данных.

В отличие от UDP, RDP и RUDP поддерживают следующие функции:

  • подтверждение доставки пакетов
  • повторная отправка потерянных пакетов
  • управление потоками передачи данных




Взаимодействие RDP с протоколами других уровней

Место RDP в иерархии протоколов:

Обмен данными между уровнями:

RDP обеспечивает прикладной уровень надежной службой передачи сообщений. Интерфейс протокола преобразует данные пользователя в сообщения. Сообщения, в свою очередь, в ходе обмена данными между RDP и IP преобразуются в сегменты данных и далее в дейтаграммы.

Форматы заголовков RDP и RUDP

Формат заголовка RDP

RDPv1 RDPv2
  • Биты 0-4 - флаговые
  • Они определяют, является ли сегмент сегментом соответствующего типа.
  • Сегмент SYN используется для установления и синхронизации соединения.
  • Сегмент ACK - для подтверждения получения сегмента, входящего в последовательность.
  • Сегмент EACK - для передачи номеров сегментов с правильной контрольной суммой, но полученных вне последовательности.
  • Сегмент RST - для перезагрузки или закрытия соединения.
  • Сегмент NUL - для проверки активности получателя.
  • Бит после NUL всегда имеет значение 0.
  • Биты V - версия протокола.
  • Поле Header Length - длина заголовка.
  • Поле Source Ports служит для идентификации процесса, инициировавшего соединение.
  • Поле Destination Ports - для идентификации второго процесса.
  • Комбинации этих полей позволяют RDP устанавливать несколько соединений между двумя узлами сети.
  • Поле Data Length - длина пересылаемого сегмента без учёта заголовков протоколов, т. е. длина пользовательских данных в пересылаемом сегменте.
  • Поле Sequence Number - порядковый номер сегмента.
  • Поле Acknowledgement Number - содержит порядковый номер последнего сегмента, полученного отправителем текущего сегмента.
  • Поле Checksum - контрольная сумма.
  • Variable Header Area используется для передачи параметров сегментов SYN и EACK.

Формат заголовка RUDP

  • Биты 0-6 - флаговые
  • Назначение флагов SYN, ACK, EAK, RST, NUL - аналогично соответствующим флагам в заголовке RDP
  • CHK - определяет, содержится в поле Checksum контрольная сумма только заголовка, или заголовка и данных.
  • TCS - определяет, является ли сегмент сегментом TCS, используемым для передачи сведений о состоянии соединения.
  • Бит после TCS всегда равен 0.
  • Поле Header Length - длина заголовка.
  • Поле Sequence Number - номер сообщения.
  • Поле Checksum - контрольная сумма.

Более подробно о сегментах SYN, ACK, EAK, RST, NUL, их структуре и параметрах можно почитать в [tools.ietf.org/html/rfc908 RFC 908]  (англ.).

Жизненный цикл RDP-соединения

Изначально соединение пребывает в состоянии CLOSED, т. е. не существует. Выход из этого состояния осуществляется по запросу на открытие соединения. Запрос может быть активным либо пассивным. После запроса на открытие и успешного обмена сегментами SYN и ACK между узлами соединение переходит в состояние OPEN. В этом состоянии осуществляется пересылка пользовательских данных. Выход из него происходит при получении запроса на закрытие соединения или сегмента RST. При получении сегмента RST соединение после некоторой задержки закрывается. При получении запроса на закрытие узел отправляет сегмент RST, и только после этого происходят задержка и закрытие соединения.

См. также

Напишите отзыв о статье "RUDP"

Ссылки

  • [tools.ietf.org/html/rfc908 RFC 908 (первая версия протокола)]  (англ.)
  • [tools.ietf.org/html/rfc1151 RFC 1151 (вторая версия протокола)]  (англ.)
  • [tools.ietf.org/html/draft-ietf-sigtran-reliable-udp-00 черновик спецификации RUDP]  (англ.)

Отрывок, характеризующий RUDP

В переднем ряду заколыхались крупы лошадей. Грачик потянул поводья и сам тронулся.
Справа Ростов видел первые ряды своих гусар, а еще дальше впереди виднелась ему темная полоса, которую он не мог рассмотреть, но считал неприятелем. Выстрелы были слышны, но в отдалении.
– Прибавь рыси! – послышалась команда, и Ростов чувствовал, как поддает задом, перебивая в галоп, его Грачик.
Он вперед угадывал его движения, и ему становилось все веселее и веселее. Он заметил одинокое дерево впереди. Это дерево сначала было впереди, на середине той черты, которая казалась столь страшною. А вот и перешли эту черту, и не только ничего страшного не было, но всё веселее и оживленнее становилось. «Ох, как я рубану его», думал Ростов, сжимая в руке ефес сабли.
– О о о а а а!! – загудели голоса. «Ну, попадись теперь кто бы ни был», думал Ростов, вдавливая шпоры Грачику, и, перегоняя других, выпустил его во весь карьер. Впереди уже виден был неприятель. Вдруг, как широким веником, стегнуло что то по эскадрону. Ростов поднял саблю, готовясь рубить, но в это время впереди скакавший солдат Никитенко отделился от него, и Ростов почувствовал, как во сне, что продолжает нестись с неестественною быстротой вперед и вместе с тем остается на месте. Сзади знакомый гусар Бандарчук наскакал на него и сердито посмотрел. Лошадь Бандарчука шарахнулась, и он обскакал мимо.
«Что же это? я не подвигаюсь? – Я упал, я убит…» в одно мгновение спросил и ответил Ростов. Он был уже один посреди поля. Вместо двигавшихся лошадей и гусарских спин он видел вокруг себя неподвижную землю и жнивье. Теплая кровь была под ним. «Нет, я ранен, и лошадь убита». Грачик поднялся было на передние ноги, но упал, придавив седоку ногу. Из головы лошади текла кровь. Лошадь билась и не могла встать. Ростов хотел подняться и упал тоже: ташка зацепилась за седло. Где были наши, где были французы – он не знал. Никого не было кругом.
Высвободив ногу, он поднялся. «Где, с какой стороны была теперь та черта, которая так резко отделяла два войска?» – он спрашивал себя и не мог ответить. «Уже не дурное ли что нибудь случилось со мной? Бывают ли такие случаи, и что надо делать в таких случаях?» – спросил он сам себя вставая; и в это время почувствовал, что что то лишнее висит на его левой онемевшей руке. Кисть ее была, как чужая. Он оглядывал руку, тщетно отыскивая на ней кровь. «Ну, вот и люди, – подумал он радостно, увидав несколько человек, бежавших к нему. – Они мне помогут!» Впереди этих людей бежал один в странном кивере и в синей шинели, черный, загорелый, с горбатым носом. Еще два и еще много бежало сзади. Один из них проговорил что то странное, нерусское. Между задними такими же людьми, в таких же киверах, стоял один русский гусар. Его держали за руки; позади его держали его лошадь.
«Верно, наш пленный… Да. Неужели и меня возьмут? Что это за люди?» всё думал Ростов, не веря своим глазам. «Неужели французы?» Он смотрел на приближавшихся французов, и, несмотря на то, что за секунду скакал только затем, чтобы настигнуть этих французов и изрубить их, близость их казалась ему теперь так ужасна, что он не верил своим глазам. «Кто они? Зачем они бегут? Неужели ко мне? Неужели ко мне они бегут? И зачем? Убить меня? Меня, кого так любят все?» – Ему вспомнилась любовь к нему его матери, семьи, друзей, и намерение неприятелей убить его показалось невозможно. «А может, – и убить!» Он более десяти секунд стоял, не двигаясь с места и не понимая своего положения. Передний француз с горбатым носом подбежал так близко, что уже видно было выражение его лица. И разгоряченная чуждая физиономия этого человека, который со штыком на перевес, сдерживая дыханье, легко подбегал к нему, испугала Ростова. Он схватил пистолет и, вместо того чтобы стрелять из него, бросил им в француза и побежал к кустам что было силы. Не с тем чувством сомнения и борьбы, с каким он ходил на Энский мост, бежал он, а с чувством зайца, убегающего от собак. Одно нераздельное чувство страха за свою молодую, счастливую жизнь владело всем его существом. Быстро перепрыгивая через межи, с тою стремительностью, с которою он бегал, играя в горелки, он летел по полю, изредка оборачивая свое бледное, доброе, молодое лицо, и холод ужаса пробегал по его спине. «Нет, лучше не смотреть», подумал он, но, подбежав к кустам, оглянулся еще раз. Французы отстали, и даже в ту минуту как он оглянулся, передний только что переменил рысь на шаг и, обернувшись, что то сильно кричал заднему товарищу. Ростов остановился. «Что нибудь не так, – подумал он, – не может быть, чтоб они хотели убить меня». А между тем левая рука его была так тяжела, как будто двухпудовая гиря была привешана к ней. Он не мог бежать дальше. Француз остановился тоже и прицелился. Ростов зажмурился и нагнулся. Одна, другая пуля пролетела, жужжа, мимо него. Он собрал последние силы, взял левую руку в правую и побежал до кустов. В кустах были русские стрелки.