93
полученные в непрерывной последовательности порядковых номеров. Затем генерируется
подтверждение следующего ожидаемого получателем сегмента, в поля которого заносятся
следующие значения: ack – кумулятивное подтверждение, ack-trig – номер последнего
полученного сегмента, adv_wnd – свободное пространство в очереди приема. Например, в
очереди приема находятся сегменты {i+1, i+2, i+3}, после получения i-го сегмента и его
записи в очередь, из нее удаляются сегменты i, i+1, i+2, i+3 и значение
кумулятивного
подтверждения становится равным i+4. Прототип контрольного сегмента с подтверждением
ставится на очередь к передаче.
3.2.5.3. Обработка прерывания
Метод proc_int() активного протокола вызывается из метода proc_int() содержащего
его экземпляра класса узла. Данный метод обновляет значение внутреннего счетчика
времени экземпляра объекта протокола, вычисляет текущую скорость передачи потока по
формулам (19), (19а) в состоянии SS; (24) и (25) в состоянии
REC; (27) в состоянии FT.
Вычислив значение межсегментного интервала, метод proc_int() класса протокола
ARTCP определяет, прошло ли это время с момента отправки предыдущего сегмента. Если
да, то запрашивается экземпляр очереди передачи на предмет наличия в ней готового к
отправке сегмента. Сегмент для отправки берется из очереди или создается новый (в случае
отсутствия готового сегмента в
очереди), после чего в поля ack, ack_trig, adv_wnd заносятся
значения из прототипа контрольного сегмента и сегмент передается объекту узла для
передачи. Если передача успешна, то узел, вызывая метод status(), уведомляет об этом объект
протокола, который отмечает соответствующий сегмент как отправленный и запускает ТПП
для него.
3.2.5.4. Ускоренная ретрансляция
Поддержка ускоренной ретрансляции сегментов также включена в
ПМ. Для этого
объект протокола ARTCP отслеживает поступление дублирующих подтверждений. Если
последовательно приходят два подтверждения одного и того же i-го сегмента, то ARTCP
осуществляет ретрансляцию данного сегмента вне зависимости от значения его ТПП. После
осуществления ретрансляции алгоритм переходит в состояние, в котором ускоренная
ретрансляция не разрешена и остается в этом состоянии пока
не придет хотя бы одно
подтверждение следующего: (i+1)-го сегмента.
3.2.5.5. Начальная синхронизация
Начальное значение RTT необходимо для вычисления начальной (минимальной)
скорости работы соединения, равной S байт за время RTT. Для осуществления этого