2. Когда IP-дейтаграмма с SYN-сегментом достигает хоста сервера (если не происходит ее потери), сервер извлекает из нее SYN-сегмент, создает буфер и переменные для соединения, а затем отправляет клиенту сегмент, уведомляющий о выделении TCP-соединения. Этот сегмент также не содержит прикладных данных, однако его заголовок несет важные сведения. Во-первых, флаг SYN, как и в предыдущем сегменте, установлен в 1. Во-вторых, в поле подтверждения содержится число client_isn + 1. Наконец, в поле порядкового номера сервер указывает свой начальный порядковый номер server_isn. Если бы хосты могли общаться при помощи слов, то содержимое второго сегмента, вероятно, выглядело бы следующим образом: «Я получил Ваш SYN-сегмент с просьбой установить с Вами TCP-соединение с начальным порядковым номером client_isn. Я согласен удовлетворить эту просьбу. Мой начальный порядковый номер server_isn». Иногда второй сегмент называют SYNACK-сегментом.
3. Получив SYNACK-сегмент, клиент выделяет память для буфера и переменных TCP-соединения и отсылает серверу сегмент, подтверждающий получение SYNACK-сегмента — в поле подтверждения помещается число serveMsn + 1. Поскольку соединение уже установлено, флаг SYN сбрасывается в 0.
После выполнения перечисленных шагов клиент и сервер готовы к обмену данными друг с другом. Во всех последующих сегментах значение флага SYN равно 0. Процесс установления TCP-соединения иллюстрирует рис. 8.10. Поскольку в этом процессе клиент и сервер обмениваются тремя сегментами, процедуру установления соединения часто называют тройным рукопожатием.

Рис. 8.11Закрытие ТСР-соединения
Процедура закрытия TCP-соединения подразумевает освобождение памяти, выделенной для буферов и переменных, и может происходить по инициативе любой из сторон. Так, рис. 8.11 иллюстрирует закрытие TCP-соединения клиентской стороной. Клиентский процесс генерирует команду закрытия соединения, которая приводит к отправке TCP-клиентом специального сегмента. В заголовке этого сегмента флаг FIN установлен в 1. Получив данный сегмент, сервер подтверждает это. Затем сервер отсылает клиенту завершающий сегмент, в котором бит FIN также установлен в 1; в свою очередь, получение этого сегмента подтверждается клиентом. После этого все ресурсы соединения на обеих сторонах освобождаются.
На протяжении жизни TCP-соединения каждая из сторон проходит через серию изменяющихся TCP-состояний. На рис. 8.12 приведена типичная последовательность TCP-состояний клиентской стороны. Первым состоянием клиента является состояние CLOSED; в этом состоянии происходит инициирование TCP-соединения клиентским приложением, заключающееся в создании сокета. Клиентская сторона TCP посылает серверной стороне SYN-сегмент и переходит в состояние SYN_SENT. В этом состоянии она ожидает ответного SYNACK-сегмента от сервера, в котором бит SYN установлен в 1. Получив SYNACK-сегмент, клиент входит в состояние ESTABLISHED, в котором он может принимать и отправлять сегменты, содержащие данные прикладного уровня.

Рис. 8.12Типичная последовательность состояний клиента ТСР
Предположим, что закрытие соединения инициируется клиентской стороной (заметим, что сервер также может закрыть соединение). Клиент отправляет ТСР-сегмент с битом FIN, установленным в 1, и входит в состояние FIN_WAIT__1. В этом состоянии клиентская сторона ожидает подтверждения (АСК) для переданного сегмента. Получив подтверждение, клиент переходит в состояние FIN_WAIT_2, где ожидает получения от сервера завершающего сегмента с битом FIN, установленным в 1. Получив сегмент, клиент квитирует его и входит в состояние TIME_WAIT. Это состояние предусматривает повторную передачу подтверждения для завершающего сегмента в случае возможной потери этого подтверждения. Длительность нахождения клиента в состоянии TIME_WAIT зависит от реализации протокола, однако наиболее типичными значениями являются 30 с, 1 мин и 2 мин. После выхода из состояния TIME_WAIT происходит формальное закрытие TCP-соединения, при котором освобождаются все его ресурсы, включая номера портов.
На рис. 8.13 представлена типичная последовательность состояний серверной стороны ТСР-соединения для случая, когда закрытие соединения происходит по инициативе клиентской стороны. Переходы из одного состояния в другое понятны, и мы не будем останавливаться на их описании. Обратите внимание на то, что две приведенные диаграммы переходов соответствуют случаям, когда установление и закрытие ТСР-соединения происходит «в штатном режиме». Мы не рассматривали такие нетипичные ситуации, как, например, одновременные попытки закрыть соединение, предпринимаемые обеими сторонами. Если вас интересует описание подобных ситуаций и прочие нюансы, касающиеся протокола TCP, рекомендуем вам обратиться к дополнительным информационным ресурсам.
Итак, мы завершаем разговор о контроле потока и обнаружении ошибок в протоколе TCP. Другим важным вопросом, который нам необходимо изучить, является контроль перегрузки. В следующем разделе мы рассмотрим общие принципы контролирования перегрузки, а затем вновь вернемся к протоколу TCP для того, чтобы увидеть, каким образом изученные принципы применяются на практике.

