logo search
Технологии корпоративных сетей

Блок управления передачей

Для обеспечения надежной передачи данных по установленным логическим со­единениям между прикладными программами протокол TCP должен обеспечи­вать следующие функции:

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

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

Для сохранения всей совокупности информации, необходимой для создания и поддержки соединения, каждый раз при установлении соединения создается структура данных, называемая блоком управления передачей (Transmission Control Block, TCB). Блок управления передачей ТСВ хранит всю постоянную информацию по созданному соединению и текущие значения нескольких пе­ременных, например, определяющих очередность отправления. К постоянной информации относятся: номера локального и удаленного сокетов, флаги безо­пасности и приоритета для данного соединения, указатели на буферы отправки и приема. Блок ТСВ поддерживает несколько переменных, определяющих оче­редность отправления и получения сегментов. К ним относятся переменные, связанные с отправкой:

и переменные, связанные с получением:

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

На рис. 7.4 показана последовательность этапов отправки и приема данных.

На примере рис. 7.4 рассмотрим принцип использования некоторых перемен­ных. Отправитель данных с помощью переменной SND.NXT отслеживает следу­ющий номер сегмента в очереди, подлежащего отправке. Получатель данных с помощью переменной RCV.NXT отслеживает номера прибывающих сегментов. В поле переменной SND.UNA отправитель данных помещает самый старый номер сегмента, который уже был отправлен, но на который еще не получено подтверждение (АСК). Когда отправитель создает и посылает новый сегмент, он увеличивает значение своей переменной SND.NXT. Адресат при получении этого сегмента увеличивает значение своей переменной RCV.NXT и отправляет подтверждение. При получении подтверждения увеличивается значение пере­менной SND.UNA отправителя. Разность значений переменных SND.NXT и SND.UNA может служить мерой задержки сегментов в сети. Переменные увели­чиваются на длину поля данных в сегменте.