Кратко

  • RFC 1205 описал передачу потока рабочей станции IBM 5250 по Telnet. Клиент и сервер должны были согласовать Binary, End-of-Record и Terminal-Type, а затем читать записи в формате, перенесённом из прежней технологии IBM.
  • В примере Cancel Invite сервер останавливает обычный пользовательский ввод, клиент подтверждает команду и ждёт нового запроса на чтение. Сценарий System Request показывает сохранение экрана, меню, ответ, восстановление экрана и возврат к прежнему вводу.

Клавиатура оставалась перед человеком, очередь назначал хост

В RFC 1205 есть простое правило, которое легко пропустить среди шестнадцатеричных таблиц. Сервер отправляет Cancel Invite; клиент отвечает той же операцией и больше не посылает пользовательские данные, пока сервер снова не «пригласит» рабочую станцию командой чтения. Клавиатура физически никуда не девается. Внутри сеанса вводом распоряжается хост.

Развёрнутый пример System Request раскрывает смысл запрета. Пользователь нажимает соответствующую клавишу, клиент посылает установленный бит. Хост отменяет текущий режим ввода, просит сохранить изображение экрана и показывает меню. Ответ на меню принимается через запрошенную самим хостом операцию Put/Get. Затем прежний экран восстанавливается и новый Invite возвращает станцию к работе. Связь за это время продолжает существовать. Меняется порядок, по которому приложение принимает данные.

Документ предназначался для разработчиков клиентов, которые хотели имитировать IBM 5250 для хостов в Интернете. Доставить байты к машине было недостаточно для работающего рабочего места. Хосту требовалось знать тип терминала, понимать границу записи и отличать обычный ввод от системной клавиши или команды экрана. Все эти значения жили поверх транспортного соединения.

Три старые опции вместо нового переключателя

IBM не вводила специальную опцию Telnet для режима 5250. RFC требовал согласия обеих сторон как минимум на Binary, End-of-Record и Terminal-Type. В образце диалога сервер спрашивает тип устройства, клиент отвечает IBM-5251-11; затем стороны подтверждают маркеры окончания записи и двоичную передачу в обоих направлениях. Это договорённость о способе обмена, а не о личности пользователя. До значения каждого поля на экране она тоже не дотягивается.

В перечне устройств есть экраны 24×80 и 27×132, цветные и монохромные модели, а также поддержка двухбайтовых символов. Тип терминала был рабочим параметром: от него зависело, как хост строил экран. Отдельный пример Query Device показывает запрос свойств устройства и ответ клиента. Сетевой адрес не расскажет приложению, сколько строк и столбцов у дисплея.

Дальше Telnet несёт запись 5250. Перед данными рабочей станции находится заголовок с постоянными шестью октетами и переменной частью, тогда состоявшей из четырёх октетов. Длина логической записи включает заголовок. Её считают до удвоения специальных байтов IAC средствами Telnet и не прибавляют завершающий IAC EOR. Ошибка сместит начало следующей экранной команды. Разделение потока на сегменты TCP здесь не помогает: границы записи задаёт протокол приложения.

Старый формат SNA поехал по новому пути

Заголовок появился раньше этого RFC в 5250 Display Station Pass-Through. IBM использовала ту схему с AS/400, System/36 и System/38 в сети SNA. Значение General Data Stream перешло в новую оболочку. Хост мог сохранить знакомый способ работы со станцией, поручив Telnet доставку через другую сеть. Автор нового клиента должен был освоить унаследованную структуру записи.

Для полного набора команд RFC отсылает к IBM 5250 Functions Reference Manual. Пятый раздел самой публикации исправляет ошибки имевшейся тогда редакции руководства и описывает новые функции. Один пример меняет ошибочно напечатанное шестнадцатеричное значение Insert Cursor; другой уточняет допустимые координаты строк и столбцов. Приложение, которое всё верно согласовало по Telnet, всё равно может испортить изображение или принять ввод не в том поле из-за неверной команды экрана.

Опубликованный сетевой интерфейс открывал дорогу разработчику клиента. Полный язык дисплея оставался в отдельном руководстве IBM. Такая конструкция позволяла переносить старую модель работы, не перестраивая хост. Она также делала точность внешней документации решающей для совместимости: три удачных ответа на Telnet-опции не заменяли знания команд 5250.

Как поймать ошибку в работающем соединении

Успешные ответы на три опции Telnet ещё не доказывали, что станция сможет закончить рабочий день. Клиенту приходилось считать длину записи до экранирования IAC, распознавать экранные команды по руководству IBM и менять право на обычный ввод после команды хоста. Ошибка в любом из этих мест оставляла сетевое соединение живым, но могла испортить изображение или остановить диалог. Поэтому показателем совместимости становилась последовательность действий на экране, а не открытый порт.

RFC 1205 даёт схемы и примеры обмена, а не журнал эксплуатации. Датированная запись пакетов вместе с состояниями экрана показала бы, как конкретная программа прошла эти проверки. Исторический документ уже указывает, где лежала самая трудная часть переноса: новая сеть доставляла записи, а смысл записей и порядок ввода задавались прежней системой IBM.

Источник