<<
>>

Транзакционный TCP

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

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

1. Клиент посылает пакет SYN для установки соединения.

2.

Сервер посылает пакет АСК для подтверждения приема SYN.

3. Клиент выполняет «тройное рукопожатие».

4. Клиент посылает, собственно, свой запрос.

5. Клиент посылает пакет FIN, сигнализирующий об окончании передачи.

6. Сервер подтверждает запрос и FIN.

7. Сервер посылает ответ клиенту.

8. Сервер посылает пакет FIN, сообщающий о том, что он также закончил передачу.

9. Клиент подтверждает FIN сервера.

И это в лучшем случае! Если же обстоятельства складываются не очень удачно, то запрос и FIN клиента подтверждаются раздельно. Раздельно могут подтверждаться и ответ и FIN сервера.

Само собой, возникает вопрос: нельзя ли объединить эффективность выполнения RPC с помощью UDP (всего два сообщения) с надежностью, которую гарантирует TCP? Ответ: отчасти. Можно попытаться применить экспериментальный вариант протокола TCP, называемый транзакционным TCP (Т/ТСР, Transactional TCP).

Протокол Т/ТСР описан в RFC 1379 и 1644.

Центральная идея протокола состоит в том, чтобы немного изменить стандартную последовательность действий, выполняемых при установке соединения, и предоставить возможность передачи данных непосредственно во время установки соединения. Работа Т/ТСР показана на рис. 6.33, б. В первом пакете клиента содержится бит SYN, собственно запрос и FIN. В сущности, клиент говорит: «Я хочу установить соединение, вот данные для передачи, и на этом я считаю свою миссию выполненной».

Получив запрос, сервер ищет или вычисляет содержимое ответа и выбирает способ ответа. Если ответ укладывается в один пакет, он будет послан так, как показано на рис. 6.33, б, то есть сервер как бы говорит: «Подтверждаю получение

вашего FIN, вот мой ответ на запрос, и на этом я считаю свою миссию выполненной». Клиент подтверждает FIN сервера, и на этом работа протокола заканчивается. Обратите внимание: на весь процесс потребовалось всего три сообщения.

Рис. 6.33. Удаленный вызов процедуры с помощью обычногоТСР (а); удаленный вызов процедуры с помощью ТДСР (б)

Однако если ответ не укладывается в один пакет, сервер может и не устанавливать бит FIN в первом же пакете. Он посылает столько пакетов, сколько нужно, прежде чем закрыть соединение в данном направлении.

Стоит отметить, что кроме Т/ТСР известны и другие вариации на тему TCP. Одним из таких протоколов является протокол передачи с контролем потока (SCTP, Stream Control Transmission Protocol). Среди его свойств можно выделить сохранение границ сообщений, несколько режимов доставки (например, неупорядоченная), множественную адресацию (дублирование адресатов), селективные подтверждения (Stewart и Metz, 2001). Тем не менее, когда кто-то предлагает улучшения того, что и так прекрасно работает в течение долгих лет, обычно возникают споры между сторонниками двух диаметрально противоположных принципов: «Все для расширения функциональности» и «Не трогать то, что пока еще не слЬмалось».

<< | >>
Источник: Э. ТАНЕНБАУМ. КОМПЬЮТЕРНЫЕ СЕТИ 4-Е ИЗДАНИЕ. 2003

Еще по теме Транзакционный TCP:

  1. Л.О. Доліненко, В.О. Доліненко, С.О. Сарновська. Цивільне право України, 2006
  2. ЦИВІЛЬНЕ ПРАВО УКРАЇНИ
  3. ПЕРЕДМОВА
  4. Частина І ПРОГРАМА КУРСУ «ЦИВІЛЬНЕ ПРАВО УКРАЇНИ»
  5. Розділ І. Загальні положення цивільного права
  6. Тема 1. Поняття цивільного права. Предмет та метод, система цивільного права. Функції та принципи цивільного права
  7. Тема 2. Цивільне законодавство України
  8. Тема 3. Поняття, елементи та види цивільних правовідносин
  9. Тема 4. Здійснення цивільних прав і виконання обов’язків
  10. Тема 5. Захист цивільних прав та інтересів
  11. Тема 6. Об’єкти цивільних прав
  12. Тема 7.ФІЗИЧНІ особи як суб’єкти цивільного права