Рис. 8.13Типичная последовательность состояний ТСР-сервера
Резюме
Стек протоколов TCP/IP включает 4 уровня: сетевой, Интернета, транспортный и прикладной. Протокол IP работает на уровне Интернета и поддерживает многие ЛВС - и ГВС-технологии, в том числе Ethernet, Token Ring, ретрансляцию кадров и ATM. IP не требуется устанавливать соединение, он адресует и маршрутизирует пакеты между узлами. Так как доставка пакетов не гарантируется, протокол IP ненадежен.
Протокол TCP, работающий на транспортном уровне, обеспечивает протоколу IP надежную доставку данных с обязательным установлением логического соединения. После установки связи TCP передает приложениям данные, используя уникальные номера портов. Альтернативой TCP считается протокол UDP — не требующая логического соединения служба дейтаграмм, не гарантирующая доставку макетов. Протокол UDP используется приложениями, которым не надо подтверждать получение данных.
8. Вопросы для самоконтроля.
1. Что такое тройное «рукопожатие»?
2. Что такое дуплексная передача данных?
3. Что такое максимальный размер сегмента?
4. Из чего состоит ТСР-соединение?
5. Опишите структуру ТСР-сегмента.
6. Что такое порядковый номер?
7. Что такое номер подтверждения?
8. Что такое общая квитанция?
9.Тесты для самоконтроля знаний.
1.Что такое тройное «рукопожатие»?
A) Процедуру, заключающуюся в передаче друг другу специальных сегментов, предназначенных для определения параметров обмена данными.
B) Процедуру
C) Заключающуюся в передаче друг другу специальных сегментов
D) Предназначенных для определения параметров
E) Предназначена для передачи данных
2.Что такое дуплексная передача данных?
A) Если на двух хостах выполняются соответственно процессы А и В данные могут передаваться только от процесса А к процессу В
B) Если на двух хостах выполняются соответственно процессы А и В данные могут передаваться только от процесса В к процессу А
C) Если на двух хостах выполняются соответственно процессы А и В данные могут одновременно передаваться как от процесса А к процессу В, так и от процесса В к процессу А)
D) Если на двух хостах выполняются соответственно процессы А и В данные вообще не могут передаваться
E) На двух хостах выполняются соответственно процессы А и В
3. Какой протокол использует интервалы ожидания и повторные передачи для решения проблемы потерянных сегментов)
A) IP
B) ТСР/IР
C)ТРС
D) ISO
E) TCP
4. Что позволяет передающей стороне обнаруживать потери пакетов до истечения интервала ожидания.
A) Дублирования подтверждений
B) Подтверждения данных
C) Данные
D) Дублирование
E) Все ответы верны
5. Механизм, позволяющий принимающей стороне индивидуально квитировать сегменты, нарушающие порядок следования
A) механизм дублирования подтверждений
B) механизм выборочного подтверждения
C) механизм подтверждений
D) таких механизмов нет
E) механизм следования
6. Какой сегмент заключается в IP-дейтаграмму и отправляется серверу.
A) TCP - сегмент
В) IP-сегмент
C) ISO - сегмент
D) SYN-сегмент
E) SPC - сегмент
7. Как называется переменная с помощью, которой протокол TCP обеспечивает контроль потока
A) окном
B) SYN
C) окном приема
D) контрольной
E) подтверждающей
8. Чтобы входной буфер не мог переполниться, необходимо соблюдать неравенство
A) LastByteRead < RcvBuffer.
B) Socket clientSocket = new Socket("hostname", portNumber)
C) clientSocket = new Socket
D) LastByteRead clientSocket = new Socket
E) LastByteRcvd - LastByteRead < RcvBuffer
9. Термин означающий, что вес каждого значения SampleRTT экспоненциально убывает с появлением новых значений.
A) дублирование
B) Дейтаграмма
C) общая квитанция
D) экспоненциальное
E) тройное рукопожатие
10. Чем ограничивается максимальный объем данных, который может быть извлечен из буфера и помещен в сегмент
A) тройным рукопожатием
B) максимальным размером сегмента
C) ТСР-соединением
D) порядковым номером
E) данными
11. Из чего состоит 'ГСР-сегмент
A) ТСР-соединения
B) порядкового номера
C) поля данных и нескольких полей заголовка)
D) данных
E) все ответы верны
12.Из скольких бит состоит поле флагов
A) 8 бит.
B) 2 бит.
C) 1 бит.
I)) 6 бит.
E) 4 бит.
13. На что указывает бит подтверждения (АСК)
A) на то что, значение, содержащееся в квитанции, является корректным.
B) На порядковый номер
C) На номер подтверждения
D) на квитанцию
E) нет верных ответов
14. Как называется механизм, в котором скорость передачи данных может быть принудительно снижена при наличии перегрузок в сети
А) механизм дублирования подтверждений
B) механизм выборочного подтверждения
C) механизм подтверждений
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |


