24432

Протокол TCP. Формат заголовка TCP

Контрольная

Информатика, кибернетика и программирование

Протокол TCP. Формат заголовка TCP. TCP Transmission Control Protocol гарантированный протокол транспортного уровня с предварительным установлением соединения предоставляющий приложению надёжный поток данных дающий уверенность в безошибочности получаемых данных перезапрашивающий данные в случае потери и устраняющий дублирование данных. Протокол TCP взаимодействует через межуровневые интерфейсы с ниже лежащим протоколом IP и с выше лежащими протоколами прикладного уровня или приложениями.

Русский

2013-08-09

135.5 KB

8 чел.

1. Протокол TCP. Формат заголовка TCP. 

TCP (Transmission Control Protocol) — «гарантированный» протокол, транспортного уровня с предварительным установлением соединения, предоставляющий приложению надёжный поток данных, дающий уверенность в безошибочности получаемых данных, перезапрашивающий данные в случае потери и устраняющий дублирование данных.

Протокол TCP взаимодействует через межуровневые интерфейсы с ниже лежащим протоколом IP и с выше лежащими протоколами прикладного уровня или приложениями.

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

Порты: Пакеты, поступающие на транспортный уровень, организуются операционной системой в виде множества очередей к точкам входа различных прикладных процессов. В терминологии TCP/IP такие системные очереди называются портами. Таким образом, адресом назначения, который используется протоколом TCP, является идентификатор (номер) порта прикладной службы. Номер порта в совокупности с номером сети и номером конечного узла однозначно определяют прикладной процесс в сети. Этот набор идентифицирующих параметров имеет название сокет (socket).

Сегменты и потоки: Единицей данных протокола TCP является сегмент. Информация, поступающая к протоколу TCP в рамках логического соединения от протоколов более высокого уровня, рассматривается протоколом TCP как неструктурированный поток байтов. Поступающие данные буферизуются средствами TCP. Для передачи на сетевой уровень из буфера «вырезается» некоторая непрерывная часть данных, которая и называется сегментом и снабжается заголовком (см. рис. 5.23). В отличие от многих других протоколов, протокол TCP подтверждает получение не пакетов, а байтов потока.

Не все сегменты, посланные через соединение, будут одного и того же размера, однако оба участника соединения должны договориться о максимальном размере сегмента, который они будут использовать. Этот размер выбирается таким образом, чтобы при упаковке сегмента в IP-пакет он помещался туда целиком, то есть максимальный размер сегмента не должен превосходить максимального размера поля данных IP-пакета.

Соединение

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

Установленные на конечных узлах протокольные модули

TCP решают задачу обеспечения надежного обмена данными путем установления между собой логических соединений. Благодаря логическому соединению TCP следит, чтобы передаваемые сегменты не были потеряны, не были продублированы и пришли к получателю в том порядке, в котором были отправлены.

При установлении логического соединения модули TCP договариваются между собой о параметрах процедуры обмена данными. В протоколе TCP каждая сторона соединения посылает противоположной стороне следующие параметры:

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

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

Логическое TCP-соединение однозначно идентифицируется парой сокетов.

Каждый сокет одновременно может участвовать в нескольких соединениях.

Скользящее окно в протоколе TCP

В рамках установленного соединения в протоколе TCP правильность передачи каждого сегмента должна подтверждаться квитанцией от получателя. В протоколе TCP используется частный случай квитирования — алгоритм скользящего окна.

Алгоритм скользящего окна в протоколе TCP имеет особенность. Хотя единицей передаваемых данных является сегмент, окно определено на множестве нумерованных байтов неструктурированного потока данных, поступающих с верхнего уровня и буферизуемых протоколом TCP.

При установлении соединения обе стороны договариваются о начальном номере байта, с которого будет вестись отсчет в течение всего данного соединения. У каждой стороны свой начальный номер. Идентификатором каждого сегмента является номер его первого байта. Нумерация байтов в пределах сегмента осуществляется так, что первый байт данных сразу вслед за заголовком имеет наименьший номер, а следующие за ним байты имеют следующие порядковые номера (рис. 19.8).

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

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

