Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Формат заголовка




Протокол TCP — это основной транспортный протокол в стеке протоколов TCP/IP. Он обеспечивает надежную передачу потока данных, опираясь при этом на ненадежный сервис транспортировки дейтаграмм, предоставляемый протоколом IP. В сетях IP протокол TCP используется для обработки запросов на вход в сеть, разделения ресурсов (файлов и принтеров), репликации инфор­мации между контролерами доменов, передачи списков ресурсов и т. д. На про­токол TCP, в частности, возложена задача управления потоками и перегрузками. Он отвечает за согласование скорости передачи данных с техническими возмож­ностями рабочей станции-получателя и промежуточных устройств в сети.

Рассмотрим пример использования TCP в неоднородной сети. На рис. 7.2 показана схема движения информации по цепочке: отправитель, сеть Frame Relay, маршрутизатор, получатель. Маршрутизатор является связующим звеном между сетью Frame Relay и сетью Ehternet 802.2, в которой работает получатель.

Как видно из рис. 7.2, протокол TCP выполняет основную задачу по доставке информации.

 

 

С течением времени в протокол TCP постоянно добавляются расширения и появляются более современные его реализации. Этот протокол использует толь­ко один тип протокольного блока данных (PDU — Protocol Data Unit), который называется сегментом TCP. Сегмент состоит из заголовка и поля данных (полез­ной нагрузки). На рис. 7.3 показан формат заголовка сегмента TCP.

 

 

Минимальная длина составляет 20 байт. Такая большая величина обуслов­лена тем, что один и тот же заголовок используется протоколом для самых раз­личных целей. Для определения назначения большинства полей предназначены контрольные биты. Формат и значения поля «Контрольные биты» описаны в табл. 7.2.

Таблица 7.2. Формат и значения поля «Контрольные биты»

 

Бит            
Сокращение URG   АСК   PSH   RST   SYN   FIN  
Назначение Поле «Указа­тель срочности» задействовано   Поле «Номер подтверждения» задействовано   Включена функция про­талкивания   Перезагрузка данного соединения   Синхрониза­ция номеров в очереди   Данных для передачи нет  

 

Из рис. 7.3 видно, что протокол TCP использует следующие поля:

q Поле «Номер в последовательности» (Sequence Number) определяет но­мер первого байта в очереди (последовательности) байтов в текущем сег­менте. Исключение составляют случаи, когда установлен бит (флаг) синхронизации SYN. Тогда это поле обозначает начальный номер в по­следовательности (Initial Sequence Number, ISN), и первый байт данных имеет номер в очереди ISN+1.

q Поле «Номер подтверждения» (Acknowledgment Number) содержит сле­дующий номер в последовательности получаемых подтверждений, кото­рый ожидает отправитель в ответ на отосланный сегмент. Иными словами, на отосланный сегмент с данными отправитель ожидает сегмент с под­тверждением его успешного приема. В заголовке в поле «Номер в после­довательности» занесен указанный номер подтверждения. При этом должен быть установлен контрольный бит подтверждения АСК. Подтвер­ждения (или, как часто говорят, АСК) посылаются постоянно, как только соединение будет установлено.

q Поле «Смещение данных» (Data Offset) определяет количество 32-бит­ных слов в заголовке TCP. Тем самым указывается начало поля данных. Заголовок протокола TCP всегда заканчивается на 32-битной границе, даже если он содержит опции.

q Поле «Резерв» (Reserved) должно быть заполнено нулями и предназна­чено для будущего расширения протокола.

q Поле «Окно» (Window) содержит объявляемый размер окна в байтах.

q Поле «Контрольная сумма» (Checksum) рассчитывается по сегменту, при этом определяется 16-битное дополнение суммы всех 16-битных слов в заголовке и в поле данных. Если сегмент содержит нечетное количество байтов, то он будет дополнен нулями справа до образования 16-битного слова. Этот выравнивающий байт не передается с сегментом по сети, так как может быть «восстановлен» получателем. Контрольная сумма учи­тывает также 96-битный псевдозаголовок, который ставится перед заго­ловком протокола TCP. Псевдозаголовок включает следующие поля из заголовка протокола IP: IP-адреса отправителя и получателя, протокол и длину сегмента. С помощью добавления псевдозаголовка протокол TCP защищает самого себя от ошибочной доставки протоколом IP. Так, если протокол IP доставляет сегмент, не предназначенный данному работающе­му приложению, то модуль протокола TCP на принимающей стороне об­наружит некорректность доставки.

q Поле «Указатель срочности» (Urgent Pointer) сообщает текущее значе­ние указателя срочности. Эта положительная величина определяет сме­щение относительно номера в очереди данного сегмента. Этот указатель сообщает номер байта, следующего за срочными данными, то есть, начи­ная с этого байта, данные имеют обычный статус срочности. Поле исполь­зуется совместно с контрольным битом URG.

