Чтение онлайн

на главную - закладки

Жанры

Настройка сетей Microsoft дома и в офисе. Учебный курс

Сергеев Александр

Шрифт:

При описании протокола TCP используется понятие абстрактного соединения, осуществляемого с применением виртуальных каналов связи. Для каждого соединения назначаются конечные точки соединения. В данном случае под конечной точкой понимается целочисленная пара чисел вида узел, порт, где параметр узел определяет IP-адрес узла сети, а параметр порт определяет номер порта TCP для данного узла. Например, запись (139.15.1.5, 13) определяет конечную точку, которая характеризуется TCP-портом с номером 13, относящимся к компьютеру с IP-адресом 139.15.1.5.

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

его конечных точек, достаточно указать IP-адреса и ТСР-порты для этих точек.

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

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

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

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

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

В протоколе TCP поток данных разбивается на сегменты, состоящие из последовательности байтов (октетов). Как правило, каждый сегмент данных передается в сети в виде единственной IP-дейтаграммы. Для повышения эффективности передачи данных и управления потоком данных в протоколе TCP используется специальный механизм скользящих окон. В этом случае экземпляр протокола TCP может отправлять сразу несколько сегментов данных еще до того, как будет получено соответствующее сообщение относительно их доставки. Благодаря этому увеличивается общая пропускная способность сети, поскольку сокращается время ее простоя. Также становится реальной «голубая мечта разработчиков» – сквозное управление потоком данных. Получатель может использовать средства, позволяющие ограничить поток передаваемых данных в случае нехватки

буферной памяти, используемой для хранения промежуточных данных.

Благодаря использованию скользящих окон протокол TCP оперирует октетами (байтами) данных (рис. 4.4, а), а не сегментами или пакетами. При этом октеты потока данных нумеруются последовательно, а компьютер-отправитель запоминает три указателя для каждого открытого соединения. Именно по этим указателям определяется скользящее окно (рис. 4.4, б).

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



Рис. 4.4. Скользящее окно протокола TCP


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

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

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

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

Благодаря окну переменного размера повышается надежность передачи данных и обеспечивается управление потоком данных. Чтобы не допустить переполнения буфера, следует по мере его заполнения отсылать объявления окон меньшего размера. Иногда в целях прекращения передачи данных получатель объявляет окно нулевого размера. Если же буфер памяти очистится, получатель отсылает объявление ненулевого окна для возобновления передачи данных.

Поделиться:
Популярные книги

Запасная дочь

Зика Натаэль
Фантастика:
фэнтези
6.40
рейтинг книги
Запасная дочь

Гридень 2. Поиск пути

Гуров Валерий Александрович
2. Гридень
Детективы:
исторические детективы
5.00
рейтинг книги
Гридень 2. Поиск пути

Землянка для двух нагов

Софи Ирен
Фантастика:
космическая фантастика
5.00
рейтинг книги
Землянка для двух нагов

Отверженный VI: Эльфийский Петербург

Опсокополос Алексис
6. Отверженный
Фантастика:
городское фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Отверженный VI: Эльфийский Петербург

Проданная невеста

Wolf Lita
Любовные романы:
любовно-фантастические романы
5.80
рейтинг книги
Проданная невеста

Флеш Рояль

Тоцка Тала
Детективы:
триллеры
7.11
рейтинг книги
Флеш Рояль

Шведский стол

Ланцов Михаил Алексеевич
3. Сын Петра
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Шведский стол

Найденыш

Шмаков Алексей Семенович
2. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
5.00
рейтинг книги
Найденыш

Семья. Измена. Развод

Высоцкая Мария Николаевна
2. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Семья. Измена. Развод

Конструктор

Семин Никита
1. Переломный век
Фантастика:
попаданцы
альтернативная история
4.50
рейтинг книги
Конструктор

Снегурка для опера Морозова

Бигси Анна
4. Опасная работа
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Снегурка для опера Морозова

Русь. Строительство империи

Гросов Виктор
1. Вежа. Русь
Фантастика:
альтернативная история
рпг
5.00
рейтинг книги
Русь. Строительство империи

Идеальный мир для Лекаря 14

Сапфир Олег
14. Лекарь
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 14

Кротовский, не начинайте

Парсиев Дмитрий
2. РОС: Изнанка Империи
Фантастика:
городское фэнтези
попаданцы
альтернативная история
5.00
рейтинг книги
Кротовский, не начинайте