Окно приема

Протокол TCP является дуплексным, то есть в рамках одного соединения регламентируется процедура обмена данными в обе стороны. И при установлении соединения, и в ходе передачи обе стороны, выступая в роли получателя, посылают друг другу так называемые окна приема. Каждая из сторон, получив окно приема, «понимает», сколько байтов ей разрешается отправить с момента получения последней квитанции.

На рис. 19.11 показан поток байтов, поступающий с верхнего уровня в выходной буфер протокола TCP. Из потока байтов модуль TCP «нарезает» последовательность сегментов и готовит их для отправки другому сокету. В этом потоке можно указать несколько логических границ. Первая граница отделяет сегменты, которые уже были отправлены и на которые уже пришли квитанции. По другую сторону этой границы располагается окно размером W байт. Часть байтов, входящих в окно, составляют сегменты, которые также уже отправлены, но квитанции на них пока не получены. Оставшаяся часть окна — это сегменты, которые пока не отправлены, но могут быть отправлены, так как входят в пределы окна. И наконец, последняя граница указывает на начало последовательности сегментов, ни один из которых не может быть отправлен до тех пор, пока не придет очередная квитанция и окно не будет сдвинуто вправо.

Если размер окна равен W, а последняя по времени квитанция содержала значение N, то отправитель может посылать новые сегменты до тех пор, пока в очередной сегмент не попадет байт с номером N + W. Этот сегмент выходит за рамки окна, и передачу в таком случае необходимо приостановить до прихода следующей квитанции.

Управление окном приема

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

Заголовок TCP-сегмента содержит значительно больше полей, чем заголовок UDP, что отражает более развитые возможности первого протокола:

  •  Порт источника (sourc port) занимает 2 байта и идентифицирует процесс-отправитель.
  •   Порт приемника (destination port) занимает 2 байта и идентифицирует процесс-получатель.
  •  Последовательный номер (sequence number) занимает 4 байта и представляет собой номер байта, который определяет смещение сегмента относительно потока отправляемых данных (другими словами, номер первого байта данных в сегменте).
  •  Подтвержденный номер (acknowledgement number) занимает 4 байта и содержит максимальный номер байта в полученном сегменте, увеличенный на единицу. Именно это значение используется в качестве квитанции. Если установлен контрольный бит АСК, то это поле содержит следующий номер очереди, который отправитель данного сегмента желает получить в обратном направлении.
  •  Длина заголовка (hlen) занимает 4 бита и представляет собой длину заголовка TCP-сегмента, измеренную в 32-битовых словах. Длина заголовка не фиксирована и может изменяться в зависимости от значений, устанавливаемых в поле параметров.
  •  Резерв (reserved) занимает 6 бит.
  •  Кодовые биты (code bits) числом 6 содержат служебную информацию о типе данного сегмента. Положительное значение сигнализируется установкой этих битов в единицу:
    •  URG — срочное сообщение;
    •  АСК — квитанция на принятый сегмент;
    •  PSH — запрос на отправку сообщения без ожидания заполнения буфера (протокол TCP может выжидать заполнения буфера перед отправкой сегмента, но если требуется срочная передача, то приложение сообщает об этом протоколу TCP с помощью данного бита);
    •  RST — запрос на восстановление соединения;
    •  SYN — сообщение, используемое для синхронизации счетчиков переданных данных при установлении соединения;
    •  FIN — признак достижения передающей стороной последнего байта в потоке передаваемых данных.
  •  Окно (window) занимает 2 байта и задает количество байтов данных, ожидаемых отправителем данного сегмента, начиная с байта, номер которого указан в поле подтвержденного номера.
  •  Контрольная сумма (checksum) занимает 2 байта.
  •  Указатель срочности (urgent pointer) занимает 2 байта и указывает на конец данных, которые необходимо срочно принять, несмотря на переполнение буфера. Указатель срочности используется совместно с кодовым битом URG. То есть если какие-то данные необходимо переслать приложению-получателю вне очереди, то приложение-отправитель должно сообщить об этом протоколу TCP путем установки в единицу бита URG.
  •  Параметры (options) имеют переменную длину и могут вообще отсутствовать. Максимальная величина поля составляет 3 байта; оно используется для решения вспомогательных задач, например для выбора максимального размера сегмента. Поле параметров может располагаться в конце заголовка TCP, а его длина кратна 8 бит.
  •  Заполнитель (padding) может иметь переменную длину. Это фиктивное поле, используемое для доведения размера заголовка до целого числа 32-битовых слов.


