Home

Page 48
Page 48
background image

 

 

Пусть клиенту необходимо передать серверу порцию полезных данных длиной Q, заполняем 

поля Sequence Number (X+1) и Acknowledged Number (Y+1). Пусть сервер получил данный сегмент, 
и  ему  необходимо  сгенерировать  квитанцию  на  порцию  данных  длиной Q байт.  Вместе  с  тем 
возможно у сервера тоже есть порция данных длиной V байт для передачи клиенту. Сервер может 
послать два сегмента: в одном будет квитанция на полученные данные, в другом – V байт данных 
для клиента, однако подчеркнем: ничто не мешает серверу послать ОДИН сегмент, с помощью поля 
Acknowledged Number квитировать  полученные  от  клиента  байты,  с  помощью  поля Sequence 
Number  указать  номер  байта  передаваемого  первым  и  передать  в  сегменте V байт  данных. 
Рассматриваем  поля  заголовка  сегмента 5: Sequence Number = Y+1, Acknowledged Number = 
X+1+Q. Клиент получает данный сегмент и делает вывод о том, что переданные им Q байт данных 
получены сервером (так как сервер ожидает от клиента байт номер X+1+Q. Но при этом клиент сам 
получил в этом сегменте V байт данных и клиент должен их квитировать. Пусть так же у клиента 
самого  есть  еще W байт  данных  для  передачи  серверу.  Следовательно,  клиент  может  в  одном 
сегменте с помощью поля Acknowledged Number = Y+1+V квитировать полученные V байт данных, 
с помощью поля Sequence Number = X+1+Q указать номер первого предаваемого в этом сегменте 
байта  и  передать  в  данном  сегменте  еще W байт  данных.  Сервер  в  свою  очередь  должен 
квитировать эти W байт с помощью Acknowledged Number = X+1+Q+W, но при этом сервер может 
передать в том же сегменте и свои R байт данных и т.д.  

Главный вывод: TCP позволяет объединять в одном сегменте квитанцию и полезные данные, 

так как квитирование и передача данных в протоколе TCP делаются различными полями. Говорят, 


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

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