Тайм-ауты и повторные передачи TCP


Отправка команды от клиента к серверу с использованием линейного режима Telnet



Рисунок 26.14 Отправка команды от клиента к серверу с использованием линейного режима Telnet.




Если мы сравним это с той же самой командой, вводимой в Rlogin (рисунок 19.2), то увидим, что линейный режим Telnetа использует два сегмента (один с данными и один для подтверждения, что в целом составляет 86 байт, включая IP и TCP заголовки), тогда как Rlogin использует 15 сегментов (5 с введенными данными, 5 с отраженными эхом данными, 5 с подтверждениями, всего 611 байт). Нетрудно догадаться, в чью пользу это сравнение!

Что если на сервере мы запустим приложение, которое требует использовать режим единственного символа? (Например, редактор vi.) В этом случае будет происходить следующее.

  1. Когда приложение стартует на сервере и изменяет режим своего псевдотерминала, Telnet сервер уведомляется о том, что требуется режим единственного символа. Сервер посылает WILL ECHO клиенту вместе с подопцией линейного режима, которая сообщает клиенту о том, что не нужно составлять полные строки, а вместо этого необходимо посылать один символ за один раз.
  2. Клиент отвечает DO ECHO и подтверждает подопцию линейного режима.
  3. Приложение запускается на сервере. Каждый символ, который мы печатаем, отправляется серверу сам по себе (естественно используется алгоритм Нагла), при этом сервер не требует отражения эхом.
  4. Когда приложение завершает работу и восстанавливает режим псевдотерминала, об этом уведомляется Telnet сервер. Сервер отправляет WONT ECHO клиенту вместе с подопцией линейного режима, которая сообщает клиенту о необходимости снова составлять полные строки.
  5. Клиент отвечает DONT ECHO и подтверждает подопцию линейного режима.

Отличие этого сценария от того, который реализуется при вводе пароля, показывает, что функция отражения эхом и символ за один раз, а также строка за один раз, это независимые характеристики. Когда мы вводим пароль, эхо должно быть отключено, при этом активизирован режим строка за один раз. Для полноэкранных приложений, таких как редакторы, эхо отключается и требуется режим символ за один раз.

На рисунке 26.15 показаны различные режимы, которые мы видели для Telnet и Rlogin.

Приложение Клиент посылает Эхо клиента? Пример
символ за раз строка за раз
Rlogin · нет
Telnet, символ за раз · нет
Telnet, линейный режим · да обычные команды
Telnet, линейный режим · нет ввод пароля
Telnet, линейный режим · нет редактор vi









Начало  Назад  Вперед