Перейти к содержанию
    

XModem и потеря пакетов

Доброго всем дня.

Есть 2 программы (сервер на Дельфи, клиент на Турбо-Паскале в промышленном контроллере), обменивающиеся файлами по протоколу XModem. В качестве транспорта используется UDP. Во время передачи иногда происходит вот что.

Клиент отправляет пакет с номером N (значение номера сейчас не важно).

Сервер принимает пакет с номером N и отправляет ответ: пакет принят. При этом XModem в ответе не указывает номер пакета, а просто отправляет флаг: принят / не принят.

Клиент отправляет пакет с номером N+1. ПАКЕТ ПО ПУТИ ТЕРЯЕТСЯ и, т.к. UDP не гарантирует доставку, клиент и сервер о потере не знают.

Сервер ждет поступления данных 10 секунд, как предписывает ему XModem. Не дождавшись, он считает, что ответ не дошел до клиента и, опять же по правилам XModem, повторно отправляет ответ: пакет принят.

Клиент принимает ответ, но считает, что он пришел к пакету N+1. После чего отправляет пакет N+2.

Сервер принимает пакет N+2 и определяет, что пришел пакет не с тем номером (он-то ждет N+1). И отправляет ответ: ошибка.

Клиент принимает ответ и по правилам XModem повторно отправляет пакет N+2.

Сервер принимает пакет, опять обнаруживает несовпадение номеров и опять говорит: ошибка.

Так повторяется 10 раз, после чего связь прерывается из-за превышения количества попыток передачи. Файл не передан.

Вопрос: можно ли побороть это явление, не прибегая к программированию протоколов, гарантирующих доставку (TCP-FTP)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...