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

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

Жанры

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

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

Шрифт:

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

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

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

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

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

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

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

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

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

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

 

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

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

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

Жатва душ. Остров мертвых

Сугралинов Данияр
Фантастика:
боевая фантастика
рпг
5.20
рейтинг книги
Жатва душ. Остров мертвых

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

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

Жандарм

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

Черный дембель. Часть 3

Федин Андрей Анатольевич
3. Черный дембель
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Черный дембель. Часть 3

Охотник за головами

Вайс Александр
1. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Охотник за головами

Сумеречный стрелок

Карелин Сергей Витальевич
1. Сумеречный стрелок
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный стрелок

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

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

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

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

Доктора вызывали? или Трудовые будни попаданки

Марей Соня
Фантастика:
юмористическая фантастика
попаданцы
5.00
рейтинг книги
Доктора вызывали? или Трудовые будни попаданки

Фиктивный брак

Завгородняя Анна Александровна
Фантастика:
фэнтези
6.71
рейтинг книги
Фиктивный брак

Барону наплевать на правила

Ренгач Евгений
7. Закон сильного
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Барону наплевать на правила

Вернуть невесту. Ловушка для попаданки 2

Ардова Алиса
2. Вернуть невесту
Любовные романы:
любовно-фантастические романы
7.88
рейтинг книги
Вернуть невесту. Ловушка для попаданки 2

Сирийский рубеж

Дорин Михаил
5. Рубеж
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Сирийский рубеж

Темный Лекарь 2

Токсик Саша
2. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь 2