Команды и управляющая информация
Протокол TELNET позволяет клиенту и серверу, кроме символьных данных, обмениваться командами или управляющей информацией. Поскольку вся связь между клиентом и сервером осуществляется через единственное соединение TCP, протокол предусматривает, что команды или управляющая информация должны быть закодированы, чтобы получатель мог отличить их от обычных данных. Поэтому значительная часть спецификации протокола посвящена описанию того, как должен кодировать команду отправитель и как ее должен распознавать получатель. семейные истории из жизни
Терминалы, окна и файлы
Протокол TELNET определяет требования к средствам связи между терминалом пользователя и удаленной службой. В спецификации протокола подразумевается, что терминал состоит из клавиатуры, на которой пользователь может вводить символы, и экрана монитора, способного отображать сразу несколько строк текста.
На практике пользователь может вызвать клиентскую программу и открыть в ней входной файл вместо клавиатуры или выходной файл вместо дисплея. Иным образом, пользователь может вызвать клиентскую программу из окна на растровом дисплее. Хотя для реализации таких вариантов требуется внести в код небольшие изменения, проще будет понять и сам протокол, и его реализацию, если предположить, что каждый из пользователей, вызывающих клиентскую программу TELNET, имеет обычный терминал.
Клиентское программное обеспечение TELNET предназначено для обеспечения интерактивной связи с терминалом пользователя.
Необходимость параллельной организации работы
Клиент TELNET фактически передает между терминалом пользователя и удаленной службой не блоки данных, а отдельные символы. С одной стороны, в нем в процессе взаимодействия с терминалом пользователя применяются функции локальной операционной системы. С другой стороны, в клиенте TELNET в процессе обмена данными с удаленной службой используется соединение TCP. Этот принцип проиллюстрирован на рис. 26.1. Как показано на этом рисунке, клиент должен передавать символы с клавиатуры терминала пользователя в удаленную службу, а также передавать символы из удаленной службы на дисплей терминала пользователя.

Для обеспечения дуплексной связи между терминалом пользователя и удаленной службой клиент TELNET должен выполнять одновременно две задачи:
- считывать символы, введенные пользователем с клавиатуры, и передавать их через соединение TCP в удаленную службу;
- считывать символы, поступающие из соединения TCP, и отображать их на экране терминала пользователя.
Поскольку удаленная служба может в любой момент вывести выходную информацию, а пользователь может в любое время ввести символы на клавиатуре, клиентская программа не имеет информации о том, какой источник данных первым перейдет в состояние готовности к вводу/выводу. Поэтому клиентская программа не может заблокироваться на неопределенно долгое время, ожидая ввода из одного источника, но не проверяя при этом ввода из другого. Иными словами, клиентская программа должна быть способна передавать данные одновременно в обоих направлениях.