Надежная передача данных по каналу, допускающему искажение битов и потерю пакетов

Теперь предположим, что нам необходимо обеспечить передачу данных по каналу, в котором возможны не только искажения, но и потери пакетов (такая ситуация вполне типична для современных компьютерных сетей, включая Интернет). При разработке протокола нам придется решить две дополнительные задачи: найти способ определения факта потери пакета и указать действия, предпринимаемые в этом случае. Последняя задача решается с помощью контрольных сумм, порядковых номеров, квитанций и повторных посылок — механизмов, реализованных ранее в протоколе rdt 2.2. Для решения первой задачи нам потребуется применение новых механизмов.

Существует множество подходов к решению проблемы потери пакетов (некоторые из которых будут рассмотрены как дополнительные в упражнениях, приведенных в конце главы). Сейчас нас будут интересовать определение факта потери пакетов, а также методы доставки потерянных пакетов принимающей стороне. Предположим, что при передаче пакета происходит потеря либо самого пакета, либо квитанции, сгенерированной для этого пакета принимающей стороной. В обоих случаях квитанция не будет получена передающей стороной. Передающая сторона может продолжать ожидание в течение какого-либо промежутка времени, по окончании которого посчитает пакет потерянным и выполнит его повторную передачу.

312.png

313.png

Возникает вопрос о том, насколько долгим должно быть ожидание. Очевидно, что время ожидания складывается из времени оборота между передающей и принимающей сторонами (возможно, включая промежуточную буферизацию в маршрутизаторах) и времени обработки пакета принимающей стороной. В большинстве компьютерных сетей оценка максимума времени ожидания, особенно с высокой точностью, весьма трудоемка. Кроме того, желательно разрешить проблему передачи потерянного пакета за короткое время, а ожидание в течение максимального времени получения квитанции оказывается слишком долгим. На практике интервал ожидания делают более коротким, выбирая его из предположения, что вероятность потери пакета весьма велика (хотя и не абсолютна). По истечении этого интервала происходит повторная передача пакета. Поскольку существует ненулевая вероятность получения квитанции для пакета после его повторной передачи, становится возможным дублирование пакетов. Эта проблема уже решена нами в протоколе rdt 2.2 с помощью порядковых номеров.

Приведенный механизм является панацеей для передающей стороны: ей не нужно знать о том, потерян ли пакет, потеряна ли его квитанция или ничего не потеряно, но квитанция пришла с задержкой. Во всех трех случаях производится одно и то же действие: повторная передача пакета. Для контролирования времени в данном механизме используется таймер отсчета, который позволяет определить окончание интервала ожидания. Передающей стороне необходимо запускать таймер каждый раз при передаче пакета (как при первой, так и при повторной), обрабатывать прерывания от таймера и останавливать его.

Вероятность потерь пакетов и квитанций, а также дублирования пакетов усложняет процесс обработки квитанций передающей стороной. Например, необходимо выяснять, относится получаемая квитанция к последнему пакету или к одному из ранее переданных. Для решения этой проблемы в квитанцию включается специальное поле квитанции. При генерации квитанции приемная сторона записывает в поле квитанции порядковый номер соответствующего пакета. Таким образом, передающая сторона может определить, к какому пакету относится принятая квитанция.

На рис. 3.14 приведена схема конечных автоматов протокола rdt 3.0, осуществляющего надежную передачу данных по каналу, допускающему искажение и потерю пакетов, а на рис. 3.15 — схема функционирования протокола для четырех возможных случаев: передача происходит без потерь и задержек; происходит потеря пакета; происходит потеря квитанции для пакета; истекает интервал ожидания квитанции. Для каждого случая время показано пунктирной стрелкой, направленной сверху вниз. Обратите внимание на то, что момент получения пакета принимающей стороной наступает позже момента передачи пакета передающей стороной из-за задержек в распространении сигнала в сети. На рис. 3.15, б, в и г квадратные скобки обозначают моменты запуска и переполнения таймера. Поскольку порядковые номера пакетов представляют собой меняющиеся значения 0 и 1, протокол rdt 3.0 называется протоколом с чередованием битов.

Итак, мы ознакомились с ключевыми понятиями протоколов надежной передачи данных: контрольными суммами, порядковыми номерами пакетов, таймерами и положительными и отрицательными квитанциями. Созданный нами протокол оказывается вполне работоспособным!

314.png

Данная статья "Надежная передача данных по каналу, допускающему искажение битов и потерю пакетов" размещена на сайте Компьютерные сети и многоуровневая архитектура интернета (conlex.kz) в ознакомительных целях.

Уточнения, корректировки и обсуждения статьи "Надежная передача данных по каналу, допускающему искажение битов и потерю пакетов" - под данным текстом, в комментариях.

Ответственность, за все изменения, внесённые в систему по советам данной статьи, Вы берёте на себя.

Копирование статьи "Надежная передача данных по каналу, допускающему искажение битов и потерю пакетов", без указания ссылки на сайт первоисточника Компьютерные сети и многоуровневая архитектура интернета (conlex.kz), строго запрещено.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *