Чем telnet отличается от необработанного tcp соединения


Я пытаюсь отправить команды на сервер с помощью скрипта python. Я вижу, что соединение с сокетом устанавливается на сервере. Но команды, которые я посылаю через, похоже, не проходят(сервер делает чтение на сокете). В настоящее время сервер поддерживает интерпретатор команд telnet. т. е.: вы телнете на командный адрес и порт, и вы можете начать отправку строковые команды. Мой вопрос заключается в том, есть ли что-то принципиально отличное от отправки строк через сокет tcp, как против использования telnet. Я использовал как необработанные гнезда, так и скрученный каркас.

3 18

3 ответа:

Телнет - это способ передачи управляющей информации о канале связи. Он определяет буферизацию строк, Эхо символов и т. д. и выполняется через серию сообщений will / wont / do/dont при запуске соединения (и, в редких случаях, во время сеанса).

Это, вероятно, не то, что означает ваша документация сервера. Вместо этого, вероятно, это означает, что вы можете открыть TCP-сокет для порта с помощью программы, такой как "Telnet", и взаимодействовать с интерпретатором команд на сервер.

Когда программа Telnet подключается, она обычно прослушивает эти управляющие сообщения, прежде чем ответить в натуре, и поэтому будет работать с соединениями TCP/socket, которые на самом деле не используют протокол telnet, возвращаясь к простому необработанному каналу. Сервер должен выполнять все Эхо символов, буферизацию строк и т. д.

Таким образом, в вашем случае сервер, скорее всего, использует необработанный поток TCP без escape-последовательностей telnet, и поэтому нет никакой разницы.

Имейте в виду, что Telnet-это протокол прикладного уровня, а TCP-протокол транспортного уровня. Telnet использует TCP для передачи данных. Это большая фундаментальная разница между Telnet и TCP.

Видишь: страница Википедии модели OSI

Со страницы Википедии в telnet

...Пользовательские данные перемежаются внутри полосы с управляющей информацией Telnet...

Итак, чтобы ответить на ваш вопрос, да, telnet действительно отличается от raw-сокета.

RFC 854 описывает протокол telnet, если вы хотите попробовать его реализовать, или вы можете использовать telnetlib, Если вы предпочитаете существующий клиент python.