# Telnet

Telnet (abreviação do inglês para teletype network) é um protocolo de rede na Internet ou redes locais para proporcionar uma facilidade de comunicação baseada em texto interativo bidirecional usando uma conexão de terminal virtual. Os dados do usuário são intercalados em banda com informações de controle Telnet em um byte de conexão 8-bit de dados orientado sobre o Transmission Control Protocol (TCP).
O Telnet foi desenvolvido em 1969 com a chegada do RFC 15, prorrogado no RFC 854, e padronizado como Internet Engineering Task Force (IETF) Internet STD Padrão 8, um dos primeiros padrões da Internet.

## Definição

O protocolo Telnet é um protocolo standard de Internet que permite a interface de terminais e de aplicações através da Internet. Este protocolo fornece as regras básicas para permitir ligar um cliente (sistema composto de uma afixação e um teclado) a um intérprete de comando (do lado do servidor).
O Telnet existe há mais de 40 anos, muito antes de aparecer a Internet. Este sistema de transmissão de dados foi inventado pelas Forças Armadas Americanas para transmissão de dados entre bases militares. Foi disponibilizado ao público em 1977, tendo sido os radioamadores os primeiros a aproveitá-lo.
Portanto, pode-se dizer que a Internet trabalha por cima do Telnet, servindo-se do seu sistema para funcionar. A transmissão de dados pelo Telnet utiliza software específico que os codifica, permitindo utilizar centenas de portas por nós definidas e reencaminhá-las para o PC que pretendemos. Se tivermos uma rede interna com vários PC's instalados, utilizando um router, abrimos uma porta para cada PC e, com o mesmo IP, os dados fluem direccionados e reencaminhados simultaneamente, sem qualquer problema. O utilizador que recebe dados combina com o seu correspondente a porta de passagem para o sistema funcionar. A máquina que envia os dados fá-lo em pacotes. Informa o correspondente que tem dados. Este, por sua vez, dá o OK para a transmissão. O pacote é enviado com a informação do número de bits que este tem. Só depois do correspondente ter informado que recebeu os bits todos, é que pede o segundo pacote. Se por qualquer motivo informa que os bits não chegaram todos, o envio do pacote é repetido. Muita coisa fica ainda por dizer sobre este sistema. O protocolo baseia-se numa conexão TCP para enviar dados em formato ASCII codificado em 8 bits entre os quais se intercalam sequências de controle para o Telnet. Fornece assim um sistema orientado para a comunicação, bidireccional (half-duplex), codificado em 8 bits fácil de aplicar. Com essa conexão é possível o acesso remoto para qualquer máquina ou equipamento que esteja sendo executado em modo servidor.

## Conceitos fundamentais

O protocolo Telnet assenta em três conceitos fundamentais que serão explicados a seguir:
O paradigma do terminal rede virtual (NVT, Network Virtual Terminal); O princípio de opções negociadas; As regras de negociação.

### Terminal virtual

O Telnet consiste em criar abstrações no terminal, fazendo com que qualquer cliente ou servidor se comunique com outro host sem conhecer as suas características.
A comunicação de NVT, comumente chamada de Terminal Rede Virtual, fornece uma base padrão de:
* Caracteres de 7 bits ASCII
* Três caracteres de controle
* Cinco caracteres de controle opcionais
* Um jogo de sinais de controle básico

### Opções negociadas

As opções negociadas permitem que alguns terminais proponham serviços adicionais que não são definidos nas especificações básicas. Esses serviços adicionais permitem a utilização de funções avançadas em forma de opções, fazendo iniciar os pedidos para solicitar a autorização ao sistema distante a ativação desse serviço ou não. Qualquer um dos lados da rede pode emitir o sinal e logo em seguida a outra deve responder se aceita ou não a liberação da opção requerida. Caso o pedido seja para desativar a opção, quem recebe a mensagem não deve recusar a mensagem, para ser compatível com o modelo NVT.

### Regras de negociação

As regras de negociação de opções podem evitar um caso de bloqueio do pedido, pois os pedidos só devem ser emitidos quando acontece a mudança de um modo. Caso exista um envio para mudança esse deve ser inserido no fluxo de dados apenas no lugar onde tem efeito, o receptor da mensagem só deve adotá-lo quando não se encontrar no mesmo modo pedido.

## Especificações

Este protocolo é um protocolo básico, no qual se apoiam outros protocolos da sequência TCP/IP (FTP, SMTP, POP3,…). As especificações de Telnet não mencionam autenticação porque o Telnet está totalmente separado das aplicações que o utilizam (o protocolo FTP define uma sequência de autenticação acima do Telnet). Além disso, o protocolo Telnet é um protocolo de transferência de dados não seguro, o que quer dizer que os dados que veicula circulam às claras na rede (de maneira não codificada). Quando o protocolo Telnet é utilizado para ligar um hóspede distante à máquina na qual é aplicado como servidor, este protocolo é atribuído à porta 23.
Se fizermos uma exceção às opções e às regras de negociação associadas, as especificações do protocolo Telnet são básicas. A transmissão de dados através de Telnet consiste unicamente em transmitir bytes no fluxo TCP (o protocolo Telnet precisa que os dados devem, por default - isto é, se nenhuma opção precisar o contrário - ser agrupados num tampão antes de serem enviados. Mais concretamente, isto significa que por default os dados são enviados linha por linha). Quando o byte 255 é transmitido, o próximo deve ser interpretado como um comando. O byte 255 é assim nomeado IAC (Interpret As Command, traduza-se "interpretar como um comando"). Os comandos são descritos posteriormente.
As especificações básicas do protocolo Telnet estão disponíveis no RFC 854, enquanto as numerosas opções são descritas nos RFC 855 a 861.