|
ОНЛАЙН АПТЕКА НИЗКИХ ЦЕН
цены ниже розничных точек. доставка по украине |
Проектирование и Согласование любых объектов в Киеве
|
|
рекламодателям фирмы/add расшифровка штрих-кодов links/add
http://kiev-security.org.ua
3 Спецификация для функций протокола
3.5 Закрытие соединения
Состояние CLOSED означает "я не имею данных для передачи". Конеч-
но, закрытие полнодуплексного соединения является предметом множества
интерпретаций, поскольку не очевидно, как интерпретировать в соедине-
нии сторону, получающую информацию. Мы решили интерпретировать CLOSE
в упрощенной манере. Клиент, находящийся в состоянии CLOSE, может все
еще получать информацию (RECEIVE) до тех пор, пока партнер тоже не
сообщит, что переходит в состояние CLOSE. Таким образом, клиент может
изящно завершить работу на своем конце соединения. Программа протоко-
ла TCP гарантированно получит все буферы с информацией, отправленные
до того, как соединение было закрыто. Поэтому клиенту, не ждущему
информации с соединения, следует лишь ждать сообщения об успешном
закрытии этого соединения, что означает, что все данные получены про-
граммой TCP, принимающей информацию. Клиенты должны сохранять уже
закрытые ими для чтения информации соединения до тех пор, пока про-
грамма протокола TCP не сообщит им, что такой информации больше нет.
Особое значение имеют три случая:
1) клиент инициирует закрытие соединения, дав команду своей программе
протокола TCP.
2) закрытие соединения начинается с того, что напарник посылает сюда
управляющий сигнал FIN.
3) оба клиента дают команду на закрытие одновременно.
Случай 1 Местный клиент инициирует закрытие
В этом случае создается сегмент с сигналом FIN и помещается в
очередь сегментов, ждущих отправления. После этого программа TCP
уже не будет принимать от этого клиента каких-либо команд на от-
правление данных по закрытому соединению, а сама переходит в со-
стояние FIN-WAIT-1. Тем не менее, в этом состоянии еще возможно
получение клиентом данных с этого соединения. Все сегменты, стоя-
щие в очереди, и сам сегмент с сигналом FIN будут в случае необхо-
димости посылаться напарнику вновь и вновь, пока не получат своего
подтверждения. Когда программа TCP партнера подтвердит получение
сигнала FIN, и сама отправит сюда свой сигнал FIN, местная про-
грамма может подтвердить получение последнего. Заметим, что про-
грамма TCP, получающая сигнал FIN, будет подтверждать его, но не
будет посылать своего собственного сигнала FIN до тех пор, пока ее
клиент тоже не закроет соединения.
Случай 2 Программа TCP получает из сети сигнал FIN.
Если из сети приходит невостребованный сигнал FIN, то принимаю-
щая его программа TCP может подтвердить получение такого сигнала и
оповестить своего клиента о том, что соединение закрыто. Клиент
ответит командой CLOSE, по которой программа TCP может после пере-
сылки оставшихся данных послать партнеру сигнал FIN. После этого
программа TCP ждет, пока не прийдет подтверждение на отправленный
ею сигнал FIN, после чего она ликвидирует соединение. Если под-
тверждения не было по истечении отведенного времени, то соединение
ликвидируется в принудительном порядке, о чем дается сообщение
клиенту.
Случай 3 Оба клиента закрывают соединение одновременно.
Одновременное закрытие соединения клиентами на обоих концах
приводит к обмену сегментами с сигналом FIN. Когда все сегменты,
стоящие в очереди перед сегментом с FIN, будут переданы и получат
подтверждение, каждая программа TCP может послать подтверждение на
полученный ею сигнал FIN. Обе программы по получении этих под-
тверждений будут ликвидировать соединение.
TCP A TCP B
1.ESTABLISHED ESTABLISHED
2.(Close)
FIN-WAIT-1 --> \SEQ=100>\ACK=300>\CTL=FIN,ACK> --> CLOSE-WAIT
3.FIN-WAIT-2 \-- \SEQ=300>\ACK=101>\CTL=ACK> \-- CLOSE-WAIT
4. (Close)
TIME-WAIT \-- \SEQ=300>\ACK=101>\CTL=FIN,ACK> \-- LAST-ACK
5.TIME-WAIT --> \SEQ=101>\ACK=301>\CTL=ACK> --> CLOSED
6. (2 MSL)
CLOSED
Нормальная процедура закрытия
Рисунок 13
TCP A TCP B
1.ESTABLISHED ESTABLISHED
2.(Close) (Close)
FIN-WAIT-1 --> \SEQ=100>\ACK=300>\CTL=FIN,ACK> ... FIN-WAIT-1
\-- \SEQ=300>\ACK=100>\CTL=FIN,ACK> \--
... \SEQ=100>\ACK=300>\CTL=FIN,ACK> -->
3.CLOSING --> \SEQ=101>\ACK=301>\CTL=ACK> ... CLOSING
\-- \SEQ=301>\ACK=101>\CTL=ACK> \--
... \SEQ=101>\ACK=301>\CTL=ACK> -->
4.TIME-WAIT TIME-WAIT
(2 MSL) (2 MSL)
CLOSED CLOSED
Процедура одновременного закрытия соединения с обоих концов
Рисунок 14
Назад | Вперед
Содержание
HOME
Если у вас есть сайт или домашняя страничка - поддержите пожайлуста наш ресурс, поставьте себе кнопочку, скопировав этот код:
<a href="http://kiev-security.org.ua" title="Самый большой объем в сети онлайн инф-ции по безопасности на rus" target="_blank"><img src="http://kiev-security.org.ua/88x31.gif" width="88" height="31" border="0" alt="security,безопасность,библиотека"></a> |
Идея проекта(C)Anton Morozov, Kiev, Ukraine, 1999-2022,