2. Структурные сущности: классы, интерфейсы, кооперации, прецеденты, компоненты, узлы.

Унифицированный язык моделирования (UML - Unified Modeling Language) является стандартным инструментом для создания документированных каркасов ("чертежей") программного обеспечения. С помощью UML можно визуализировать, специфицировать, конструировать и документировать процесс разработки программных систем. UML разработан таким образом, чтобы удовлетворять потребности при моделировании любых систем: от информационных систем масштаба предприятия до распределенных Web-приложений и даже встроенных систем реального времени. Это выразительный язык, позволяющий рассмотреть систему со всех точек зрения, имеющих отношение к ее разработке и последующему развертыванию. Несмотря на обилие выразительных возможностей, этот язык прост для понимания и использования.

Словарь UML включает три вида основных конструкций:

  •  сущности - абстракции, являющиеся основными элементами модели;
  •  отношения - связи между сущностями;
  •  диаграммы, группирующие представляющие интерес множества сущностей и отношений.

Сущности UML

В UML имеется четыре типа сущностей:

  •  структурные;
  •  поведенческие;
  •  группирующие;
  •  аннотационные.

Сущности являются основными объектно-ориентированными элементами языка. С их помощью можно создавать корректные модели. Структурные сущности - это имена существительные в моделях на языке UML. Как правило, они представляют собой статические части модели, соответствующие концептуальным или физическим элементам системы. Как уже упоминалось выше, существует семь разновидностей структурных сущностей, естественно, что все они нашли свое отражение в UML. Напомним определения структурных сущностей и дадим описание, соответствующего им графического образа UML.

Класс (class) - это описание совокупности объектов с общими атрибутами, операциями отношениями и семантикой. Графически класс изображается в виде прямоугольника, в котором записаны его имя, атрибуты и операции, например как это показано на рисунке:

ClassName

-PrivateAttribute : char
#ProtectedAttribute
+PublicAttribute

+Operation1(in S : String)
+Operation2()

Рис. Пиктограмма класса

Интерфейс (interface) - это совокупность операций, которые определяют определенную службу (сервис, набор услуг), которые предоставляет класс или компонент. На диаграммах интерфейс изображается в виде круга, под которым указывается его имя, как это показано на рис. Интерфейс очень редко, практически никогда, существует сам по себе - обычно он присоединяется к реализующему его классу или компоненту.

Кооперация (collaboration) определяет взаимодействие, она представляет собой совокупность ролей и других элементов, которые, работая вместе, производят некоторый кооперативный эффект, не сводящийся к обычно сумме слагаемых. Графически кооперация изображается в виде эллипса, который ограничивается пунктиром, внутри обычно заключено только имя, пример на рис.

Прецедент (use case) - это описание последовательности выполняемых системой действий, которая производит наблюдаемый результат, значимый для какого-то определенного актера (actor). Графически прецедент тоже изображается в виде эллипса, только ограниченного непрерывной линией, обычно содержащего только его имя, как показано на рис.

Активным классом (active class) называется класс, объекты которого вовлечены в один или несколько процессов, или нитей (threads), и поэтому могут инициировать управляющее воздействие. Графически активный класс изображается также как и простой класс, но ограничивается прямоугольником, который рисуется жирной линией, и включает имя, атрибуты и операции, пример на рис.

