Romildo Martins Bezerra CEFET/BA
Redes de Computadores II
Afinal, o que faz a camada de aplicação? ... 2
Paradigma Cliente/Servidor [4] ... 2
Endereçamento ... 2
Tipo de Serviço ... 2
Serviços da Camada de Transporte e seus protocolos ... 2
HTTP - HyperText Transfer Protocol [4] ... 2
FTP - File Transfer Protocol ... 3
SMTP - Simple Mail Transfer Protocol ... 4
TELNET ... 4
NTP - Network Time Protocol ... 4
Pesquise ... 5
Temas para trabalhos ... 5
2 y
Afinal, o que faz a camada de aplicação?
Depois de aprendermos a finalidade da camada de enlace, rede e transporte e todos os seus serviços oferecidos, nos perguntamos o que faz a camada de aplicação?
Paradigma Cliente/Servidor [4]
É um modelo computacional que separa clientes e servidores, sendo interligados entre si geralmente utilizando-se uma rede de computadores. Cada instância de um cliente pode enviar requisições de dado para algum dos servidores conectados e esperar pela resposta. Por sua vez, algum dos servidores disponíveis pode aceitar tais requisições, processá-las e retornar o resultado para o cliente. Endereçamento
Como visto nas camadas de enlace, rede e transporte, a comunicação entre hosts utiliza o conceito de endereçamento. O mecanismo de endereçamento da camada de aplicação não utiliza necessariamente uma representação numérica, podendo utilizar uma representação textual como http://www.romildo.net
As aplicações fazem uso deste endereço “amigável”, pois estão diretamente em contato com o usuário. Você já imaginou decorar todos os IPs da internet? Será que um endereço só está relacionado com um IP?
Tipo de Serviço
A camada de aplicação foi feita para oferecer serviços diferentes aos usuários, permitindo uma interface mais amigável sem qualquer preocupação com as camadas inferiores. Exemplos de serviços, veremos a seguir.
Serviços da Camada de Transporte e seus protocolos
O objetivo é identificar e entender o funcionamento de alguns dos protocolos/serviços da camada de aplicação, como:
HTTP - HyperText Transfer Protocol [4]
O HyperText Transfer Protocol (HTTP) é um protocolo de aplicação responsável pelo tratamento de pedidos/respostas entre cliente e servidor. Ele surgiu da necessidade de distribuir informações pela Internet e para que essa distribuição fosse possível foi necessário criar uma forma padronizada de comunicação entre os clientes e os servidores da Web e entendida por todos os computadores ligados à Internet.
No HTTP/1.1, versão atual do protocolo descrito na RFC 2616, foi desenvolvido um conjunto de implementações adicionais ao HTTP/1.0, como por exemplo: o uso de conexões persistentes; o uso de servidores proxy que permitem uma melhor organização da cache; novos métodos de requisições;
O HTTP utiliza o modelo cliente-servidor, como a maioria dos protocolos de rede, baseando-se no paradigma de requisição e resposta. Um programa requisitante (cliente) estabelece uma conexão com um outro programa receptor (servidor) e envia-lhe uma requisição, contendo a URL, a versão do protocolo, uma mensagem MIME (padrão utilizado para codificar dados em formato de textos ASCII para serem transmitidos pela Internet) contendo os modificadores da requisição, informações sobre o cliente e, possivelmente, o conteúdo no corpo da mensagem.
O servidor responde com uma linha de status incluindo sua versão de protocolo e um código de operação bem sucedida ou um código de erro, seguido pelas informações do servidor, metainformações da entidade e possível conteúdo no corpo da mensagem. Após o envio da resposta pelo servidor, encerra-se a conexão estabelecida.
O protocolo HTTP opera sobre o protocolo TCP/IP para estabelecer um mecanismo de serviço com estrutura requisição/resposta. Uma das características peculiares de HTTP é a composição flexível do cabeçalho, composto por diversas linhas, o que permite sua utilização como integrador de diversos formatos e não apenas de documentos HTML.
Um cabeçalho HTTP é composto por uma linha contendo a especificação do serviço e recurso associado, seguida por linhas contendo parâmetros. Um exemplo de requisição gerada por um cliente HTTP é:
3 y GET http://www.romildo,net/
Accept: text/html, image/gif, image/jpeg User-Agent: Mozilla/5.1
para a qual o cabeçalho da resposta pode ser: HTTP/1.1 200 OK
Date: Wed, 25 Mar 2008 20:20:20 GMT Server: Apache/2.0
Connection: close Content-Type: text/html Content-length: 648
FTP - File Transfer Protocol
Segundo a Wikipédia, FTP significa File Transfer Protocol (Protocolo de Transferência de Arquivos), e é uma forma bastante rápida e versátil de transferir arquivos sendo uma das mais usadas na internet. O FTP é um protocolo simples e antigo, não sendo projetado para garantir segurança.
Diferentemente dos outros protocolos usados na Internet, o FTP usa no mínimo duas conexões durante uma sessão: uma conexão half-duplex para controle e uma conexão full-duplex para transferência de dados. Para isso, utiliza as portas 20 e 21. A porta 21 é utilizada para estabelecer e manter a comunicação entre o cliente e o servidor (Control Channel). É ela quem verifica se a conexão com o servidor ainda existe. Já a porta 20 é utilizada para a transferência dos dados (arquivos), propriamente dita (Data Channel). É nela que é feito o controle do fluxo e integridade dos dados.
Para utilizar o FTP, a estação cliente realiza uma conexão com o servidor FTP na porta 21. Após a conexão estabelecida, para cada arquivo transferido estabelece-se uma nova conexão, chamada de conexão de dados. Por padrão, a porta TCP 21 é usada no servidor para controlar a conexão, mas a conexão de dados pode ser realizada de utilizando dois métodos:
• Modo ativo - O cliente envia um comando PORT ao servidor na conexão do controle e esse comando solicita ao servidor que estabeleça uma conexão de dados da porta TCP 20 no servidor até o cliente com a porta TCP especificada pelo comando PORT.
Figura 02 – Modo Ativo
• Modo passivo – O cliente envia um comando PASV e o servidor responde com uma de suas portas temporárias usadas como a porta do servidor na conexão de dados. Depois que um comando de conexão de dados é emitido pelo cliente, o servidor se conecta ao cliente usando a porta imediatamente acima da porta do cliente na conexão do controle.
Figura 03 – Modo Passivo
Recomendamos uma reflexão quanto à segurança deste protocolo. Cliente FTP Servidor FTP 1543 21 1549 20
• Para estabelecer uma conexão, o cliente conecta ao servidor na porta 21 através de sua porta 1543. • O cliente envia PORT 1549 (por exemplo) • O servidor conecta à porta 1549 através de sua
porta 20 1549 1729 Cliente FTP Servidor FTP
• Para estabelecer uma conexão, o cliente conecta ao servidor na porta 21 através de sua porta 1543. • O cliente envia PASV eo servidor responde
indicando sua porta 1729 (por exemplo) • O clinete conexta à porta 1729 através de sua
porta 1549 (Poe exemplo)
4 y
SMTP - Simple Mail Transfer Protocol
O Simple Mail Transfer Protocol (SMTP) é o protocolo padrão da arquitetura TCP/IP para envio de e-mails. O SMTP Utiliza a porta 25 e tem funcionamento muito simples, pois as mensagens e seus anexos são lidas como texto simples e os arquivos anexos são remontados de acordo com as informações lidas no cabeçalho. Vale ressaltar que o SMTP é um protocolo de envio apenas, ou seja, O SMTP não permite que um usuário descarregue as mensagens de um servidor. Para isso, é necessário um cliente de email com suporte ao protocolo POP3 ou IMAP, que é o caso da maioria dos clientes atuais.
Após o estabelecimento de uma conexão entre emissor (cliente) e receptor (servidor), o exemplo seguinte ilustra uma sessão SMTP. Na conversação seguinte, "C:" designa as mensagens do cliente, e "S:" as mensagens do servidor. Na maioria dos computadores uma conexão pode ser estabelecida usando o comando telnet no emissor, por exemplo:
telnet www.example.com 25
A partir daí uma seqüência de comandos é esperada para que a conexão SMTP tenha sucesso. TELNET
Telnet é um protocolo cliente-servidor baseado em TCP usado para permitir a comunicação entre computadores ligados numa rede com o objetivo de efetuar login/acesso remoto. Por questões de segurança, este protocolo é substituído pelo SSH, cujo conteúdo é encriptado antes de ser enviado.
A preocupação com segurança é o fator que está colocando o TELNET em desuso, uma vez que todas as comunicações entre o cliente e o servidor podem ser vistas, já que são em texto plano, incluindo a senha, com um simples sniffer como o Wireshark. È utilizando hoje apenas para teste de conexões em serviços (veja exemplo no SMTP).
NTP - Network Time Protocol
Infelizmente os relógios dos computadores são imprecisos e não sincronizados. Aplicações de tempo real, banco de dados distrinuídos e serviços que utilizam sincronização de informações devem ser capaz de garantir as propriedades necessárias ao relógio do computador para o bom funcionamento das aplicações.
O NTP é um protocolo para sincronização dos relógios dos computadores baseado no UDP, ou seja, ele define um jeito para um grupo de hosts conversar e acertar seus relógios, baseados numa fonte confiável de tempo.
Os servidores NTP formam uma topologia hierárquica, dividida em camadas ou estratos (strata) numerados de 0 a 16 . O estrato 0 representa a referência primária (relógio atômico) de tempo mas é um host da rede de servidores NTP. Assim estrato 0, fornece o tempo correto para o estrato 1, que por sua vez fornece o tempo para o estrato 2 e assim por diante. O NTP é então, simultaneamente, servidor (fornece o tempo) e cliente (consulta o tempo), formando uma topologia em árvore.
O funcionamento do NTP pode parecer simples, mas os algoritmos de sincronização de relógio (ou cálculo de deslocamento de hora) e a troca de mensagens não são triviais.
Focaremos a camada de aplicação através de práticas no laboratório e atividades em grupo. Figura 04 – Hierarquia do NTP
Passos da conexão SMTP
S: 220 www.example.com ESMTP Postfix C: HELO mydomain.com
S: 250 Hello mydomain.com
C: MAIL FROM: sender@mydomain.com S: 250 Ok
C: RCPT TO: friend@example.com S: 250 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF> C: Subject: test message
C: From: sender@mydomain.com C: To: friend@example.com C: C: Hello, C: This is a test. C: Goodbye. C: . S: 250 Ok: queued as 12345 C: quit S: 221 Bye
5 y
Pesquise
1. Estude os métodos de conexão e o formado da mensagem HTTP 2. Como funciona um servidor PROXY
3. Reflita sobre a segurança do protocolo FTP. 4. Compare o SSH com o TELNET.
5. O funcionamento do protocolo DNS.
Temas para trabalhos
1. Programação de Servidor Web [2]
2. Programação de Algoritmo de janelas deslizantes. 3. Implantação de servidores HTTP, FTP e DNS
Bibliografia
[1] FOROUZAN, B.A. Comunicação de Dados e Redes de Computadores. 3ª Edição. Bookman. 2006. [2] KUROSE, J. Redes de Computadores e a Internet. 3ª Edição. Addison-Wesley, 2006.
[3] COMER, D. E. Redes de Computadores e a Internet. 4ª Edição. Bookman. 2007. [4] http://pt.wikipedia.org/wiki/HTTP - Wikipedia.