реклама
ОНЛАЙН АПТЕКА НИЗКИХ ЦЕН
цены ниже розничных точек. доставка по украине

   Любые виды проектных, дизайнерских и строительных работ в Украине и Киеве    
АПТЕКА

proxy  статьи  библиотека  softice  free_юр.консультация  hard  iptv
рекламодателям  фирмы/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-2020, security2001@mail.ru