RUDP

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

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

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

На відміну від UDP, RDP і RUDP підтримують наступні функції:

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

1. Взаємодія RDP з протоколами інших рівнів

Місце RDP в ієрархії протоколів:

Rdp hierarchy.gif

Обмін даними між рівнями:

Rdp data.gif

RDP забезпечує прикладний рівень надійною службою передачі повідомлень. Інтерфейс протоколу перетворить дані користувача в повідомлення. Повідомлення, в свою чергу, в ході обміну даними між RDP і IP перетворюються в сегменти даних і далі в дейтаграми.


2. Формати заголовків RDP і RUDP

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

RDPv1 RDPv2
Rdpv1.gif Rdpv2.gif
  • Біти 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.

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

Rudp head.gif

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


Більш докладно про сегментах SYN, ACK, EAK, RST, NUL, їх структурі та параметрах можна почитати в RFC 908 (Англ.) .


3. Життєвий цикл RDP-з'єднання

Rdp life.gif

Спочатку з'єднання перебуває в стані CLOSED, тобто не існує. Вихід з цього стану здійснюється за запитом на відкриття з'єднання. Запит може бути активним або пасивним. Після запиту на відкриття та успішного обміну сегментами SYN і ACK між вузлами з'єднання переходить в стан OPEN. У цьому стані здійснюється пересилання користувача даних. Вихід з неї відбувається при отриманні запиту на закриття з'єднання або сегмента RST. При отриманні сегмента RST з'єднання після деякої затримки закривається. При отриманні запиту на закриття вузол відправляє сегмент RST, і тільки після цього відбуваються затримка і закриття з'єднання.