Функционирование протокола ТСР.

В этом разделе будут рассмотрены структура сегмента ТСР, механизмы установления соединения, передачи данных и ликвидации соединения. Формат ТСР сегмента представлен на слайде. Его заголовок содержит 20-байтную фиксированную часть и опциональную часть переменной длины.

 

«Порт источника»и«Порт назначения» -определяют передающее и приемное приложения, соответственно.

«Порядковый номер сегмента» -определяет позицию первого байта данных сегмента в байтовом потоке источника при значении флага SYN=0 (в режиме передачи данных). Напомним, что ТСР нумерует байты, а не сегменты и если порядковый номер текущего сегмента равен 567, а поле данных содержит 12 байт, то следующий сегмент будет иметь порядковый номер 579. В режиме установления соединения, когда флаг SYN установлен в 1, в этом поле содержится начальный номер последовательности номеров байтов данного потока (ISN – initial sequence number); значение номера первого байта данных этого потока будет ISN+1. Отметим также, что соединения ТСР являются дуплексными и в каждом из направлений передачи устанавливается своя нумерация.

«Порядковый номер подтверждения» -это поле в режиме с установленным флагом ACK (режим передачи данных) содержит порядковый номер байта данных, который передающий модуль ожидает получить от приемного узла; тем самым подтверждается правильность приема всех предыдущих байтов. В режиме установления соединения (ACK=0) значение этого поля не учитывается.

«Смещение данных» -поле определяет длину заголовка сегмента в 32-битных словах; эта информация позволяет приемному модулю определить начало поля данных, т.к. заголовок может содержать опциональное поле переменной длины.

«Резерв» -поле в настоящее время не используется и заполняется нулями.

«Контрольные биты» -поле длиной 6 бит, каждый из которых является флагом; их последовательность и смысл следующие:

URG – флаг срочности передачи сегмента

ACK – флаг указывающий на достоверность значений в поле «Порядковый номер подтверждения»

PSH – включена функция «проталкивания» сегмента, т.е. модуль ТСР должен передать сегмент приложению немедленно

RST – указание приемному модулю разорвать соединение по причине каких-то аномалий; используется для перезагрузки соединения

SYN – флаг установления соединения, синхронизации порядковых номеров сегментов

FIN – флаг, индицирующий, что у передающего модуля нет данных для передачи; передающее приложение остается в соединении с приемным и принимает данные последнего.

«Размер окна» -поле опрделяет количество байтов, которое модуль TCP может принять (Wa).

«Контрольная сумма» - значение этого поля рассчитывается по всему сегменту с дополнением его нулями до размера кратного 16 битам и 96 битным псевдозаголовком, включаемым перед заголовком TCP и содержащим сетевые адреса отправителя и получателя, тип протокола и длину ТCP сегмента. Эти дополнения используются только для расчета контрольной суммы и не передаются.

«Указатель срочности» - значение этого поля при установленном флаге URG, будучи добавленным к значению поля «Порядковый номер сегмента»,определяетпоследний байт срочных данных. Покольку приемный модуль ТСР передает приложению байты строго по порядку, то все байты, содержащиеся в приемном буфере, вплоть до байта с определенным, как указано выше номером, будут рассматриваться как срочные.

«Опции» - поле используется для определения других, не предусмотренных заголовком, функций. Так например, это поле часто используется для определения максимального размера сегмента (maximum segment size - MSS). При использовании протокола в высокоскоростных сетях это поле используется для задания таких параметров как «Коэффициент масштабирования окна» (до 214) и «Временная метка».Последние важны в ситуации когда полный цикл нумерации байт может быть пройден за время существования соединения. Наличие временных меток в каждом сегменте позволяет также вычислить время полного оборота (RTT).

 

Теперь рассмотрим работу протокола в различных фазах жизни соединения.