web-dev-qa-db-ja.com

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

telnetnetcatの違いを見つけることができる説明を探しています。どの場合は、telnetとnetcatを使用する必要があります。 Telnetができること、そのnetcatができないこと、およびその逆。

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

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

ありがとう!

5
rbashish

注:いくつかの異なるTelnetプログラムと、いくつかの異なるNetcatバリアントがあります。機能が多少異なる場合があります。

一般に、telnetは特にRFC 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はプロトコルを理解していません。ncを使用して実際のTelnetサーバーに接続しようとすると、まったく機能しません。サーバーは、使用している端末のタイプを認識できません。ウィンドウのサイズを変更できませんでした。


  • ポート23でTelnetサーバーに接続している場合は、telnetを使用します。
  • catのようなものが必要だが、TCPの場合は、ncまたはsocatを使用します。
  • テキスト以外のデータを送受信する必要がある場合は、nc/socatを使用してください。telnetは使用しないでください。
  • SMTPまたはIRCまたはIMAPまたはHTTPコマンドを手動で入力する場合、両方のツールが正常に動作します。 (実際、telnetは行末をCR + LFに変換するため、このようなサーバーでも必要となるため、わずかに優れています。)
7
user1686