Как telnet отличается от исходного соединения tcp
Я пытаюсь отправить команды на сервер через python script. Я вижу соединение сокета, установленное на сервере. Но команды, которые я отправляю, не похоже на это (сервер делает чтение в сокете).
Сервер в настоящее время поддерживает интерпретатор команд telnet. т.е.: вы telnet к адресу и порту команды, и вы можете начать отправку
Строковые команды.
Мой вопрос в том, есть ли что-то принципиально отличное от отправки строк по tcp-сокету, в отличие от использования telnet.
Я использовал как сырые сокеты, так и структуру Twisted.
Ответы
Ответ 1
Telnet - это способ передачи управляющей информации о канале связи. Он определяет буферизацию строк, эхо-символ и т.д. И выполняется через серию сообщений will/wont/do/dont при запуске соединения (и, в редких случаях, во время сеанса).
Возможно, это не то, что означает ваша серверная документация. Вместо этого это, вероятно, означает, что вы можете открыть сокет TCP в порт с помощью программы типа "Telnet" и взаимодействовать с командным интерпретатором на сервере.
Когда программа Telnet подключается, она обычно прослушивает эти управляющие сообщения до ответа в натуральной форме и поэтому будет работать с соединениями TCP/socket, которые фактически не используют протокол telnet, возвращаясь к простой исходной трубе. Сервер должен выполнять все эхо-сигналы, буферизацию строк и т.д.
Таким образом, в вашем случае сервер, скорее всего, использует необработанный поток TCP без каких-либо экранов эллета и, следовательно, нет никакой разницы.
Ответ 2
Имейте в виду, что Telnet - это протокол уровня приложения, а TCP - это протокол транспортного уровня. Telnet использует TCP для передачи данных. Это большое фундаментальное различие между Telnet и TCP.
Смотрите: Страница wikiipedia модели OSI
Ответ 3
На странице Wikipedia на telnet
... Пользовательские данные перемежаются внутри диапазона с информацией управления Telnet...
Итак, чтобы ответить на ваш вопрос, да, telnet отличается от сырого сокета.
RFC 854 описывает протокол telnet, если вы хотите попробовать его реализовать, или вы можете использовать telnetlib, если вы предпочитаете существующий клиент python.