Справочник по сетевым протоколам

       

Команда закрытия соединения


Формат

CLOSE (локальное имя соединения)

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

Итак, команду CLOSE следует интерпретировать как "у меня нет больше данных для пересылки", а не как "я больше не хочу ничего получать". Может случиться (если протокол на уровне клиента не продуман до конца), что сторона, закрывающая соединение, не сможет избавиться от всех своих данных до истечения контрольного времени. В этом случае команда CLOSE транслируется в ABORT, и программа TCP отказывается от соединения.

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

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

Команда закрытия предполагает выполнение операции проталкивания данных через соединение.



Содержание раздела