telnet と netcat の違いは何ですか?

telnet と netcat の違いは何ですか?

telnetとの違いがわかる説明を探しています。とはnetcatどのような場合に使用すればよいですか?ではできてもできないことは何ですか?またその逆はどうですか?telnetnetcattelnetnetcat

インターネットから答えを得ようとしましたが、理解するのに役立ちませんでした。私が見つけたのはさまざまなコマンドだけでした。違いのあるユースケースの例を探しています。

誰かその違いを説明できますか?

答え1

注意: Telnet プログラムにはいくつかの種類があり、Netcat にもいくつかの種類があります。これらのプログラムには多少異なる機能がある可能性があります。

一般的に、telnetRFC 854「Telnet」プロトコルに特化しており、サーバーから送られてくる Telnet オプション ネゴシエーション コマンドとして特定のバイトを認識し、適切に応答し、各接続の開始時に独自のバイトを送信します。(たとえば、$TERM 値とウィンドウ サイズを行×列でサーバーに報告します。) また、Unix LF 改行を NVT CR+LF バージョンに変換し、Ctrl+] を「エスケープ」キーとして認識します。

これは、telnet転送されたデータを壊してしまうため、生の 8 ビット TCP 接続には適していません。また、一般的にバッチ使用には適していません。ただし、FTP や SMTP などの ASCII ベースのプロトコルを対話的に調べるには使用できます。多くの Telnet クライアントは、非標準ポートに接続する場合、ネゴシエーションを開始しないため、機能します (ただし、応答はします)。

Netcatはncそのようなことはしません。主に8 ビットのクリーンな TCP クライアント。Telnet と同様に ASCII プロトコルで使用できますが、送信されるバイトを変更しないため、バッチ データ転送用の TCP への「パイプ」として使用することもできます。

Netcat は多くの場合、非 TCP トランスポート (UDP、場合によっては SCTP、ローカル Unix ソケット) も提供しますが、Telnet クライアントは TCP のみです。

一方、netcat はプロトコルを理解しません。を使用して実際の Telnet サーバーに接続しようとしてもnc、まったくうまく機能しません。サーバーは使用している端末の種類を認識できず、ウィンドウのサイズを変更できないなどです。


  • ポート 23 で Telnet サーバーに接続する場合は、 を使用しますtelnet
  • のようなものが必要な場合cat、TCP の場合ncは または を使用しますsocat
  • テキスト以外のデータを送受信する必要がある場合は、nc/ を使用しsocat、 を避けてくださいtelnet
  • SMTP、IRC、IMAP、または HTTP コマンドを手動で入力する場合は、どちらのツールも問題なく動作します。(実際、telnet一部のサーバーで必要な行末を CR+LF に変換するため、少しだけ優れている可能性があります。)

関連情報