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

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

Жанры

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

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

Шрифт:

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

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

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

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

После получения первого FIN-сегмента второй FIN-сегмент посылается компьютеру-отправителю не сразу, в отличие от SYN-сегмента. Отправителю посылается сигнал подтверждения приема первого FIN-сегмента, после чего выполняемое на компьютере получателя приложение уведомляется о получении запроса на закрытие соединения. От момента уведомления приложения до получения отклика может пройти достаточно много времени. Отправка сигнала подтверждения приема первого FIN-сегмента позволяет исключить повторную передачу этого сегмента отправителем по истечении тайм-аута. Получив от приложения, выполняемого на компьютере получателя, команду на закрытие соединения, экземпляр протокола TCP отошлет отправителю второй FIN-сегмент, при этом отправитель должен прислать уведомление о получении этого сегмента (третий АСК-сегмент).

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

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

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

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

 

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

А теперь следует рассмотреть стандартные номера портов, используемые протоколом TCP.

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

Неудержимый. Книга XIV

Боярский Андрей
14. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга XIV

Штуцер и тесак

Дроздов Анатолий Федорович
1. Штуцер и тесак
Фантастика:
боевая фантастика
альтернативная история
8.78
рейтинг книги
Штуцер и тесак

Его маленькая большая женщина

Резник Юлия
Любовные романы:
современные любовные романы
эро литература
8.78
рейтинг книги
Его маленькая большая женщина

Измена. Возвращение любви!

Леманн Анастасия
3. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Возвращение любви!

На границе империй. Том 7. Часть 4

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
На границе империй. Том 7. Часть 4

Убивать чтобы жить 6

Бор Жорж
6. УЧЖ
Фантастика:
боевая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 6

Совок-8

Агарев Вадим
8. Совок
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Совок-8

Убивать чтобы жить 2

Бор Жорж
2. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 2

Я все еще не князь. Книга XV

Дрейк Сириус
15. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я все еще не князь. Книга XV

Возвышение Меркурия. Книга 12

Кронос Александр
12. Меркурий
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 12

Последняя Арена 7

Греков Сергей
7. Последняя Арена
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Последняя Арена 7

Не возвращайся

Гауф Юлия
4. Изменщики
Любовные романы:
5.75
рейтинг книги
Не возвращайся

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

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

Бальмануг. Студентка

Лашина Полина
2. Мир Десяти
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Бальмануг. Студентка