Home

Page 49
Page 49
background image

что TCP – дуплексный протокол, так как безо всяких ограничений позволяет обмен данными между 
двумя участниками соединения. 

На  основании  рассмотренных  примеров  Вам  может  показаться,  что  в  ответ  на  КАЖДЫЙ 

сегмент  с  данными  необходимо  послать  сегмент  с  квитанцией,  рассмотрим  пример, 
иллюстрирующий  объединение  квитанций.  Отметим,  что  в TCP отправитель  обычно  может 
отсылать  более  одного  не  квитированного  сегмента,  т.е.  ожидание  квитанции  на  отправленный 
сегмент с данными НЕ является обязательным условием для отправки нового сегмента с данными 
(отметим, что детально об этом мы будем говорить позже).  
 

 

 
Подчеркнем, что сегмент номер 6 на данной диаграмме является объединенной квитанцией 

на сегменты 4 и 5, посланные клиентом. Использование объединенных квитанций дает уменьшение 
количества служебных пакетов в сети – как следствие уменьшение нагрузки на сеть. 

Отметим еще один важный момент. В том случае, если TCP на стороне получателя заведомо 

уверен, что потерял какой то сегмент (например, у полученного сегмента не совпала контрольная 
сумма),  он  НЕ  имеет  механизма  для  того,  чтобы  уведомить  отправителя  о  потерянном  сегменте, 
иными  словами  в TCP не  существует  понятия  отрицательной  квитанции.  Отправитель  повторит 
этот сегмент по таймауту, когда истечет время, в течение которого отправитель сегмента ожидает 
на  него  положительную  квитанцию.  Безусловно,  такой  подход  страдает  излишними  задержками 
при  повторной  передаче  сегментов – действительно,  в  случае,  если  используются  явные 
отрицательные  квитанции,  отправитель  может  быстрее  повторить  сегмент,  нежели  в  том  случае, 
если  повтор  делается  по  таймауту  на  отсутствие  положительной  квитанции.  Отметим,  что  в TCP 
существует  договоренность  об  искусственных  отрицательных  квитанциях,  но  об  этом  мы  будем 
говорить позже. Так же важно отметить, что в TCP нельзя квитировать полученные сегменты в том 
случае, если сегменты с меньшими последовательными номерами еще не получены. Действительно, 
как нам известно, заполнение поля Acknowledged Number некоторым значением говорит о том, что 
ВСЕ байты с номерами, меньшими этого значения получены успешно, таким образом в случае, если 
в  приятом  наборе  сегментов  есть  «пробел» (пропущенный  сегмент),  получатель  имеет  право 
квитировать байта вплоть до пропущенного сегмента (не включительно, разумеется), а затем ждать 
повтора пропущенного сегмента для того, чтобы затем квитировать целый блок сегментов.  

Подводим  общий  итог.  Данная  тема  рассмотрена  нами  с  целью  понять,  каким  образом 

используется нумерация передаваемых данных и квитирование в протоколе TCP, фактически нашей 
целью  было  лишь  простейшее  понимание  механизма  использования  полей Sequence Number  и 
Acknowledged Number протоколом    TCP.  Важно  понять,  что  мы  еще  не  изучили  квитирование  в 
полном  объеме,  мы  не  рассмотрели  главного – стратегий  квитирования,  вопросов  оптимизации 


Copyright © 2021 Файлообменник files.d-lan.dp.ua

Использование любых материалов сайта возможно только с разрешения автора.