Home

Page 44
Page 44
background image

•  Сервер сообщил клиенту свой ISN (полем Sequence Number) 

Осталось только одно – клиент должен подтвердить серверу, что и он правильно понял его 

ISN,  для  этого  клиенту  придется  отправлять  еще  один  сегмент.  В  данном  сегменте  не  нужно 
устанавливать флага SYN (договоренность о соединении уже достигнута), в этом сегменте в поле 
Acknowledged Number клиент  должен  передать  серверу  увеличенный  на  единицу ISN сервера, 
подчеркивая  тем  самым,  что  клиент  ожидает  от  сервера  байта  с  соответствующим  номером,  т.е. 
подтверждая серверу, что его ISN ясен. Ясно, что в таком сегменте должен быть установлен флаг 
ACK,  подчеркивающий,  что  сегменте  интерпретируется  поле Acknowledged Number. Что  клиент 
должен  указать  в  этом  сегменте  в  поле Sequence Number? Очевидно,  что,  так  как  сервер  ждет  от 
клиента байта номер ISN (клиента) + 1, а клиент еще не передал серверу ни одного байта, то именно 
это значение (ISN (клиента) + 1) и должен указать клиент в поле Sequence Number, подчеркивая, что 
байт именно с таким номером будет первым байтом, который клиент передаст серверу.  
 

 

 

 

Еще раз подводим итог с помощью данного рисунка. В первом сегменте клиент предлагает 

установить  соединение  и  сообщает  свой ISN серверу,  во  втором  сегменте  сервер  соглашается 
установить соединение, подтверждает клиенту «понимание» его ISN и сообщает клиенту свой ISN, 
в  третьем  сегменте  клиент  подтверждает  серверу  «понимание»  его ISN. В  результате  данной 
процедуры: 

•  Клиент  знает  о  готовности  сервера  обмениваться  данными,  знает,  с  какого  номера  сервер 

начнет  нумерацию  своих  данных,  знает  о  том,  что  сервер  знает  с  какого  номера  сам  клиент 
начнет нумерацию своих данных 

•  Сервер  знает  о  готовности  клиента  обмениваться  данными,  знает,  с  какого  номера  клиент 

начнет  нумерацию  своих  данных,  знает  о  том,  что  клиент  знает  с  какого  номера  сам  сервер 
начнет нумерацию своих данных 

Таким  образом,  стороны  готовы  к  обмену  данными  в  рамках  соединения – они  знают  как 

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

Отметим,  что  мы  рассмотрели  только  самый  простой  случай  установки  соединения,  на 

самом деле существует еще один способ установки TCP соединения (одновременное открытие), в 
процессе  обмена  вышеописанными  сегментами  активно  используются  некоторые  опции,  однако 
подчеркнем,  что  мы  движемся  в  изучении TCP от  частного  к  общему – сначала  рассматриваем 
принципы, затем будем рассматривать тонкости.  

В результате рассмотрения данной темы Вы должны четко понимать: 

•  Зачем устанавливать соединение перед передачей данных 

•  Зачем используется три сегмента при установке соединение 

•  Как используются флаги SYN и ACK, как используются поля Sequence Number и Acknowledged 

Number в процессе установки соединения.  

Когда  мы  изучали  протокол UDP, мы  говорили  о  возможности  организации  селективного 

обслуживания  по IP адресу  сервера,  протокол TCP так  же  поддерживает  такую  возможность. 
Серверное приложение может начать прослушивать порт с помощью вызова специальной функции 


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

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