Последовательный и подтвержденный номер

В рамках установленного соединения в протоколе TCP правильность передачи каждого сегмента должна подтверждаться квитанцией от получателя. Квитиро­вание — это один из традиционных методов обеспечения надежной связи. В про­токоле TCP используется частный случай квитирования — алгоритм скользяще­го окна.

Алгоритм скользящего окна в протоколе TCP имеет особенность. Хотя единицей переда-. ваемых данных является сегмент, окно определено на множестве нумерованных бейтов неструктурированного потока данных, поступающих с верхнегру^овня и буферизуемых про­токолом TCP, '' '' *' •• '

При установлении соединения обе стороны договариваются о начальном номере байта, с которого будет вестись отсчет в течение всего данного соединения. У каж­дой стороны свой начальный номер. Идентификатором каждого сегмента является номер его первого байта. Нумерация байтов в пределах сегмента осуществляется так, что первый байт данных сразу вслед за заголовком имеет наименьший но­мер, а следующие за ним байты имеют следующие порядковые номера (рис. 19.8).

ТСР-сегмент

                                              Заголовок TCP

Байт Байт

с конечным с начальным

номером номером

Рис. 19.8. Нумерация байтов в ТСР-сегменте


Когда отправитель посылает TCP-сегмент, он в качестве идентификатора сег­мента помещает в поле последовательного номера номер первого байта данного сегмента. Так, на рис. 19.9 идентификаторами сегментов являются номера 32600, 34060, 35520 и т. д. На основании этих номеров TCP-получатель не только от­личает данный сегмент от других, но и позиционирует полученный фрагмент относительно общего потока байтов. Кроме того, он может сделать вывод, что полученный сегмент является дубликатом или что между двумя полученными сегментами пропущены данные и т. д.

38440 38980 36520 34060 32600

      V14Ш I Л» 146&/ I 1460
 

Направление передачи сегментов Рис. 19.9. Порядковый номер и номер квитанции

В качестве квитанции получатель сегмента отсылает ответное сообщение (сег­мент), в которое помещает число (подтверждающий номер), на единицу превы­шающее максимальный номер байта в полученном сегменте. Для сегментов, изо­браженных на рис. 19.9, квитанцией о получении (подтвержденным номером) служат номера последнего байта каждого сегмента +1. Так для первого отправ­ленного сегмента это будет число 34060, для второго — 35520 и т. д. Подтвер­ждающий номер часто интерпретируют как номер следующего ожидаемого бай­та данных. Квитанция (подтверждение) в протоколе TCP посылается только в случае правильного приема данных, отрицательные квитанции не посылаются. Таким образом, отсутствие квитанции означает либо потерю сегмента, либо при­ем искаженного сегмента, либо потерю квитанции.

В протоколе TCP в одном и том же сегменте могут быть помещены и данные, ко­торые посылает приложение другой стороне, и квитанция, которой модуль TCP подтверждает получение данных.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: