Кратко
- RFC 1043 в 1988 году описал реализацию опции TELNET Data Entry Terminal в DODIIS. По объяснению авторов, одна клавиша при удалённом эхе могла вызвать пакет к хосту и второй пакет обратно.
- DET позволял редактировать открытые поля бланка на терминале. Приложение и терминал согласовывали общие функции, передавали очередь через
GO-AHEADи могли возвращать только «изменённые» поля; к ним относились и поля, заранее помеченные приложением.
Одна буква, два рейса
Начало RFC 1043 рисует легко узнаваемую растрату. Пользователь нажимает клавишу, и символ летит к хосту в дейтаграмме вместе с заголовками TCP/IP. Хост посылает сравнимую дейтаграмму обратно для отображения символа. Defense Intelligence Agency разрабатывало тогда полноэкранный доступ к приложениям через пакетную сеть. Документ сообщал об уже созданных реализациях DET на IAS, MVS, OS86 и UNIX, а работа над VM и VMS продолжалась. Компьютеры были разными. Человеку перед ними требовалась одна понятная форма, а не переписка с далёким сервером по одной букве.
Сама идея Data Entry Terminal появилась раньше, в RFC 732. Задача RFC 1043 возникла после её самостоятельных реализаций в разных подразделениях DODIIS: разработчики опасались, что версии не смогут взаимодействовать. Бланк, экономящий трафик только в своей лаборатории, быстро превращает выигрыш в обращения к службе поддержки. Поэтому документ определил общий минимум, переговоры о дополнительных функциях и порядок, в котором стороны уступают друг другу слово.
Представленный терминал работал как полудуплексное устройство для форм. На прямоугольном экране были защищённые данные и свободные поля, доступные для правки с локальной клавиатуры. Функциональные клавиши и выбор поля добавляли варианты ответа. Стандартный экран имел 80 знаков в строке и 24 строки; пользовательские хосты должны были поддерживать страницы от 24 до 48 строк. Приложение размещало поля, задав их позицию, размер, атрибуты и содержимое. Когда форма была готова, оно отправляло GO-AHEAD, открывая клавиатуру. Пользователь заполнял бланк или нажимал разрешённую кнопку; терминал возвращал данные и собственный GO-AHEAD. Очередь на работу с курсором переходила из рук в руки.
Вход в этот режим начинался с согласия. DET получил номер опции TELNET 20 и требовал переговоров в обоих направлениях через DO и WILL. Если стороны не сходились, исходное состояние WONT DET -- DONT DET оставляло соединение обычным сетевым виртуальным терминалом. При переходе в DET следовало отвергнуть или закончить конфликтующие опции Echo, Suppress Go-Ahead и Binary. Старый посимвольный эхоповтор не должен перекрикивать новый порядок передачи очереди.
Согласие на DET ещё не открывало все его дополнительные возможности. Четыре подкоманды facilities сообщали о редактировании, стирании, передаче и форматировании. Терминал объявлял, что умеет, приложение — что хочет. Работало логическое пересечение их битовых карт. Для яркости отображения выбирался меньший предложенный уровень. Необязательную функцию использовали лишь после согласования, а позже любая сторона могла её отключить. Зарезервированные биты передавались нулями, чтобы будущее расширение случайно не считалось принятым.
RFC даже требовал помнить инициатора переговоров: две чрезмерно вежливые машины способны бесконечно отвечать друг другу.
На обратном пути становилась видна экономия. Приложение могло запросить весь экран, только незащищённые поля либо только изменённые с помощью TRANSMIT-SCREEN, TRANSMIT-UNPROTECTED и TRANSMIT-MODIFIED. Без явной просьбы уже согласованные атрибуты Modified и Protection задавали по умолчанию самый маленький допустимый ответ. Экран оставался перед пользователем, пока приложение меняло нужные части для следующего шага. Работа пальцев происходила рядом с клавиатурой, а поля отправлялись тогда, когда форма была готова.
В слове «изменённые» скрывалась ловушка. TRANSMIT-MODIFIED должен был возвращать поля с атрибутом Modified наряду с теми, которые человек действительно редактировал. Попавшее в ответ поле могло отражать замысел автора формы, а не движение пальца. Чтобы рассказывать по записи о действиях пользователя, серверу следовало сначала понимать правила бланка. В RFC это замечание выделено предупреждением — забота о человеке, которому позже предстоит читать запутанный журнал.
Минимального набора DET-команд, доступных без дальнейших переговоров, для форм DODIIS не хватало. Пользовательские хосты должны были поддерживать дополнительные подкоманды и атрибуты оборудования или несложной программной эмуляции; серверные — функции, нужные приложениям. Таблица распределяла рекомендуемые направления отправки и приёма. Совместимость строилась на явном договоре между неодинаковыми устройствами.
RFC 1043 заменил шумную вереницу эхопакетов общей формой. Сначала стороны выясняли возможности друг друга. Потом человек правил поля у себя и терминал возвращал подходящий набор данных. Сеть перестала ездить за каждой буквой, потому что два компьютера договорились о целом бланке.
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров





