Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
354289.doc
Скачиваний:
35
Добавлен:
20.04.2019
Размер:
2.68 Mб
Скачать

13. Структура протокола тср, его формат и назначение полей.

На транспортном уровне в Интернете применяются два основных протокола - ориентированный на соединение протокол TCP и не требующий соединений протокол UDP.

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

При разработке протокола TCP основное внимание уделялось его способности адаптироваться к свойствам объединенной сети и устойчивости по отношению к различным типам отказов.

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

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

Несмотря на кажущуюся простоту, ТСР протокол достаточно сложен и должен решать следующие основные проблемы:

-восстанавливать порядок сегментов;

-убирать дубликаты сегментов, в каком бы виде (фрагментация) они не поступали;

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

-устанавливать и разрывать соединения надежно;

-управлять потоком;

-управлять перегрузками.

При TCP обмен данными происходит в виде сегментов. Сегмент состоит из фиксированного 20-байтового заголовка, за которым могут следовать байты данных. Сегменты могут и не содержать данных. Такие сегменты часто применяются для передачи подтверждений и управляющих сообщений.

Размер сегментов определяется программным обеспечением TCP и ограничен двумя пределами. Во-первых, каждый сегмент, включая TCP-заголовок, должен поме­щаться в 65 535-байтовое поле полезной нагрузки IP-пакета. Во-вторых, в каждой сети есть максимальная единица передачи (MTU), и каждый сегмент должен помещаться в MTU.

При фрагментации каждый новый сегмент получает свой IP-заголовок (20 байт), что увеличивает накладные расходы.

-Поля «Порт получателя» и «Порт отправителя» являются идентификаторами локальных конечных точек соединения. Каждый хост может сам решать, как назначать свои порты, начиная с 1024. Номер порта вместе с IP-адресом хоста образуют уникальный 48-битовый TSAP-адрес.

-Поле «Порядковый номер» идентифицирует байт в потоке данных от отправляющего TCP к принимающему TCP. TCP нумерует каждый байт номером последовательности.

-Поле «Номер подтверждения» - это следующий номер последовательности, который ожидает получить отправитель подтверждения. Это номер последовательности плюс 1 последнего успешно принятого байта данных.

-Поле «Длина TCP-заголовка» означает размер TCP-заголовка в 32-разрядных словах.

-Неиспользуемое зарезервированное 6-битовое поле. Должно быть заполнено нулями.

Затем следуют шесть 1-битовых флагов:

-Бит URG устанавливается в 1 в случае использования поля Указатель на срочные данные, содержащего смещение в байтах от текущего порядкового номера байта до места расположения срочных данных. Таким образом, в протоколе TCP реализуются прерывающие сообщения.

-Бит АСК, будучи установлен в 1, означает, что поле «Номер подтверждения» содержит осмысленные данные. В противном случае данный сегмент не содержит подтверждения и поле «Номер подтверждения» просто игнорируется;

-Бит PSH является флагом PUSH, с помощью которого отправитель просит получателя доставить данные приложению сразу по получении пакета, а не хранить его в буфере, пока буфер не наполнится, что получатель может делать ради большей эффективности;

-Бит RST используется для сброса состояния соединения, которое из-за сбоя хоста или по другой причине попало в тупиковую ситуацию. Кроме того, он используется для отказа от неверного сегмента или от попытки создать соединение. Если вы получили сегмент с установленным битом RST, это означает наличие какой-то проблемы;

-Бит SYN применяется для установки соединения.

-Бит FIN используется для разрыва соединения. Он указывает, что у отправителя больше нет данных для передачи. Однако даже закрыв соединение, процесс может продолжать получать данные неопределенно долго. У сегментов с битами FIN и SYN есть порядковые номера, что гарантирует правильный порядок их выполнения.

Управление потоком в протоколе TCP осуществляется при помощи скользя­щего окна переменного размера.

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

-Поле «Контрольная сумма» призвано повысить надежность. Оно содержит контрольную сумму заголовка, данных и псевдо- заголовка.

П севдозаголовок содержит 32-разрядные IP-адреса отправителя и получателя, номер протокола для TCP и счетчик байтов для ТСР-сегмента (включая заголовок). Включение псевдозаголовка в контрольную сумму TCP помогает обнаружить неверно доставленные пакеты, хотя это нарушает иерархию протоколов, так как IP-адреса в нем принадлежат IP-уровню, а не TCP-уровню.

-Поле «Указатель на срочные данные» используется совместно с управляющим битом URG. Число, помещаемое в это поле, указывает на конец срочных данных. Срочные данные передаются вне очереди .

-Поле «Параметры» предоставляет дополнительные возможности, не покрываемые стандартным заголовком. Один из наиболее важных параметров позволяет каждому хосту указать максимальный размер поля полезной нагрузки, который он может принять. Если параметры занимают не полностью 32 битовое поле то остаток заполняется нулями. Это действие называется выравниванием.