Telnet - Gerds

Propaganda
CURSOS DE COMPUTAÇÃO
–
UTP
–
2010
DISCIPLINA: Serviços de Redes
PROFESSOR: ROBERTO AMARAL
TELNET
Protocolo padrão TCP/IP para serviço de terminal remoto. O TELNET permite que um
usuário em um site interaja com um sistema remoto de tempo compartilhado em outro site, como
se o teclado e o monitor do usuário estivessem conectados diretamente ao equipamento remoto.
O TELNET permite que um usuário em determinado site estabeleça conexão TCP com um
servidor login situado em outro site. O TELNET transmite, então, os toques no teclado do usuário
diretamente ao computador remoto, como se estivessem sendo digitados no teclado conectado à
máquina remota. Esse terminal também retorna a saída da máquina remota até a tela do usuário.
O serviço recebe o nome de transparente, porque faz com que o teclado e o monitor do usuário
pareçam estar conectados diretamente à máquina remota.
Embora o TELNET não seja sofisticado se comparado a alguns protocolos de terminal
remoto, ele é amplamente utilizado. Geralmente o software do cliente do TELNET permite que o
usuário especifique a máquina remota fornecendo seu nome de domínio ou seu endereço IP. Por
aceitar endereços IP, o TELNET pode ser usado quando o software de atribuição de nomes de
domínio estiver sendo depurado.
O TELNET oferece três serviços básicos. Em primeiro lugar, define um terminal virtual da
rede fornecedora de uma interface padrão para sistemas remotos. Os programas clientes não
precisam entender os detalhes de todos os sistemas remotos possíveis; eles são projetados para
usar a interface padrão. Em segundo lugar, o TELNET inclui um mecanismo que permite ao cliente
e ao servidor negociar opções e fornece um conjunto de opções padronizadas (p. ex., uma das
opções verifica se os dados passados pela conexão usam o caractere padrão ASCII de sete bits
ou o conjunto de oito bits). Finalmente, o TELNET trata ambas as pontas da conexão de forma
simétrica. Em particular, o TELNET não obriga a entrada do cliente via teclado, nem obriga o
cliente a ter a saída indicada na tela. Dessa forma, o TELNET permite que um programa arbitrário
torne-se um cliente. Além do mais, qualquer ponta pode negociar opções.
Quando um usuário cama o TELNET, um programa aplicativo existente na maquina do
usuário torna-se o cliente. O cliente estabelece uma conexão TCP com o servidor por intermédio
da qual irão se comunicar. Uma vez estabelecida a conexão, o cliente aceita toques de teclado do
usuário e os envia de volta e apresenta-os na tela do usuário. O servidor deve aceitar uma
conexão TCP de um cliente e, a seguir, retransmite dados entre a conexão TCP e o sistema
operacional local.
Na pratica, o servidor é mais complexo do que a demonstrado abaixo porque precisa
conduzir várias conexões simultâneas. Em geral, um processo de servidor-mestre aguarda novas
conexões e cria um novo escravo para cuidar de uma conexão em particular. Desse modo, “o
servidor TELNET”, da figura abaixo representa o escravo que trata de uma conexão em particular.
A figura mostra o servidor-mestre que espera novas solicitações, nem mostra os escravos
cuidando das outras conexões.
Prof. Roberto Amaral
Página 1
29/05/2017
CURSOS DE COMPUTAÇÃO
–
UTP
–
DISCIPLINA: Serviços de Redes
PROFESSOR: ROBERTO AMARAL
Cliente lê dados de
terminal
Dispositivo de
entrada e
saída de
dados do
usuário
2010
Cliente envia
dados ao servidor
Client
TELNET
Servidor recebe
dados
Servidor envia
dados
Servidor
TELNET
Sistema
Operacional
Sistema
Operacional
S
Inter-rede
TCP/IP
istema
Operacio
nal
Trajeto de dados em um sessão de terminal
remoto TELNET, enquanto trafega do teclado do usuário até um
sistema de operação remoto. Acrescentar um servidor TELNET a um sistema timesharing geralmente requer
modificações no sistema operacional.
Usamos o termo pseudoterminal para descrever o ponto de entrada do sistema
operacional que permite que o servidor de um programa em funcionamento, como de um teclado.
É impossível construir um servidor TELNET, anão ser que o sistema operacional forneça tal
recurso. Se o sistema suporta tal abstração de pseudoterminal, o servidor TELNET pode ser
implementado com programas aplicativos. Cada servidor-escravo conecta um canal TCP de um
cliente a um pseudoterminal específico.
Fazer com que o servidor TELNET seja um programa em nível de aplicativo traz vantagens
e desvantagens. A vantagem mais óbvia é tornar mais fácil a inclusão das modificações e o
controle do servidor do que se o código estivesse vinculado ao sistema operacional. A
desvantagem clara é a da ineficiência. Cada sinal trafega do teclado do usuário, através do
sistema operacional e pela interligação em redes até a máquina do servidor. Após chegar à
máquina de destino, os dados deverão trafegar pelo sistema operacional do servidor até o
programa aplicativo do servidor e dele retornar ao sistema operacional do servidor em um ponto de
entrada de um pseudoterminal. Finalmente, o sistema operacional remoto entrega o caractere ao
programa aplicativo que o usuário está executando. Nesse ínterim, a saída (inclusive o eco remoto
do caractere, se essa opção tiver sido selecionada) trafega de volta do servidor para o cliente
fazendo o mesmo trajeto.
Os leitores que compreendem os sistemas operacionais vão notar que, para
implementação demonstrada na figura acima, cada tique no teclado requer que os computadores
troquem de contexto de processamento diversas vezes. Na maioria dos sistemas, um troca de
contexto adicional é necessária, porque o sistema operacional da maquina do servidor deverá
retornar os caracteres do pseudoterminal para outro programa aplicativo (p. ex., um interpretador
Prof. Roberto Amaral
Página 2
29/05/2017
CURSOS DE COMPUTAÇÃO
–
UTP
–
DISCIPLINA: Serviços de Redes
2010
PROFESSOR: ROBERTO AMARAL
de comando). Embora a troca de contexto seja dispendiosa, o esquema é prático porque os
usuários não digitam em altas velocidades.
Acomodação da heterogeneidade
Para fazer com que o TELNET seja interoperacional entre o maior número possível de
sistemas, ele deveria acomodar os detalhes dos computadores e sistemas operacionais
heterogêneos. Por exemplo, alguns sistemas requerem que as linhas de textos sejam finalizadas
pelo caractere ASCII de carriage control (CR). Outros requerem que seja o caractere ASCII de
linefeed (LF) e outros, ainda, que seja a seqüência dos dos caracteres, CR-LF. Além disso, a
maioria dos sistemas interativos fornece um recurso que permite ao usuário introduzir uma tecla
que interrompe o programa em operação. Todavia, a tecla específica usada para isso varia de um
sistema para outro(p. ex., alguns sistemas usam Control-C, enquanto outros usam ESCAPE).
Para acomodar esta heterogeneidade, o TELNET define como as seqüências de dados e
de comandos são enviadas através da Internet. A definição ;e conhecida como o terminal virtual de
rede (NVT – Network Virtual Terminal). Como a figura abaixo ilustra, o software do cliente converte
os toques de teclado e as seqüências de comandos do terminal do usuário para um formato NVT e
os envia ao servidor. O software do servidor converte os dados e comandos recebidos em formato
NVT para o formato requerido pelo sistema remoto. Para o retorno dos dados, o servidor remoto os
converte do formato de máquina remota para o NVT, e o cliente local converte do formato NVT
para o formato da máquina local.
Dispositivo de
entrada e
saída de
dados do
usuário
Formato do
sistema cliente
usado
Cliente
Conexão TCP por Inter-rede
Formato NVT
usado
Servidor
Sistema
Servidor
Formato do
sistema do
servidor usado
Uso do formato NVT (Network Virtual Terminal) pelo TELNET
A definição do formato NVT é bastante objetiva. Todas as comunicações envolvem bytes
de oito bits. Na inicialização, o NVT utiliza a representação padrão USASCII de sete bits para os
dados e reserva bytes com alta contagem de bits para seqüências de comandos. O conjunto de
caracteres USACII inclui 95 caracteres graficamente “imprimíveis” (p. ex., letras, números e marcas
de pontuação), assim como 33 códigos de “controle”. A todos os caracteres possíveis de serem
impressos é atribuído o mesmo significado, como no conjunto de caracteres padrão USASCII. O
padrão NVT define a interpretação para os caracteres de controle como mostra a figura abaixo.
Prof. Roberto Amaral
Página 3
29/05/2017
–
CURSOS DE COMPUTAÇÃO
UTP
–
DISCIPLINA: Serviços de Redes
2010
PROFESSOR: ROBERTO AMARAL
Código de Controle
ASCII
Valor Decimal
NULL
0
Nenhuma operação (não tem qualquer efeito sobre a saída)
BELL
7
Som audível/sinal visível (nenhum movimento)
BS
8
Mova para a esquerda a posição de um caracter
HT
9
Mova à direita até a próxima marca de tabulação horizontal
LF
10
Mova para baixo (verticalmente) até a próxima linha
VT
11
Mova para baixo até a próxima marca de tabulação vertical
FF
12
Mova até a borda superior da próxima página
CR
13
Mova até a margem esquerda da linha atual
Outro controle
-
Significado atribuído
Nenhuma operação (não tem efeito algum sobre a saída)
Interpretação NVT TELNET de caracteres de controle USASCII. O TELNET na especifica a localização das
marcas de tabulação.
Além da interpretação de caracteres de controle mostrada acima, o NVT define que a
finalização da linha padrão seja feita através de uma seqüência de duplo caractere CR-LF. Quando
um usuário pressionar a tecla que corresponde ao fim da linha no terminal local (p. ex., ENTER ou
RETURN), o cliente TELNET deverá converte-la em CR-LF para a retransmissão. O servidor
TELNET converte CR-LF para a seqüência de caracteres de fim de linha apropriados na máquina
remota.
Prof. Roberto Amaral
Página 4
29/05/2017
CURSOS DE COMPUTAÇÃO
–
UTP
–
2010
DISCIPLINA: Serviços de Redes
PROFESSOR: ROBERTO AMARAL
Passagem de comandos que controlam a instala remota
Foi mencionado que a maioria dos prgrams fornecem um mecanismo que permite aos
usuários interromper um programa em execução. Geralmente, o sistema operacional local vincula
tais mecanismos a determinada tecla ou seqüência de teclas. Por exemplo, a não ser que o
usuário especifique de forma diferente, muitos sistemas UNIX reservam o caractere gerado pela
seqüência Control-C como a tecla de interrupção. Pressionando Control-C, o UNIX interrompe o
programa em execução; o programa não recebe Control-C como uma entrada. O sistema pode
reservar outros caracteres ou seqüência de caracteres para outras funções de controle.
O NVT TELNET acomoda as funções de controle ao definir como elas são passadas do
cliente para o servidor. Teoricamente, pensamos que o NVT aceita a entrada de um teclado que
possa gerar mais de 128 caracteres possíveis. Supomos que o teclado do usuário possua teclas
virtuais que correspondem às funções tipicamente usadas para controlar o processamento. Por
exemplo, o NVT define uma tecla conceitual de “interrupção” que solicita a interrupção do
programa. A figura abaixo lista as funções de controle permitidas pelo NVT
Sinal
Significado atribuído
IP
Interrupt Process (finalizar execução do programa)
AO
Abort Output (descartar informações resultantes)
AYT
Are You There (testar se o servidor responde)
EC
Erase Character (excluir caracteres anteriores)
EL
Erase Line (excluir toda a linha atual)
SYNCH
BRK
Synchorniza (limpar a rota de dados até o ponto TCP de urgência, mas não
interpretar os comandos)
Break (tecla de interrupção ou sinal de atenção)
Função de controle reconhecida pelo NVT TELNET. Conceitualmente, o cliente as recebe do usuário,
juntamente com os dados normais, e as passa para o sistema do servidor onde deverão ser interpretadas.
Na prática, a maioria dos teclados não possui teclas extras para os comandos. Em vez
disso, os interpretadores de comandos dos sistemas operacionais dispõem de uma variedade de
formas para gerá-los. Já mencionamos a técnica mais comum: a vinculação de um caractere ASCII
individual a uma função de controle de modo que, quando a tecla é pressionada, o sistema
operacional executa a ação apropriada em vez de aceitar o caractere como uma entrada. Os
projetistas NVT optaram por manter os comandos separados do conjunto de caracteres normais
ASCII por dois motivos. Em primeiro lugar, porque definir as funções de controle separadamente
permite maior flexibilidade ao TELNET. É possível transferir todas as seqüências possíveis de
caractere ASCII, entre o cliente e o servidor, assim como todas as funções de controle possíveis.
Prof. Roberto Amaral
Página 5
29/05/2017
CURSOS DE COMPUTAÇÃO
–
UTP
–
2010
DISCIPLINA: Serviços de Redes
PROFESSOR: ROBERTO AMARAL
Em segundo lugar, ao fazer a separação entre os sinais e dos dados normais, o NVT permite ao
cliente especificar os sinais sem ambigüidade – nunca se confunda se o caractere deverá ser
tratado como dado ou função de controle.
Para transmitir funções de controle por uma conexão TCP, o TELNET codifica-as usando
uma seqüência de escape. Uma seqüência de escape utiliza um octeto reservado para indicar que
um octeto de código de controle vem em seguida. No TELNET, o octeto reservado que inicia de
escape é conhecido como octeto IAC (interpret as command). A figura abaixo lixa os comandos
possíveis e a codificação decimal usada para cada um deles.
Comando
Valor Decimal
Significado atribuído
Interpreta o octeto seguinte como comando (quando o octeto
IAC aparece na forma de dados, o emissor o duplica e envia a
seqüência de dois octetos)
IAC
255
DONT
254
Negação a solicitação de execução da opção especificada
DO
253
Aprovação a permitir a opção especificada
WONT
252
Negação a permitir a opção especificada
WILL
251
Concordância em executar a opção especificada
SB
250
Início de subnegociação de opções
GA
249
O sinal “vá em frente”(go ahead)
EL
248
O sinal “apagar linha” (erase line)
EC
247
O sinal “apagar caractere” (erase character)
AYT
246
O sinal “você está ai” (are you there)
AO
245
O sinal “cancela saída” (abort output)
IP
244
O sinal “interromper processo” (interrupt process)
BRK
243
O sinal “interromper” (break)
DMARK
242
O intervalo de fluxo de dados de um SYNCH (sempre
acompanhado de uma notificação TCP Urgent)
NOP
241
Fora de operação
SE
240
Fim de subnegociação de opções
EOR
239
Fim de registro
Comandos TELNET e sua codificação individual. Os códigos somente têm significado se precedidos por
caractere IAC. Quando ocorre um IAC nos dados, eles são enviados duas vezes.
Como a figura mostra, os sinais gerados por teclas conceituais em um teclado NVT
possuem comandos individuais correspondentes. Por exemplo, para solicitar que o servidor
Prof. Roberto Amaral
Página 6
29/05/2017
CURSOS DE COMPUTAÇÃO
–
UTP
–
DISCIPLINA: Serviços de Redes
2010
PROFESSOR: ROBERTO AMARAL
interrompa o programa em execução, o cliente deve enviar a seqüência de dois octetos IAC IP
(255 seguido de 244). Os comando adicionais permitem que o cliente e o servidor negociem quais
opções usarão e que sincronizem a comunicação.
Como forçar o servidor a ler uma função de controle
Enviar funções de controle juntamente com dados normais nem sempre é suficiente para
assegurar os resultados desejados. Para compreender melhor, considere a situação em que um
usuário poderia enviar uma função de controle da interrupção de processo para o servidor.
Geralmente, tal controle só é necessário quando o programa em execução, na máquina remota,
estiver funcionando mal e o usuário desejar que o servidor o interrompa. Por exemplo, o programa
pode estar produzindo um loop infinito, sem ler a entrada nem gerar uma saída. Infelizmente, se o
aplicativo no lado do servidor parar de ler a entrada, os buffers do sistema operacional
posteriormente serão todos preenchidos e o servidor fecará impossibilitado de receber mais dados
no pseudoterminal. Quando isso ocorre, o servidor deve parar de ler os dados da conexão TCP,
fazendo com que os buffers fiquem carregados. Oportunamente, o TCP da máquina do servidor
começa a indicar uma janela de tamanho zero, impedindo que os dados fluam pela conexão.
Se o usuário gerar uma função de controle de interrupção quando os buffers estiverem
cheios, a função de controle jamais chegará ao servidor. Isso indica que o cliente poderá formar a
seqüência de comando IAC IP e envia-lo à conexão TCP, mas como o TCP parou de transmitir à
máquina do servidor, o servidor não lerá a seqüência de controle. Ocorre o seguinte:
O TELNET não pode depender somente do stream de dados convencional para transmitir
as seqüências de controle entre o cliente e o servidor, já que um aplicativo que esteja operando
erroneamente e que precise ser controlado poderá inadvertidamente bloquear o stream de dados.
Para resolver o problema, o TELNET usa o sinal urgente. O TCP implementa a sinalização
urgente com um mecanismo de dados urgentes. Sempre que envia uma função de controle do
stream de dados, o TELNET envia também um comando SYNCH. A seguir, o TELNET anexa o
octeto reservado denominado marca de dados e faz com que o TCP sinalize ao servidor, enviando
um segmento com o conjunto de bits de DADOS URGENTES. Os segmentos conduzindo dados
urgentes omitem o controle de fluxo e chegam ao servidor imediatamente. Em resposta a um sinal
urgente, o servidor lê e descarta todos os dados até encontrar a marca de dados. O servidor
retorna ao processamento normal após encontrar marca de dados.
Opções TELNET
Nossa descrição simples de TELNET omite um de seus aspectos mais complexos: as
opções. No TELNET, as opções são negociáveis, possibilitando ao cliente e ao servidor
reconfigurar sua conexão. Por exemplo, dissemos que geralmente o stream de dados passa dados
de sete bits e utiliza os octetos com o conjunto de oito bits para passar informações de controle
Prof. Roberto Amaral
Página 7
29/05/2017
CURSOS DE COMPUTAÇÃO
–
UTP
–
2010
DISCIPLINA: Serviços de Redes
PROFESSOR: ROBERTO AMARAL
como o comando de Interrupção de Processamento. Todavia, o TELNET também oferece a opção
que possibilita ao cliente e ao servidor transmitir dados de oito bits (quando transmitir dados de oito
bits, o octeto reservado IAC deverá ser duplicado para que apareça em meio aos dados). O cliente
e o servidor deverão negociar e ambos deverão concordar em transmitir dados de oito bits antes
que tais transferências sejam possíveis.
As opções TELNET são bastante amplas: algumas estendem a capacidade de forma geral,
enquanto outras tratam de detalhes específicos. Por exemplo, o protocolo original foi projetado
para um ambiente half-duplex onde era necessário informar à outra ponta para “prosseguir” antes
que ela pudesse enviar quaisquer dados. Uma das opções controla se o TELNET opera em modo
hal-duplex ou ful-duplex. Outra opção permite que o servidor da máquina remota determine o tipo
de terminal do usuário. O tipo de terminal é importante para o software que gera seqüências de
posicionamento de cursos (p. ex., um editor de tela completa executando em uma máquina
remota).
A figura abaixo apresenta as várias opções TELNET mas freqüentes implementadas.
Nome
Código
RFC
Significado atribuído
Transmit Binary
0
856
Mude transmissão para um binário de 8 bits
Echo
1
857
Suppress-GA
3
858
Status
5
859
Timing Mark
6
860
Terminal Type
24
884
End-of-Record
25
885
Linemode
34
Permita que um lado faça echo dos dados que
recebe
Solicite status de uma opção TELNET de uma
instalação remota
Solicite status de uma opção TELNET de uma
instalação remota
Solicite que marca de sincronização seja inserida
no stream de retorno para sincronizar as duas
extremidades de uma conexão
Troque informações sobre a marca e o modelo do
terminal sendo utilizado (permite que os programas
ajustem
a
saída
como
seqüência
de
posicionamento de cursos para o terminal do
usuário)
Finalize dados enviados com código EOR
Use edição local e envie as linhas completas em
vez de caracteres específicos.
Opções TELNET comumente usadas
1116
Negociação de opções TELNET
A forma pela qual o TELNET negocia opções é interessante. Por ser razoável que um
servidor inicie uma opção especial, o protocolo é projetado para permitir que qualquer uma das
extremidades faça uma solicitação. Assim, diz-se que o protocolo é simétrico quanto ao
processamento de opções. A extremidade que recebe responde a uma solicitação com uma
aceitação, positiva ou com uma negação. Em terminologia TELNET, a solicitação é WILL X, o que
significa você concorda em permitir que eu use a opção X? e a resposta é ou DO X ou DON’T X
Prof. Roberto Amaral
Página 8
29/05/2017
CURSOS DE COMPUTAÇÃO
–
UTP
–
DISCIPLINA: Serviços de Redes
2010
PROFESSOR: ROBERTO AMARAL
significando, respectivamente, eu concordo em deixar que você use a opção X ou
eu não
concordo em deixar que você use a opção X. A simetria surge porque DO X requer que a
extremidade que recebe comece a usar a opção X e WILL X e WONT X significam começarei a
usar a opção X ou não começarei a usa-la.
Outro interessante conceito de negociação surge quando ambas as extremidades solicitam
a execução de uma implementação não-aperfeiçoada NVT (ou seja, sem nenhuma opção
definida). Se uma das instalações que recebe a solicitação pode simplesmente declinar. Assim, é
possível interoperar com versões mais recentes e mais sofisticadas de clientes e servidores
TELNET (ou seja, softwares que compreendem mais opções) com opções mais antigas, menos
sofisticadas. Se tanto o cliente quanto o servidor compreendem a nova opção, é possível melhorar
a interação. Caso contrário, reverterão a um estilo menos eficiente, mas operacional.
Podemos resumir:
O TELNET usa um mecanismo simétrico de negociação de opções que permite
aos clientes e servidores reconfigurar os parâmetros que controlam sua interação.
Já que todos os softwares TELNET compreendem um protocolo NVT básico,
clientes e servidores podem interoperar mesmo se um compreender opções que o
outro não compreenda.
Prof. Roberto Amaral
Página 9
29/05/2017
Download