Ich suche nach einer Erklärung, wo ich den Unterschied zwischen telnet
und finden kann netcat
. In welchen Fällen sollte ich telnet
und verwenden netcat
? Was telnet
kann ein , was kann ein , was netcat
nicht kann und umgekehrt?
Ich habe versucht, die Antwort aus dem Internet zu bekommen, aber es hilft mir nicht, es zu verstehen. Ich konnte nur die unterschiedlichen Befehle finden. Ich suche nach Anwendungsbeispielen mit Unterschieden.
Kann jemand den Unterschied anhand einer Erklärung erläutern?
Antwort1
Hinweis: Es gibt mehrere verschiedene Telnet-Programme sowie mehrere verschiedene Netcat-Varianten. Sie verfügen möglicherweise über etwas unterschiedliche Funktionen.
Im Allgemeinen telnet
spricht es speziell das RFC 854-Protokoll „Telnet“ – es erkennt bestimmte Bytes als vom Server kommende Telnet-Optionsverhandlungsbefehle, reagiert entsprechend darauf und sendet seine eigenen zu Beginn jeder Verbindung. (Zum Beispiel meldet es dem Server den $TERM-Wert und die Fenstergröße in Zeilen×Spalten.) Es übersetzt auch Unix-LF-Zeilenumbrüche in die NVT-CR+LF-Version und erkennt Strg+] als „Escape“-Taste.
Dies macht es telnet
für reine 8-Bit-TCP-Verbindungen ungeeignet, da es die übertragenen Daten verstümmeln würde, und es funktioniert im Allgemeinen nicht gut für die Stapelverarbeitung. Es kann jedoch weiterhin verwendet werden, um interaktiv in ASCII-basierten Protokollen wie FTP oder SMTP herumzustöbern – es funktioniert, weil viele Telnet-Clients keine Verhandlungen einleiten, wenn sie eine Verbindung zu einem nicht standardmäßigen Port herstellen (aber trotzdem darauf reagieren).
Netcat nc
macht nichts dergleichen – es istin erster Linieein sauberer 8-Bit-TCP-Client. Er kann wie Telnet mit ASCII-Protokollen verwendet werden, kann aber auch als „Pipe“ in TCP für die Stapeldatenübertragung verwendet werden (und wird dies auch oft), da er kein durch ihn gesendetes Byte verändert.
Netcat bietet häufig auch Nicht-TCP-Transporte an (UDP, manchmal SCTP, lokale Unix-Sockets), während Telnet-Clients nur TCP unterstützen.
Andererseits versteht netcat keine Protokolle – wenn Sie versuchen würden, über eine Verbindung zu einem echten Telnet-Server herzustellen nc
, würde dies überhaupt nicht gut funktionieren; der Server wüsste nicht, welchen Terminaltyp Sie verwenden, die Fenstergröße ließe sich nicht ändern usw.
- Wenn Sie eine Verbindung zu einem Telnet-Server auf Port 23 herstellen, verwenden Sie
telnet
. - Wenn Sie so etwas wie
cat
aber für TCP benötigen, verwenden Sienc
oder sogarsocat
. - Wenn Sie andere Daten als Text senden/empfangen müssen, verwenden Sie
nc
/socat
– vermeiden Sietelnet
. - Wenn Sie SMTP-, IRC-, IMAP- oder HTTP-Befehle manuell eingeben möchten, funktionieren beide Tools einwandfrei. (Tatsächlich
telnet
könnte es sogar etwas besser funktionieren, da es Zeilenenden in CR+LF umwandelt, was einige dieser Server ebenfalls erfordern.)