O protocolo Telnet

Fevereiro 2017

Introdução ao protocolo Telnet

O protocolo Telnet é um protocolo standard de Internet que permite io 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 protocolo Telnet baseia-se numa conexão TCP para enviar dados em formato ASCII codificado em 8 bits entre os quais se intercalam sequências de controlo Telnet. Fornece assim um sistema orientado para a comunicação, bidireccional (half-duplex), codificado em 8 bits fácil de aplicar.

O protocolo Telnet assenta em três conceitos fundamentais:

  • O paradigma do terminal rede virtual (NVT, Network Virtual Terminal);
  • O princípio de opções negociadas;
  • As regras de negociação.



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 exceptuarmos 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 de Telnet consiste unicamente em transmitir os bytes no fluxo TCP (o protocolo Telnet precisa que os dados devem, por defeito - isto é, se nenhuma opção precisar o contrário- ser agrupados num tampão antes de serem enviados. Mais concretamente, isto significa que por defeito os dados são enviados linha por linha). Quando o byte 255 é transmitido, o byte seguinte 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


RFC concernant 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

A noção de 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 afixação). Por outro lado, as sessões dos terminais possuíam igualmente a sua própria maneira de controlar os fluxos de dados em entrada/saída.

Assim, em vez de criar adaptadores para cada tipo de terminal para poder haver uma interoperabilidade destes sistemas, decidiu-se a criação de um interface standard, chamado NVT (Network Virtual Terminal, leia-se "Terminal rede virtual"), fornecendo 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 controlo
  • Cinco caracteres de controlo opcionais
  • Um jogo de sinais de controlo básico

O protocolo Telnet consiste assim em criar uma abstração do terminal, permitindo a qualquer hóspede (cliente ou servidor) comunicar com outro hóspede sem conhecer as suas características.

O princípio de opções negociadas

As especificações do protocolo Telnet permitem ter em conta o facto que certos terminais possam propôr 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 afectam separadamente cada direção do canal de dados. Assim, cada extremidade pode negociar as opções, quer dizer, definir as opções que ela:

  • quer utilizar (DO)
  • recusa utilizar (DON' T)
  • quer que a outra extremidade utilize (WILL)
  • recusa 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 desactivaçã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 de 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 desactivou a opção
WON'TDON'TO emissor assinala que o emissor deve desactivar 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 nova opção.

As regras de negociação

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).
<ol>

  • Os pedidos devem ser emitidos apenas aquando de uma mudança de modo
  • Quando uma das partes recebe um pedido de mudança de modo, deve adoptá-lo apenas se não se encontrar já no modo adequado
  • Um pedido deve ser inserido no fluxo de dados apenas no lugar onde tem efeito.


Os caracteres de controlo da saída

Os caracteres seguintes são comandos que permitem controlar a afixação do terminal rede virtual :


Encomendas de controlo da afixação
NúmeroCódigoNomeSignificado
0NULLNullEste comando permite enviar dados ao hóspede distante sem que estes sejam interpretados (nomeadamente para assinalar que o hóspede local ainda está em linha)
1LFLine FeedEste comando permite deslocar o cursor de impressão para a linha seguinte, na mesma posição horizontal
2CRCarriage ReturnEste comando (Retour Chariot) permite deslocar o cursor de impressão para a extrema esquerda da linha corrente



Assim, define-se o comando CRLF, 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.

Os caracteres de controlo 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 uma significado específico para o terminal rede virtual. Os caracteres seguintes podem eventualmente ter um significado num terminal rede virtual, mas não são necessariamente aplicados.


Comandos de controlo da afixação
NúmeroCódigoNomeSignificado
7BELBellEste comando permite emitir um sinal sonoro ou visual sem alterar a posição do cursor
8BSBackSpaceEste comando permite alterar a posição do cursor para a sua posição precedente
9HTHorizontal TabEste comando permite alterar a posição do cursor para a tabulação seguinte à direita
11VTVertical TabEste comando permite alterar a posição do cursor para a tabulação seguinte da linha de baixo
12FFForm FeedEste comando permite alterar a posição do cursor para baixo à página seguinte conservando a posição horizontal

Os caracteres de controlo 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 carácter de escape IAC (Interpret As Command). Assim, se estes bytes forem transmitidos sem estarem precedidos do carácter IAC, serão tratados como simples caracteres. Para transmitir o carácter IAC, é necessário que esteja precedido de um carácter de escape (ele mesmo), noutros termos, ele deve ser duplicado.

Os comandos que correspondem a uma negociação de opção devem ser seguidos de um byte que precisa a opção. Estes comandos permitem interromper sinais, suprimir informações no esconderijo do terminal, …


Os caracteres de controlo da sessão
NúmeroCódigoNomeSignificado
240SE Fim de negociação de opção
241NOPNo OperationEste comando permite enviar dados ao hóspede distante sem que estes sejam interpretados (nomeadamente para assinalar que o hóspede local continua em linha)
242DMData MarkPermite esvaziar o conjunto dos tampões entre o terminal rede virtual e o hóspede distante. Corresponde a um toque sobre a tecka Synch do NVT e deve imperativamente ser associado a uma marcação de bit Urgente de TCP
243BRKBreakCarácter Break do terminal virtual
244IPInterrupt ProcessEste comando permite suspender, interromper ou abandonar o processo distante
245AOAbort OutputEste comando permite suspender, interromper ou abandonar a afixação do processo distante
246AYTAre You ThereEste comando permite verificar que o sistema distante continua “vivo”
247ECErase CharacterEste comando permite suprimir o carácter precedente
248ELErase LineEste comando permite suprimir a linha precedente
249GAGo AheadEste comando permite inverter o controlo, para as ligações half-duplex
250SBSBEste comando indica que os dados que seguem são uma negociação da opção precedente
251WILLcode d'option 
252WON'Tcode d'option 
253DOcode d'option 
254DON'Tcode d'option 
255IACInterpret As CommandEste comando permite interpretar o byte seguinte como um comando. O comando IAC permite ir além dos comandos básicos

Mais informações




Artigo escrito por [mailto:webmaster@kioskea.net Jean-François PILLOU]

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.