Протоколы транспортного уровня

Обеспечение надежности

Для обеспечения надежной доставки и правильной последовательности данных в потоке TCP пользуется подтверждениями. Как только пункт назначения принимает блок данных, он передает подтверждение о приеме источнику данных. Источнику данных это сообщение говорит: «Все в порядке. Я принял твои данные». Каждый раз при передаче сообщения модуль TCP запускает специальный таймер

. По истечении заданного в нем времени и не получении подтверждения TCP повторяет попытку передать свое сообщение. На рис. 5.3 схематично показана работа такой системы.

Рис. .3. Передача данных с простым подтверждением о доставке

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

Что такое скользящее окно?

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

Рис. .4. Скользящее окно TCP

Что такое транспортный протокол?

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

Рис. .5. Передача сообщений и подтверждений о доставке по схеме скользящего окна

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

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

Если, наоборот, вероятность столкновения данных велика, TCP уменьшает размер скользящего окна. Если размер скользящего окна, изображенного на рис. 5.4, принять равным восьми пакетам при обычном сетевом трафике, то в худших условиях, когда Интернет сильно загружен, его размер может умень­шиться до пяти. Наоборот, когда данных в сети немного, размер окна может увеличиться, например, до 10—20 пакетов.

Имейте в виду, что представленная на рис. 5.4 и описанная в предыдущих абзацах схема несколько упрощена. На самом деле TCP задает размер окна в байтах. То есть размер окна по умолчанию может равняться нескольким тысячам байтов, а не восьми, десяти и двенадцати байтам, как в предыдущем примере. Как правило, модуль TCP передает несколько сегментов, прежде чем скользя­щее окно заполнится целиком. Большинство систем в Интернет устанавливают окно равным по умолчанию 4096 байтам. Иногда размер окна равен 8192 или 16384 байтам.

Сообщение TCP

Блок данных TCP принято называть сообщением или сегментом. Оба эти термина вполне корректны и широко употребляются в литературе, посвященной Интернет. Мы, однако, по причинам, которые обсудим ниже, на протяжении всей книги будем употреблять термин «сегмента. TCP рассматривает свои данные в качестве однородного, неделимого потока. Тем не менее для доставки данных он вынужден использовать IP-датаграммы. Прикладной программе, однако, совершенно не обязательно знать, что ее поток данных переносят датаграммы. TCP делает этот процесс прозрачным для всех приложений, работающих через него.

Где бы вы не встретили термин «сообщением, относящийся к TCP, можете смело подставлять туда термин «сегмента. Почему? Потому, что каждое сообщение TCP, доставленное датаграммой протокола Интернет, является на самом деле ТСР-сегментом. Сегмент TCP состоит из TCP-заголовка, TCP-опций и данных, переносимых сегментом. На рис. 5.6 изображена структура сегмента TCP. Несмотря на то, что заголовок показан состоящим как бы из нескольких уровней, на самом деле он является последовательным потоком данных, длиной как минимум в 20 байтов. В табл. 5.2 кратко описано назначение каждого поля заголовка TCP. Способы применения каждого поля будут обсуждены в следующих абзацах.

Таблица.2. Назначение полей заголовка TCP

Поле заголовка

Назначение

Порт-передатчик

Обозначает порт протокола приложения-источ­ника данных.

Порт-приемник

Обозначает порт протокола приложения-полу­чателя данных.

Номер последовательности

Определяет первый байт данных в области данных сегмента TCP.

Номер подтверждения

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

Длина заголовка

Длина TCP-заголовка, измеренная в 32-разряд­ных словах.

Флаг URG

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

Флаг АСК

Указание принимающему модулю TCP на то, что поле номер подтверждения содержит соответ­ствующие данные.

Флаг PSH

Требование принимающему модулю TCP передать данные приложению-получателю немедленно.

Флаг RST

Запрос принимающему модулю TCP сбросить соединение.

Флаг SYN

Запрос принимающему модулю TCP синхрони­зировать номера последовательности.

Флаг FIN

Сообщение принимающему модулю TCP об окон­чании передачи.

Размер окна

Сообщение принимающему модулю TCP о коли­честве байтов, которое способен принять модуль-передатчик.

Контрольная сумма TCP

Служит для обнаружения поврежденных при передаче данных.

Указатель на неотложные данные

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

Опции

Обычно используются совместно с опцией макси­мальная длина сегмента (MSS).

Страница:  1  2  3  4  5  6  7 


Другие рефераты на тему «Коммуникации, связь и радиоэлектроника»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы