O Protocolo Telnet

Março 2017

Introdução ao Protocolo Telnet

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

O protocolo Telnet baseia-se em uma conexão TCP para enviar dados em formato ASCII codificado 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;
As regras de negociação.

Este é um protocolo básico, no qual outros protocolos da sequência TCP/IP (FTP, SMTP, POP3,…) se apoiam. As especificações de Telnet não mencionam a autenticação porque o Telnet 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 protocolo Telnet é um protocolo de transferência de dados sem proteção, o que quer dizer que os dados circulam abertamente na rede, isto é, eles não são criptografados). Quando o protocolo Telnet é utilizado para ligar um hóspede distante à uma máquina que serve como servidor, este protocolo é atribuído à porta 23.

Se excetuarmos 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 através do protocolo Telnet consiste unicamente em transmitir os bytes no fluxo TCP (o protocolo Telnet precisa que os dados, por padrão sejam agrupados num tampão antes de serem enviados, isto quer dizer que, por padrão os dados 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 - interpretar 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 854Telnet Protocol Specifications
RFC 855Telnet Option Specifications
RFC 856Telnet binary transmission
RFC 857Telnet Echo Option
RFC 858Telnet Suppress Go ahead Option
RFC 859Telnet Status Option
RFC 860Telnet Timing Mark Option
RFC 861Telnet Extended options-list Option

O que é um 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 possuíam igualmente a sua própria maneira de controlar o fluxo de dados de entrada/saída.


Assim, ao invés de criar adaptadores para cada tipo de terminal para viabilizar uma interoperabilidade destes sistemas, decidiu-se criar uma interface standard, chamada NVT - Network Virtual Terminal - Terminal de Rede Virtual, que fornecia uma base de comunicação standard, composta por:

Caracteres ASCII de 7 bits aos quais se acrescenta o código ASCII vasto
Três caracteres de controle
Cinco caracteres de controlo opcionais
Um jogo de sinais de controlo básico
O protocolo Telnet consiste, desta forma, em criar uma abstração do terminal, que permitirá a qualquer hóspede (cliente ou servidor) 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 que certos terminais possam propor serviços adicionais, não definidos nas especificações básicas (mas conformes às especificações), a fim de poder utilizar funções avançadas. Assim, estas funcionalidades traduzem-se em termos de opções. O protocolo Telnet propõe, por conseguinte, um sistema de negociações de opções que permitem a utilização de funções avançadas sob a forma de opções, iniciando pedidos para solicitar a autorização ao sistema distante.


As opções de Telnet afetam separadamente cada direção do canal de dados. Assim, cada extremidade pode negociar com as opções, quer dizer, definir as opções que quer: utilizar (DO), recusar de utilizar (DON' T), que a outra extremidade utilize (WILL), recusar 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 deve então responder se aceita ou não a utilização da opção. Se o pedido se refere 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
DOWILLO emissor começa utilizando a opção
WON'TO emissor não deve utilizar a opção
WILLDOO emissor começa utilizando a opção, após ter enviado DO
DON'TO emissor não deve utilizar a opção
DON'TWON'TO emissor assinala que desativou a opção
WON'TDON'TO emissor assinala que o emissor deve desativar a opção


Existem 255 códigos de opções. O protocolo Telnet prevê, contudo, 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 devem ser emitidos apenas durante uma mudança de modo, quando uma das partes recebe um pedido de mudança de modo, deve adotá-lo apenas se não se encontrar já no modo adequado ou quando houver um pedido que deve ser inserido no fluxo de dados apenas no lugar onde tem 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 para a visualização:
Número;CódigoNomeSignificado
0NULLNuloEste comando permite enviar dados ao host remoto sem que se interpretem (em particular para indicar que o host local continua online).
1LFAvanço de linhaEste comando permite levar o cursor para a linha seguinte, na mesma posição horizontal.
2CRRetorno de carroEste comando permite levar o cursor para a extrema esquerda da atual linha.



Assim, define-se o comando <bold>CRLF<bold>, composto pelos dois comandos CR e LF um após o outro (em qualquer ordem) que permite deslocar 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 vasto) 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 aplicados à ele:


Comandos de controle da exibição
NúmeroCódigoNomeSignificado
7BELBell - CanpainhaEste comando permite emitir um sinal sonoro ou visual sem alterar a posição do cursor
8BSBackSpace - RetrocessoEste comando permite alterar a posição do cursor para a sua posição precedente
9HTTabulação Horizontal Este comando permite alterar a posição do cursor para a tabulação seguinte à direita
11VTTabulação Vertical Este comando permite alterar a posição do cursor para a tabulação seguinte da linha de baixo
12FFForm Feed - Avanço de páginaEste 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 seguintes são comandos que permitem controlar a sessão Telnet. Estes comandos, para serem interpretados como tal, devem ser precedidos do caractere de escape* IAC - Interpret As Command. Assim, se estes bytes forem transmitidos sem estarem precedidos do caractere IAC, eles serão tratados como simples caracteres. Para transmitir o caractere IAC, é necessário que esteja precedido de um caractere de ‘escape’ (ele mesmo), noutros termos, ele deve ser duplicado.

O caractere de escape* é a denominação, em computação, para identificar um único caractere em uma cadeia de caracteres que muda 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, suprimir informações no terminal, etc:

Os caracteres de controle da sessão
NúmeroCódigoNomeSignificado
240SEFim de negociação de opção
241NOPNo Operation - Sem operaçãoEste comando permite enviar dados ao hóspede distante sem que estes sejam interpretados (para assinalar que o hóspede local continua em linha)
242DMData Mark - Marca de dadosPermite esvaziar o conjunto dos tampões entre o Terminal de Rede Virtual e o hóspede distante. Corresponde a um toque sobre a tecla Synch do NVT e deve imperativamente ser associado a uma marcação de bit Urgente de TCP
243BRKBreak - InterrupçãoCaractere Break do terminal virtual
244IPInterrupt Process - Interromper o processoEste comando permite suspender, interromper ou abandonar o processo distante
245AOAbort Output Abortar a saídaEste comando permite suspender, interromper ou abandonar a exibição do processo distante
246AYTAre You There - Está ai?Este comando permite verificar que o sistema distante continua ‘vivo’
247ECErase Character - Apagar caractereEste comando permite suprimir o caractere precedente
248ELErase Line - Apagar linhaEste comando permite suprimir a linha precedente
249GAGo Ahead - AvanceEste comando permite inverter o controle, para as ligações half-duplex
250SBSBEste comando indica que os dados que seguem são uma negociação da opção precedente
251WILLcódigo de opção
252WON'Tcódigo de opção
253DOcódigo de opção
254DON'Tcódigo de opção
255IACInterpret As Command - Interpretar como um comandoEste 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 nestes links: RFC 854 em português, RFC 854 original em inglês e A utilização do protocolo Telnet para a conexão distante ao serviço de um hóspede

Veja também


Telnet protocol
Telnet protocol
Protocolo Telnet
Protocolo Telnet
Das Telnet Protokoll
Das Telnet Protokoll
Le protocole Telnet
Le protocole Telnet
Il protocollo Telnet
Il protocollo Telnet
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.