Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Реализация метода скользящего окна в протоколе TCP






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

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

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

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

1) Отделяет сегменты, которые уже были отправлены и на которые уже пришли квитанции.

2) Располагается вслед за 1-ой границей и определяется размером окна, т.е. количеством байт, составляющих сегменты, которые отправлены, но квитанции на которые ещё не получены

3) Это сегменты, которые не отправлены, но могут быть отправлены, т.к. входят в пределы окна

4) Указывает на начало последовательности сегментов, ни один из которых не может быть отправлен до тех пор, пока не придёт очередная квитанция и окно не будет сдвинуто.


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.005 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал