Home

Page 36
Page 36
background image

Checksum

Urgent Pointer

Data Offset

Window

Reserved

URG

ACK

PSH

RST

SYN

FIN

Source Port

Destination Port

  Sequence Number   

Acknowledgment Number

 

Данное  поле  сейчас  мы  обсуждать  пока  не  будем,  скажем  лишь,  что  это  поле  используют 

вместе с флагом URG, который мы пока тоже не рассматривали.  

После  стационарной  части  заголовка  могут  следовать  опции,  очевидно,  что  длина  опций 

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

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

когда в процессе изучения тех или иных функций TCP нам понадобится рассмотреть ту или иную 
опцию,  Вы  уже  были  знакомы  с  форматом  поля  опции.  Поэтому  сегодня  мы  рассмотрим,  каким 
образом формируется поле опций и рассмотрим простейшие опции выравнивания, такие как EOOL 
и NOOP. 

Начинаем с того, как формируется поле опций заголовка TCP. Как уже было сказано ранее, 

поле опций может присутствовать в заголовке TCP но может и отсутствовать. Длина данного поля 
не может превысить 40 байт, так как самое большое значение, которое принимает поле Data Offset 
составляет 15 четырехбайтовых слов, т.е. 60 байт, а стационарная часть заголовка TCP составляет 
20 байт, так же ясно, что длина TCP опций должна быть кратна 4 байтам. Отметим, что в RFC793 
описаны  лишь  три  опции,  однако  в  более  поздних RFC описан  еще  ряд  важнейших TCP опций, 
которые  будут  нами  изучены.  Формат TCP опций  полностью  идентичен  формату IP опций, TCP 
опции делятся на два вида: 

•  опции, состоящие из единственного байта типа (kind) опции 

•  опции,  состоящие  из  одного  байта  типа  опции,  одного  байта  длины  опции  (длина,  как  и  в 

случае  с  опциями IP учитывает  и  поле kind и  поле  длины)  и  собственно  тела  опции 
переменной  длины,  принимающая  сторона  вычисляет  длину  тела  опции,  вычитая  из 
значения поля «Длина опции» два байта (байт kind и байт поля длины) 
Отличие опций TCP от опций IP с точки зрения формирования заголовка состоит разве что в 

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

Как и в случае с протоколом IP опций первого вида, состоящих из единственного байта kind 

всего две и они служат целям выравнивания точно так же, как это реализовано в протоколе IP.  

Опция  с  полем kind = 00 называется  Конец  Поля  Опций (End of Option List) и 

устанавливается после последней опции и только в том случае, если опции без применения данной 
опции  не  закончились  на  четырехбайтовой  границе.  В  том  случае,  если  использование  данной 
опции  приводит  к  выравниванию  поля  опций  по  четырехбайтовой  границе,  после  данной  опции 
следуют данные протокола TCP, если же при использовании данной опции выравнивание снова не 
достигнуто, то после этой опции используется необходимое количество байтов заполнителя (1 либо 
2) для достижения выравнивания поля опций по четырехбайтовой границе, в качестве заполнителя 
используется  байт 00. Еще  раз  подчеркнем,  что  при  отсутствии  необходимости  использования 
опций  в  заголовке TCP никакая  опция,  в  том  числе  и  опция EOOL не  используется,  после Data 
Offset  принимает  значение 5 и  сразу  после  поля Urgent Pointer передаются  полезные  данные 
заголовка TCP (если они есть). 


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

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