Estou procurando uma explicação onde possa encontrar a diferença entre telnet
e netcat
. Em quais casos devo usar telnet
e netcat
? O que um telnet
pode fazer que netcat
não pode fazer e vice-versa?
Tentei obter a resposta na Internet, mas não me ajudou a entender. Tudo que consegui encontrar foram os diferentes cmds. Estou procurando exemplos de casos de uso com diferenças.
Alguém pode explicar a diferença com explicação?
Responder1
Nota: Existem vários programas Telnet diferentes, bem como diversas variantes do Netcat. Eles podem ter recursos um pouco diferentes.
Em geral, telnet
fala especificamente o protocolo "Telnet" RFC 854 - ele reconhece certos bytes como comandos de negociação de opções Telnet vindos do servidor, responderá a eles adequadamente e enviará os seus próprios no início de cada conexão. (Por exemplo, ele relata o valor $TERM e o tamanho da janela em linhas×colunas para o servidor.) Ele também traduzirá quebras de linha Unix LF para a versão NVT CR+LF e reconhecerá Ctrl+] como uma tecla de "escape".
Isso torna telnet
inadequado para conexões TCP brutas de 8 bits, pois distorceria os dados transferidos e não funciona bem para uso em lote em geral. No entanto, ele ainda pode ser usado para explorar interativamente protocolos baseados em ASCII, como FTP ou SMTP – funciona porque muitos clientes Telnet não iniciam a negociação se estiverem conectados a uma porta fora do padrão (mas ainda assim responderão a ela).
Netcat nc
não faz nada parecido – éprincipalmenteum cliente TCP limpo de 8 bits. Ele pode ser usado com protocolos ASCII assim como o telnet, mas também pode e é frequentemente usado como um "pipe" no TCP para transferência de dados em lote, porque não alterará nenhum byte enviado por ele.
O Netcat muitas vezes também oferece transportes não-TCP (UDP, às vezes SCTP, soquetes Unix locais), enquanto os clientes Telnet são apenas TCP.
Por outro lado, o netcat não entende nenhum protocolo – se você tentasse se conectar a um servidor Telnet real usando nc
, não funcionaria muito bem; o servidor não saberia que tipo de terminal você está usando, a janela não poderia ser redimensionada, etc.
- Se você estiver se conectando a um servidor Telnet na porta 23, use
telnet
. - Se você precisar de algo como
cat
mas para TCP, usenc
ou até mesmosocat
. - Se você precisar enviar/receber dados não textuais, use
nc
/socat
– evitetelnet
. - Se você quiser digitar manualmente comandos SMTP ou IRC ou IMAP ou HTTP, ambas as ferramentas funcionarão bem. (Na verdade,
telnet
pode funcionar um pouco melhor, pois converte finais de linha em CR+LF, o que alguns desses servidores também exigem.)