q Поле «Опции» (Options) имеет переменную длину и может вообще от­сутствовать. Опции располагаются в конце заголовка протокола TCP и их длина кратна 8 битам. Протокол TCP должен быть готов обрабатывать все виды опций. Опции используются для решения вспомогательных задач, например, для выбора максимального размера сегмента.

q Поле «Выравнивание» (Padding) может иметь переменную длину и представляет собой фиктивное поле, используемое для доведения размера заголовка до целого числа 32-битных слов.

Некоторые поля в заголовке сегмента протокола TCP могут быть использо­ваны при его дальнейшем развитии. «Номер в последовательности» и «Номер подтверждения» выравниваются по числу байтов в поле данных, а не по длине всего сегмента. Например, если сегмент содержит в поле «Номер в последо­вательности» значение 1000 и несет в поле данных 600 байт данных, то поле «Номер в последовательности» указывает на номер первого байта в поле дан­ных. Следующий (в логическом порядке) сегмент будет иметь в поле «Номер в последовательности» значение 1601. Мы видим, что протокол TCP изначально логически ориентирован на работу с потоком данных. Он принимает байты от пользовательского приложения, группирует их, а затем распределяет по сегмен­там и формирует поток сегментов с нумерацией каждого байта.

Флаги PSH (Push) и URG (Urgent) реализуют две службы протокола TCP: продвижение (проталкивание) потока данных и сигнализацию о срочных дан­ных. Обычно протокол TCP передает данные, когда количество предназна­ченных для передачи байтов равно длине поля данных очередного сегмента. Приложение может потребовать, чтобы протокол передал все оставшиеся дан­ные и пометил их флагом PSH. На принимающей стороне модуль протокола TCP доставит эти данные приложению сразу (то есть данные не будут ждать своей очереди в буфере). Приложение может прибегнуть к проталкиванию, если достигнут логический конец данных. Поле «Указатель срочности» позволяет ин­формировать приложения на принимающей стороне о том, что в принимаемый ими поток помещены важные данные.

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

Данные в сегменте проходят через соединение к точке входа в модуль прото­кола TCP и сохраняются в буфере приема, который ассоциируется с этим соеди­нением. Если входящие данные помечены флагом PSH, то они вместе с данными, уже имеющимися в буфере, немедленно доставляются приложению по команде RECEIVE. Если данные не помечены флагом PSH, то протокол TCP доставляет эти данные в подходящее время. Например, протокол может ожидать накопления большего количества данных для уменьшения прерываний в сис­теме.

Документ RFC 793 определил только одну опцию — максимальный размер сегмента. Поле этой опции с размером 16 бит может быть использовано только в сегменте, который посылается при запросе на создание логического соедине­ния. Опция определяет максимальный размер сегмента в байтах, который будет использоваться будущим соединением. За время, прошедшее после публикации документа RFC 793, широкое распространение получили две другие опции: «Параметр масштабирования окна» (Window scale factor) и «Временной штамп» (Timestamp).

Обычно, поле «Окно» в заголовке протокола TCP определяет некий лимит или кредит, выданный отправителю на размещение его данных в отсылаемых сегментах и измеряемый в байтах. Когда используется опция «Параметр масш­табирования окна», количество байтов данных, размещаемых в поле «Окно» должно быть кратно 2F, где F — это параметр масштабирования окна. Макси­мальное значение F, которое может быть использовано протоколом TCP, — 14. Следует отметить, что эта опция включается только на время установления соединения. Полное описание этого метода приведено в разделе 2.2 документа RFC 1323.

В этом же документе описан алгоритм «Временной штамп». Этот алгоритм используется для соединений, работающих с окнами большого размера. Опция «Временной штамп» используется для того, чтобы проводить точное измерение времени прохождения сигнала до получателя и обратно, то есть времени обра­щения (Round Trip Time, RTT).

Такие замеры необходимы для корректировки времени повторной переда­чи при отсутствии подтверждения приема определенного сегмента. «Временной штамп» реально может быть использован в любом сегменте с данными и определя­ет два дополнительных поля: «Timestamp Value» (значение временного штампа) и «Timestamp Echo Reply» (ответ на временной штамп получен). Протокол TCP может включить поле «Timestamp Value» в любой исходящий сегмент. Когда этот сегмент подтверждается принимающей стороной, то отвечающий модуль протокола TCP включает в ответный сегмент поле «Timestamp Echo Reply» с тем же самым значением, что было в поле «Timestamp Value» в сегменте, ко­торый был подтвержден. Это позволяет протоколу TCP выполнять постоянный мониторинг времени обращения. В операционной системе Windows 2000 пре­дусмотрен режим использования алгоритма «Временной штамп» по умолчанию.

 

 




Поделиться с друзьями:


Дата добавления: 2015-07-13; Просмотров: 429; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.