Home

Page 33
Page 33
background image

в  себе  каждый  сегмент.  Так  как  пакеты  в  сети  могут  еще  и  теряться,  приемная  сторона  должна 
квитировать  полученные  данные,  т.е.  отправлять    в  ответ  на  сегменты  с  данными  квитанции. 
Квитанцией может являться любой сегмент TCP (в том числе и  сам содержащий полезные данные), 
номер квитанции передается в специальном поле Acknowledgment Number заголовка TCP. В TCP не 
существует понятия отрицательных квитанций (по крайней мере – явного), таким образом, любая 
квитанция  является  положительной  и  уведомляет  партнера  о  том,  байт  с  каким  номером 
ОЖИДАЕТСЯ  получить.  Т.е.,  если  получен  сегмент TCP, поле Sequence Number которого 
принимает  значение 4010, в  котором  содержится 70 байт,  то  квитанцией  в  ответ  на  него  будет 
сегмент с поле Acknowledgment Number равным 4080 – действительно, получено 700 байт, первый 
из них имел номер 4010, последний – 4079 (а не 4080!), следовательно, ожидаемый номера байта 
как  раз  и  равен 4080. Так  же  сейчас  можно  отметить,  что  квитанции  в TCP накопительные – 
ожидание  байта  с  некоторым  номером  АВТОМАТИЧЕСКИ  является  подтверждением  получения 
ВСЕХ  байт  от  ранее  оговоренного  номера,  с  которого  стороны  начали  данное TCP соединение 
(оговаривается  в  процессе  установки  соединения)  вплоть  до  номера,  предыдущего  перед 
ожидаемым  байтом.  Следовательно,  в  том  случае  если  один  из  сегментов  потеряется,  но 
получатель  получит  сегменты,  следующие  за  потерянным  сегментом,  он  НЕ  будет  иметь  право 
квитировать  их.  Более  детально  о  механизме  квитирования  в TCP, о  некоторых  других  способах 
квитирования, о повторных передачах в случае потерь сегментов мы будем говорить позднее, пока 
же  наша  цель – обзор  заголовка TCP, мы  не  ставим  пока  целью  доскональное  изучение 
использования  полей  заголовка  во  всех  случаях.  Переходим  к  следующему  четырехбайтовому 
слову и следующему полю заголовка: 
 

Data Offset

Source Port

Destination Port

  Sequence Number   

Acknowledgment Number

 

Из названия поля следует, что поле показываем величину смещения данных, т.е. показывает, 

начиная с какого байта после начала заголовка TCP начинаются полезные данные, переносимые в 
сегменте.  Очевидно,  по  смыслу  это  поле  можно  иначе  называть  «Длина  заголовка TCP» - 
действительно, величина смещения полезных данных относительно начала заголовка и есть длина 
самого заголовка. Поле Data Offset имеет длину 4 бита, следовательно, максимальное принимаемое 
им  значение  составляет 15, а  мы  знаем,  что  минимальная  длина  заголовка TCP (без  опций) 
составляет 20 байт. Вывод: очевидно, данное поле показывает длину не в байтах, отмечаем, что как 
и  поле IHL в  заголовке IP, данное  поле  показывает  длину  заголовка,  выраженную  в 
четырехбайтовых  словах.  Очевидно,  минимальное  допустимое  значение  данного  поле – 5 (5 
четырехбайтовых  слов  даст  как  раз 20 байт  минимального  заголовка),  а,  учитывая,  что 
максимальное  значение,  принимаемой  четырехбайтовым  полем  равно 15, то  максимальная  длина 
заголовка TCP не превысит 60 байт, следовательно, как и у протокола IP, опции в заголовке TCP не 
могут  занимать  более 40 байт.  Так  же  очевидно,  что  длина  заголовка TCP должна  быть  кратна 
четырем  байтам,  что  придется  учитывать  при  рассмотрении  опций TCP. Отметим,  что  опции 
протокола TCP мы будем рассматривать ниже, пока же продолжим обзор полей заголовка TCP. 

Следующее  поле,  состоящее  из  шести  бит,  зарезервировано  и  в  настоящее  время  не 

используется, оно должно быть заполнено нулями: 

 


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

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