Студопедия

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

КАТЕГОРИИ:

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






Управление потоком данных






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

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

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

Две стороны соединения синхронизируют системы нумерации байтов, обмениваясь SYN-сегментами в ходе рукопожатия. Поле Порядковый номер SYN-сегмента содержит исходный порядковый номер (Initial Sequence Number, ISN), который является точкой отсчета для системы нумерации байтов. Из соображений безопасности ISN следует быть случайным числом. Каждый байт данных нумеруется последовательно, начиная с номера ISN, так что первый байт непосредственно данных имеет порядковый номер ISN+1.

Порядковый номер в заголовке сегмента с данными указывает на порядковое положение в потоке данных первого байта данных сегмента. Например, если первый байт потока данных имел порядковый номер 1 (при ISN = 0), а 4000 байт данных уже получен адресатом, первый байт данных текущего сегмента является байтом 4001, и будет иметь порядковый номер 4001.

Подтверждающий сегмент (Acknowledgment Segment, АСК) выполняет две функции: подтверждения приема и управления потоком. Подтверждение сообщает источнику, какой объем данных получен и сколько еще данных адресат способен принять. Номер подтверждения - это порядковый номер следующего байта, ожидаемый адресатом. Стандарт не требует создания подтверждения для каждого пакета. Номер подтверждения является подтверждением получения всех байтов, вплоть до этого номера. Например, если первый отправленный байт имел номер 1 и 2 ООО байт данных уже получены адресатом, номер подтверждения будет иметь значение 2001.

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

На рис. 5.10 приведен поток данных TCP с нулевым значением исходного порядкового номера. Адресат получил и подтвердил получение 2000 байт, поэтому текущий номер подтверждения - 2001. Кроме того, адресат обладает возможностью принять еще 6000 байт, а потому предъявляет окно со значением 6000. Источник отправляет сегмент размером в 1000 байт с порядковым номером 4001. Для байтов 2001 и последующих еще не были получены подтверждения, однако источник продолжает передачу данных, пока не исчерпаны ресурсы окна. Если на момент заполнения окна источником для уже отправленных данных не получены подтверждения, по истечении определенного интервала ожидания источник повторно передает данные, начиная с первого неподтвержденного байта.

В отсутствие последующих подтверждений повторная передача начнется с байта 2001. Данный метод гарантирует надежность доставки данных адресату.

Кроме того, TCP отвечает за доставку полученных от IP данных соответствующему приложению. Приложение, которому предназначаются данные, обозначается 16-битным числом, номером порта. Значения Исходный порт и Целевой порт содержатся в первом слове заголовка сегмента.

Рис. 5.10

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

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

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

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

Рис. 5.11

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


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

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