O Protocolo Telnet

O que é o protocolo Telnet

O protocolo Telnet é um protocolo padrão da Internet que permite obter uma interface de terminais e aplicações pela Internet. Este protocolo fornece as regras básicas para ligar um cliente (sistema composto de uma exibição e um teclado) a um intérprete de comando (servidor).

O protocolo Telnet baseia-se em uma conexão TCP para enviar dados em formato ASCII codificados em 8 bits entre os quais se intercalam sequências de controle Telnet. Ele fornece, assim, um sistema orientado para a comunicação, bidirecional (half-duplex), codificado em 8 bits, fácil de aplicar. Ele é construído considerando três conceitos fundamentais: o paradigma do Terminal de Rede Virtual (NVT - Network Virtual Terminal), o princípio de opções negociadas e as regras de negociação.

Este é um protocolo básico, no qual outros protocolos da sequência TCP/IP (FTP, SMTP, POP3, etc.) se apoiam. As especificações do Telnet não mencionam a autenticação porque ele está totalmente separado dos aplicativos que o utilizam (o protocolo FTP define uma sequência de autenticação acima do Telnet). Além disso, o Telnet é um protocolo de transferência de dados sem proteção, o que quer dizer que os dados circulam abertamente na rede, ou seja, eles não são criptografados. Quando o protocolo Telnet é utilizado para ligar um hóspede distante a uma máquina que serve como servidor, este protocolo é atribuído à porta 23.

Fora as opções e as regras de negociação associadas, as especificações do protocolo Telnet são básicas. A transmissão de dados pelo protocolo Telnet consiste apenas em transmitir os bytes no fluxo TCP (de qualquer maneira, o protocolo Telnet especifica que os dados devem, por padrão, ser reunidos num tampão antes de serem enviados, ou seja, eles devem ser enviados linha por linha). Quando o byte 255 é transmitido, o byte seguinte deve ser interpretado como um comando. O byte 255 é chamado de IAC (Interpret As Command - Interprete como um Comando).

As especificações básicas do protocolo Telnet estão disponíveis no RFC 854, enquanto que as numerosas opções são descritas nos RFC 855 a 861:

RFC referente ao Telnet
RFC 854 Especificações originais do protocolo Telnet
RFC 855 Especificações das opções do Telnet
RFC 856 Transmissão binária no Telnet
RFC 857 Opção Echo do Telnet
RFC 858 Telnet suprimir opção 'ir em frente' ou 'continuar'
RFC 859 Opção de status do Telnet
RFC 860 Opção de sincronização no Telnet
RFC 861 Opção Telnet extendida - lista de opções

Como usar o protocolo Telnet

Como funciona o terminal virtual

No início da Internet, a rede (ARPANET) era composta por máquinas cujas configurações eram muito pouco homogêneas (teclados, jogos de caracteres, resoluções, comprimento das linhas de exibição). Por outro lado, as sessões dos terminais também possuíam a sua própria maneira de controlar o fluxo de dados de entrada/saída.

Assim, em vez de criar adaptadores para cada tipo de terminal para viabilizar uma interoperabilidade destes sistemas, decidiu-se criar uma interface padrão, chamada NVT (Network Virtual Terminal - Terminal de Rede Virtual), que fornecia uma base de comunicação padrão, composta por caracteres ASCII de 7 bits aos quais se acrescenta o código ASCII estendido - três caracteres de controle, cinco caracteres de controle opcionais e um jogo de sinais de controle básico. Desta forma, o protocolo Telnet consiste em criar uma abstração do terminal, que permitirá a qualquer hóspede (cliente ou servidor) se comunicar com outro hóspede sem conhecer as suas características.

Qual é o princípio das opções negociadas

As especificações do protocolo Telnet consideram o fato de que certos terminais possam possuir serviços adicionais, não definidos nas especificações básicas, a fim de poder utilizar funções avançadas. Assim sendo, estas funcionalidades são traduzidas em termos de opções. O protocolo Telnet propõe, então, um sistema que permita o uso de funções avançadas sob forma de opções negociadas, iniciando pedidos para solicitar a autorização ao sistema remoto.

As opções do Telnet afetam separadamente cada direção do canal de dados. Assim, cada extremidade pode negociar com as opções, ou seja, definir as opções desejadas, como utilizar (DO), não utilizar (DON' T), permitir que a outra extremidade utilize (WILL), não permitir que a outra extremidade utilize (WON' T). Desta maneira, cada uma das partes pode emitir um pedido de utilização de uma opção. A outra parte deverá, então, responder se aceita ou não a utilização da opção. Se o pedido se referir a uma desativação de opção, o destinatário do pedido não deve recusar para ser totalmente compatível com o modelo NVT:

A negociação das opções Telnet
Pedido Resposta Interpretação
DO WILL O emissor começa utilizando a opção
WON'T O emissor não deve utilizar a opção
WILL DO O emissor começa utilizando a opção, após ter enviado DO
DON'T O emissor não deve utilizar a opção
DON'T WON'T O emissor assinala que desativou a opção
WON'T DON'T O emissor assinala que o emissor deve desativar a opção

