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

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


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


 

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

32759. Ламинарное и турбулентное течение жидкости. Сила вязкого трения в жидкости. Число Рейнольдса. Формула Пуазейля 42 KB
  Число Рейнольдса. Ламинарное течение возможно только до некоторого критического значения числа Рейнольдса после которого оно переходит в турбулентное. Критическое значение числа Рейнольдса зависит от конкретного вида течения течение в круглой трубе обтекание шара и т. Число Рейнольдса Число Рейнольдса безразмерное соотношение которое как принято считать определяет ламинарный или турбулентный режим течения жидкости или газа.
32760. Термодинамический метод исследования. Термодинамические параметры. Равновесные состояния и процессы, их изображение на термодинамических диаграммах 40 KB
  Равновесные состояния и процессы их изображение на термодинамических диаграммах. Состояние системы задается термодинамическими параметрами параметрами состояния. Обычно в качестве параметров состояния выбирают: объем V м3; давление Р Па Р=dFn dS где dFn модуль нормальной силы действующей на малый участок поверхности тела площадью dS 1 Па=1 Н м2; термодинамическую температуру Т К Т=273. Под равновесным состоянием понимают состояние системы у которой все параметры состояния имеют определенные значения не изменяющиеся с...
32761. Вывод уравнения молекулярно-кинетической теории идеальных газов для давления и его сравнения с уравнением Клайперона-Менделеева 59.5 KB
  Основное уравнение молекулярнокинетической теории идеального газа Это уравнение связывает макропараметры системы – давление p и концентрацию молекулс ее микропараметрами – массой молекул их средним квадратом скорости или средней кинетической энергией: Вывод этого уравнения основан на представлениях о том что молекулы идеального газа подчиняются законам классической механики а давление – это отношение усредненной по времени силы с которой молекулы бьют по стенке к площади стенки. Учитывая связь между концентрацией молекул в газе и его...
32762. Средняя кинетическая энергия молекул. Молекулярно-кинетическое толкование абсолютной температуры. Число степеней свободы. Закон равномерного распределения энергии по степеням свободы молекул 51 KB
  Число степеней свободы. Закон равномерного распределения энергии по степеням свободы молекул. Число степени свободы молекул. Закон равномерного распространения энергии по степеням свободы молекул.
32763. Работа газа при изменении его объёма. Количество теплоты. Теплоёмкость. Первое начало термодинамики 16.59 KB
  Количество теплоты. Количество теплоты мера энергии переходящей от одного тела к другому в данном процессе. Количество теплоты является одной из основных термодинамических величин. Количество теплоты является функцией процесса а не функцией состояния то есть количество теплоты полученное системой зависит от способа которым она была приведена в текущее состояние.
32764. Приминение первого начала термодинамики к изопроцессам и адиабатному процессу идеального газа. Зависимость теплоёмкости идеального газа от вида процесса 88 KB
  Приминение первого начала термодинамики к изопроцессам и адиабатному процессу идеального газа. Зависимость теплоёмкости идеального газа от вида процесса. Тогда для произвольной массы газа получим Q=dU=mCvT M Изобарный процесс p=const. При изобарном процессе работа газа при расширении объема от V1 до V2 равна и определяется площадью прямоугольника.
32765. Работа, совершаемая идеальным газом в различных процессах 32 KB
  Работа совершенная идеальным газом в изотермическом процессе равна где число частиц газа температура и объём газа в начале и конце процесса постоянная Больцмана. Работа совершаемая газом при адиабатическом расширении численно равная площади под кривой меньше чем при изотермическом процессе. Работа совершаемая газом при изобарном процессе при расширении или сжатии газа равна = PΔV. Работа совершаемая при изохорном процессе равна нулю т.
32766. Адиабатный процесс. Уравнение Пуассона для адиабатного процесса 28 KB
  Уравнение Пуассона для адиабатного процесса. Уравнение адиабаты уравнение Пуассона.18 после соответствующих преобразований получим уравнение адиабаты: TVg1 = const или pVg = const.20 Уравнение 13.
32767. Политропический процесс. Теплоёмкость газа в политропическом процессе 28.5 KB
  Политропический процесс. Теплоёмкость газа в политропическом процессе. Рассмотренные выше изохорический изобарический изотермический и адиабатический процессы обладают одним общим свойством имеют постоянную теплоемкость. Термодинамические процессы при которых теплоемкость остается постоянной называются политропными.