O Protocolo Telnet

Novembro 2017

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 854Especificações originais do protocolo Telnet
RFC 855Especificações das opções do Telnet
RFC 856Transmissão binária no Telnet
RFC 857Opção Echo do Telnet
RFC 858Telnet suprimir opção 'ir em frente' ou 'continuar'
RFC 859Opção de status do Telnet
RFC 860Opção de sincronização no Telnet
RFC 861Opçã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
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. 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úmeroCódigoNomeSignificado
0NULLNuloEste comando permite enviar dados ao host remoto sem que eles sejam interpretados (principalmente para indicar que o host local continua online).
1LFAvanço de linhaEste comando permite mover o cursor para a linha seguinte, na mesma posição horizontal.
2CRRetorno de carroEste 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úmeroCódigoNomeSignificado
7BELBell - CampainhaEste 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 mudar a posição do cursor para a tabulação seguinte à direita
11VTTabulação Vertical Este comando permite modificar 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 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úmeroCódigoNomeSignificado
240SEFim de negociação de opção
241NOPNo Operation - Sem operaçãoEste comando permite enviar dados ao hóspede remoto sem que estes sejam interpretados (principalmente para assinalar que o hóspede local continua online)
242DMData Mark - Marca de dadosPermite 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
243BRKBreak - InterrupçãoCaractere Break do terminal virtual
244IPInterrupt Process - Interromper o processoEste comando permite suspender, interromper ou abandonar o processo remoto
245AOAbort Output Abortar a saídaEste comando permite suspender, interromper ou abandonar a exibição do processo remoto
246AYTAre You There – Você está ai?Este comando permite verificar que o sistema distante continua “vivo”
247ECErase Character - Apagar caractereEste comando permite remover o caractere precedente
248ELErase Line - Apagar linhaEste comando permite excluir 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 acessando o RFC 854 em português, seu original em inglês e o artigo Como utilizar o Telnet.

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
Última modificação: 26 de abril de 2017 às 12:57 por ninha25.
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.