Existem 255 códigos de opções. Contudo, o protocolo Telnet prevê um espaço de endereçamento que permite descrever novas opções. O RFC 855 explica como documentar qualquer outra nova opção.

Quais são as regras de negociação

As regras de negociação de opções permitem evitar situações de bloqueio (por exemplo, que uma das partes envie pedidos de negociação de opções a cada confirmação da outra parte). Os pedidos só devem ser emitidos durante uma mudança de modo. Quando uma das partes recebe um pedido de mudança de modo, ela deve adotá-lo apenas se já não se encontrar no modo adequado e quando houver um pedido que só deve ser inserido no fluxo de dados no lugar onde ele acontece.

Como são os caracteres de controle de saída

Os seguintes caracteres são comandos que permitem controlar a exibição do terminal de Rede Virtual:

Comandos de controle da visualização:
Número Código Nome Significado
0 NULL Nulo Este comando permite enviar dados ao host remoto sem que eles sejam interpretados (principalmente para indicar que o host local continua online).
1 LF Avanço de linha Este comando permite mover o cursor para a linha seguinte, na mesma posição horizontal.
2 CR Retorno de carro Este comando permite levar o cursor para a extrema esquerda da linha em curso.

Assim, definimos o comando CRLF, composto pelos dois comandos CR e LF, um após o outro (em qualquer ordem), permitindo mover o cursor de impressão para a extrema esquerda da linha seguinte.

Como aparecem os caracteres de controle opcionais

Os caracteres precedentes são os únicos (entre os 128 caracteres do código ASCII básico e os 128 caracteres do código ASCII estendido) a possuir um significado específico para o terminal de rede virtual. Os seguintes caracteres podem, eventualmente, ter um significado num terminal de rede virtual, mas não são necessariamente implementados:

Comandos de controle da exibição
Número Código Nome Significado
7 BEL Bell - Campainha Este comando permite emitir um sinal sonoro ou visual sem alterar a posição do cursor
8 BS BackSpace - Retrocesso Este comando permite alterar a posição do cursor para a sua posição precedente
9 HT Tabulação Horizontal Este comando permite mudar a posição do cursor para a tabulação seguinte à direita
11 VT Tabulação Vertical Este comando permite modificar a posição do cursor para a tabulação seguinte da linha de baixo
12 FF Form Feed - Avanço de página Este comando permite alterar a posição do cursor para baixo, na página seguinte, conservando a posição horizontal

Descrição dos caracteres de controle da sessão

Os caracteres abaixo são comandos que controlam a sessão Telnet. Estes comandos, para serem interpretados como tal, devem ser precedidos do caractere de escape* IAC. Assim, se estes bytes forem transmitidos sem estarem precedidos do caractere IAC, eles serão tratados como simples caracteres. Para transmitir o caractere IAC, é preciso que ele esteja duplicado.

O caractere de escape*, em computação, é a denominação de um único caractere em uma cadeia de caracteres que altera o significado de seu sucessor.

Os comandos que correspondem a uma negociação de opção devem ser seguidos de um byte que define a opção. Estes comandos permitem interromper sinais, excluir informações no cache do terminal, entre outras ações:

Os caracteres de controle da sessão
Número Código Nome Significado
240 SE Fim de negociação de opção
241 NOP No Operation - Sem operação Este comando permite enviar dados ao hóspede remoto sem que estes sejam interpretados (principalmente para assinalar que o hóspede local continua online)
242 DM Data Mark - Marca de dados Permite esvaziar o conjunto dos tampões entre o terminal de rede virtual e o hóspede remoto. Ele corresponde a uma pressão na tecla Synch do NVT e deve imperativamente ser associado a uma marcação do bit Urgente de TCP
243 BRK Break - Interrupção Caractere Break do terminal virtual
244 IP Interrupt Process - Interromper o processo Este comando permite suspender, interromper ou abandonar o processo remoto
245 AO Abort Output Abortar a saída Este comando permite suspender, interromper ou abandonar a exibição do processo remoto
246 AYT Are You There – Você está ai? Este comando permite verificar que o sistema distante continua “vivo”
247 EC Erase Character - Apagar caractere Este comando permite remover o caractere precedente
248 EL Erase Line - Apagar linha Este comando permite excluir a linha precedente
249 GA Go Ahead - Avance Este comando permite inverter o controle, para as ligações half-duplex
250 SB SB Este comando indica que os dados que seguem são uma negociação da opção precedente
251 WILL código de opção
252 WON'T código de opção
253 DO código de opção
254 DON'T código de opção
255 IAC Interpret As Command - Interpretar como um comando Este comando permite interpretar o byte seguinte como um comando. O comando IAC permite ir além dos comandos básicos

Você poderá encontrar mais informações sobre o Telnet acessando o RFC 854 em português, seu original em inglês e o artigo Como utilizar o Telnet.

Nosso conteúdo é produzido em colaboração com especialistas em tecnologia da informação sob o comando de Jean-François Pillou, fundador do CCM.net. CCM é um site sobre tecnologia líder em nível internacional e está disponível em 11 idiomas.
Este documento, intitulado 'O Protocolo Telnet', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (br.ccm.net) ao utilizar este artigo.

Assine nossa newsletter!

Assine nossa newsletter!
Junte-se à comunidade