В протоколе TCP реализована разновидность алгоритма квитирования с
использованием окна. Особенность этого алгоритма состоит в том, что, хотя
единицей передаваемых данных является сегмент, окно определено на множестве
нумерованных байт неструктурированного потока данных, поступающих с верхнего
уровня и буферизуемых протоколом TCP.
Квитанция посылается только в случае правильного приема данных, отрицательные
квитанции не посылаются. Таким образом, отсутствие квитанции означает либо прием
искаженного сегмента, либо потерю сегмента, либо потерю квитанции.
В качестве квитанции получатель сегмента отсылает ответное сообщение
(сегмент), в которое помещает число, на единицу превышающее максимальный номер
байта в полученном сегменте. Если размер окна равен W, а последняя квитанция
содержала значение N, то отправитель может посылать новые сегменты до тех пор,
пока в очередной сегмент не попадет байт с номером N+W. Этот сегмент выходит за
рамки окна, и передачу в таком случае необходимо приостановить до прихода
следующей квитанции.
|