web-dev-qa-db-ja.com

telnetはraw tcp接続とどう違うのですか?

pythonスクリプトを使用してサーバーにコマンドを送信しようとしています。サーバー上でソケット接続が確立されているのがわかります。しかし、送信しているコマンドは、 (サーバーはソケットで読み取りを行います。)サーバーは現在telnetコマンドインタープリターをサポートしています。つまり、コマンドのアドレスとポートにtelnetすると、文字列コマンドの送信を開始できます。私の質問は、文字列の送信とは根本的に異なるものはありますか? telnetを使用するのではなく、tcpソケットを使用して、Twistedフレームワークとrawソケットの両方を使用しました。

22
Pradyot

Telnetは、通信チャネルに関する制御情報を渡す方法です。これは、ラインバッファリング、文字エコーなどを定義し、接続の開始時(およびまれに、セッション中)の一連のwill/wont/do/dontメッセージを通じて行われます。

それはおそらくあなたのサーバーのドキュメントが意味することではありません。代わりに、「Telnet」などのプログラムを使用してポートにTCPソケットを開き、サーバー上のコマンドインタープリターとやり取りできることを意味します。

Telnetプログラムが接続すると、通常、これらの制御メッセージをリッスンしてから実際に応答するため、Telnetプロトコルを実際に使用しないTCP /ソケット接続で機能し、単純な生のパイプに戻ります。サーバーはすべての文字エコー、行バッファリングなどを実行する必要があります。

したがってyourの場合、サーバーは生のTCPストリームをtelnetエスケープシーケンスなしで使用している可能性が高いため、違いはありません。

22
Brian White

Telnetはアプリケーションレイヤープロトコルであり、TCPはトランスポート層プロトコル。TelnetusesTCP=データを送信するために使用します。これは、 TelnetおよびTCP。

参照:OSIモデルウィキペディアページ

9
ecbrodie

Telnetの Wikipediaページ から

...ユーザーデータは、Telnet制御情報と共に帯域内に散在しています...

したがって、あなたの質問に答えるために、はい、Telnetはrawソケットとは異なります。

RFC 854 実装を試みたい場合、または既存のpythonクライアントを使用したい場合は telnetlib を使用できます。 。

4
simonc