Рис. Пиктограмма активного класса (тоже что и обычного, только обводка рисуется жирной линией)

Компонент (component) - это физическая заменяемая часть системы, которая соответствует некоторому набору интерфейсов и обеспечивает его реализацию. Графически компонент изображается в виде прямоугольника с вкладками, содержащего обычно только имя, как показано на рис.

Узел (node) - это элемент реальной (физической) системы, который существует во время функционирования программного продукта и представляет собой некоторый вычислительный ресурс, обычно обладающий как минимум некоторым объемом памяти, а часто еще и возможностью обработки. Графически для изображения узла используется куб, обычно содержащий только имя узла.

Рис. Пиктограмма узла


Рис. Пиктограмма интерфейса


 

А также другие работы, которые могут Вас заинтересовать

938. Разработка маршрутно-операционного технологического процесса изготовления детали Крышка 378 KB
  Технический анализ чертежа детали и его корректировка в соответствие со стандартами ЕСКД. Составление технологического маршрута обработки, включая термические и контрольные операции. Расчет суммарной погрешности выполнения одного операционного размера, с учетом действия различных технологических факторов.
939. Управление делами Аппарата Администрации Смоленской области г. Смоленск, площадь им. Ленина, 1 311.5 KB
  Общая характеристика Аппарата Администрации Смоленской области. Основные задачи и функции протокольного отдела. Управление делами Аппарата Администрации Смоленской области. Функциональное содержание управленческой деятельности на примере протокольного отдела Управления делами Аппарата Администрации Смоленской области.
940. Исследование основных параметров и схем включения операцион-ных усилителей 231.5 KB
  В ходе работе были определены параметры операционного усилителя К140УД7 на лабораторном стенде и его зарубежного аналога uA741C в среде моделирования Microcap9: коэффициент усиления ОУ без обратной связи, входные токи, входное напряжение смещения, коэффициент ослабления синфазного сигнала.
941. Транспортування небезпечних вантажів автомобільним видом транспорту 2.2 MB
  Визначення перспективного напрямку удосконалення існуючої схеми перевезень легкозаймистих речовин у Угорщину та Румунію. Аналіз українського законодавства в області автомобільних перевезень небезпечних вантажів. Оцінка техніко-економічної ефективності розроблених технологічних рішень.
942. Отечественная история от начала до конца ХХ века 683 KB
  Происхождение и ранняя история восточных славян (расселение, занятия, общественное устройство, религия). Объединение русских земель и образование Московского государства. Государственное реформирование при первых Романовых. Либеральные реформы 60- 70 гг. XIX века. Столыпинская аграрная реформа и ее итоги. Новая экономическая. политика (1921-28г.:причины, содержание, противоречия) НЭП.
943. Привод ленточного транспортёра 224.5 KB
  Промежуточный вал (расчёт на статическую прочность). Определение требуемой мощности электродвигателя. Определение частоты вращения вала электродвигателя. Определение действительного фактического передаточного числа. Крутящий момент в поперечных сечениях валов.
944. Проектирование автоматизированной информационной системы автомобильной стоянки на Delphi 753 KB
  Обзор существующих систем для автоматизации работы автомобильных стоянок. После анализа особенностей среды программирования Delphi и возможностей написания на ней программы было успешно разработано приложение Автостоянка, которое позволяет сотрудникам автостоянки осуществлять простой и удобный поиск клиентов и их авто по базе данных, добавлять новые записи, вести учет платежей за парковочные места.
945. Знакомство с операционной системой MS DOS 68.5 KB
  Просматривать содержимое дисков и каталогов. Выполнять действия над файлами. Выполнять действия над каталогами.
946. Основные команды работы с файлами и каталогами 103.5 KB
  Команды DOS состоят из имени команды и, возможно, параметров, разделённых пробелами. Имя команды и параметры могут набираться как прописными, так и строчными латинскими буквами.