Mudanças entre as edições de "RCO11102-2014-2"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 64: Linha 64:
 
* [https://www.dropbox.com/s/2h53ozxohdihcqo/lab3.pdf?dl=0 Roteiro]
 
* [https://www.dropbox.com/s/2h53ozxohdihcqo/lab3.pdf?dl=0 Roteiro]
  
<!--
 
== 25/08/14: Protocolos da camada de aplicação: HTTP, FTP, SMTP, DNS, SSH / Lab 4: Uso de aplicações da Internet (HTTP + HTML, FTP e SSH) ==
 
  
-->
+
== 01/09/14: Protocolos da camada de aplicação: HTTP, FTP, SMTP, DNS, SSH / Lab 4: Uso de aplicações da Internet (HTTP, FTP, SSH, Email) ==
 +
 
 +
* Revisão - Camadas de Protocolos (ver slides da primeira parte da disciplina)
 +
 
 +
* A camada de aplicação (ver estes [[https://www.dropbox.com/s/vtt6o97t72wyx5p/slides-kurose-cap2.pdf?dl=0 slides]])
 +
 
 +
 
 +
Ver Capítulo 27 do livro ''Comunicação de Dados e Redes de Computadores, 4a ed.'', de Behrouz Forouzan.
 +
 
 +
Na arquitetura de redes da Internet, são as aplicações que se comunicam, gerando dados no transmissor e consumindo-os no receptor.
 +
 
 +
[[imagem:Res-camadas3.png]]
 +
 
 +
'''Aplicações residem em equipamentos de rede, e se comunicam através da rede usando os serviços das camadas inferiores'''
 +
 
 +
Aplicações são processos que se comunicam através da rede (lembre que processos são programas em execução). Exemplos de aplicações são navegadores web (Firefox, Chrome) e bate-papo (Skype, GTalk). A comunicação pode ser feita de diferentes formas, de acordo com o modelo de comunicação adotado pela aplicação em questão. O modelo de comunicação define o papel de cada participante da comunicação, e por consequência acaba determinando como a comunicação acontece (quem a inicia, quando se transmitem e recebem mensagens). Três modelos conhecidos são:
 +
* '''Cliente-Servidor''': um participante é o cliente, e o outro o servidor. O cliente inicia a comunicação, ao enviar uma mensagem ao servidor pedindo algum serviço. Cabe ao servidor responder aos pedidos dos clientes. Este é o modelo mais comum de se encontrar em aplicações, tais como correio eletrônico, WWW, bancos de dados, compartilhamento de arquivos e outros.
 +
* '''Peer-to-Peer (P2P)''': cada participante pode ser tanto cliente quanto servidor, assim qualquer um pode iniciar uma comunicação. Tornou-se popular com aplicações como compartilhamento de arquivos (ex: BitTorrent, eDonkey) e sistemas de chamadas VoIP.
 +
* '''Publisher/Subscriber''': neste modelo existem os publicadores de conteúdo (''publishers'') e os assinantes ou interessados (''subscribers''). Os assinantes registram seus interesses por demais tipos de dados (isso é, assinam ''canais'' de dados). Os publicadores eventualmente divulgam dados, que são distribuídos aos assinantes. Não é comum de ser encontrado em aplicações, porém é o modelo usado para detecção de presença em aplicações de conversa on-line (Skype, Gtalk).
 +
 
 +
Cada aplicação usa diretamente os serviços da camada de transporte, e indiretamente os de camadas inferiores. Assim, para uma aplicação é a camada de transporte que envia e recebe suas mensagens. Como visto na aula passada, um serviço importante da camada de transporte é classificar e separar os pacotes recebidos de acordo com a aplicação que deve recebê-los, e para isso se um número chamado de ''port''. O número de port pode ser entendido como um endereçador de aplicações dentro de um mesmo ''host''. Vimos também que a camada de transporte na Internet apresenta dois protocolos, e ambos usam números de ''port'' para separar os pacotes de acordo com a comunicação que os contém:
 +
* '''TCP''': usado por aplicações quando há necessidade de ter certeza de que os dados foram recebidos. Esse protocolo faz retransmissões automáticas no caso de perdas de mensagens. Para estabelecer a comunicação, ele usa o conceito de ''conexão'' (em que os dois participantes entram em acordo sobre a comunicação, e lembram disso a cada mensagem enviada e recebida) e realiza confirmações das mensagens recebidas. Este é o protocolo de transporte mais usado.
 +
* '''UDP''': usado quando não é imprescindível ter certeza de que cada mensagem chegou ao destino, ou o custo de fazer isso com TCP não compensar. Não há conexões, tampouco confirmações. Exemplos de uso são chamadas VoIP e consultas DNS.
 +
 
 +
O estudo das aplicações da Internet inicia com WWW, que foi responsável por popularizar a Internet nos anos 90 e ainda é a aplicação mais difundida e acessada.
 +
 
 +
=== WWW e protocolo HTTP ===
 +
 
 +
WWW (''World Wide Web'') é um sistema de documentos em hipermidia que são ligados e acessados na Internet ([http://pt.wikipedia.org/wiki/Www FONTE: Wikipedia]). Tendo início em 1990 como uma aplicação experimental desenvolvida por [http://pt.wikipedia.org/wiki/Tim_Berners-Lee Tim Berners-Lee], que então trabalhava no [http://pt.wikipedia.org/wiki/CERN CERN], na Suíça, em pouco tempo caiu no gosto de demais usuários e se difundiu. WWW se tornou tão popular que para muitos passou a ser sinônimo de Internet (equivocadamente). Por trás da sua rápida aceitação há um protocolo de aplicação simples e funcional, além claro do modelo de informação em hipermidia que agradou as pessoas.
 +
 
 +
Se o WWW é um sistema de documentoshipermidia  online mantido de forma distribuída na Internet, o protocolo [http://pt.wikipedia.org/wiki/HTTP HTTP (Hypertext Transfer Protocol)] é o protocolo usado para acessá-los. Esse protocolo segue o modelo cliente-servidor, e as comunicações são feitas com mensagens de pedido e resposta. Um cliente (navegador web) envia uma mensagem HTTP de pedido a um servidor web, que a responde com uma mensagem de resposta contendo o conteúdo solicitado. O protocolo HTTP usa o protocolo TCP para transmitir suas mensagens.
 +
 
 +
==== Mensagens de pedido HTTP ====
 +
 
 +
Mensagens HTTP de pedido possuem a seguinte estrutura:
 +
 
 +
<syntaxhighlight lang=text>
 +
Método URI HTTP/versão_do_protocolo
 +
Cabeçalho1: valor do cabeçalho1
 +
Cabeçalho2: valor do cabeçalho2
 +
Cabeçalho3: valor do cabeçalho3
 +
CabeçalhoN: valor do cabeçalhoN
 +
 
 +
corpo da mensagem
 +
</syntaxhighlight>
 +
 
 +
A primeira linha usa o campo ''método'' para indicar o tipo de pedido a ser realizado. O ''método'' HTTP pode ser entendido como um comando a ser realizado pelo servidor. Os métodos mais comuns são:
 +
* '''GET''': obtém um documento.
 +
* '''POST''': envia algum conteúdo e obtém como resposta um documento.
 +
* '''HEAD''': obtém informações sobre um documento.
 +
 
 +
O campo [http://pt.wikipedia.org/wiki/URI URI (Uniform Resource Indicator)] identifica o documento que o servidor deve acessar. Ele se aparenta com um caminho de arquivo (''pathname''), porém possui algumas extensões para poder enviar informação adicional.
 +
 
 +
Os cabeçalhos servem para complementar o pedido, informando ao servidor mais detalhes sobre o que está sendo requisitado. Por fim, o corpo da mensagem é opcional, podendo conter dados a serem enviados ao servidor quando necessário.
 +
 
 +
Tendo entendido os componentes de um pedido HTTP, segue abaixo um exemplo de uma requisição real (note que ela não possui corpo de mensagem):
 +
 
 +
<syntaxhighlight lang=text>
 +
GET /wiki/ HTTP/1.1
 +
Host: wiki.sj.ifsc.edu.br
 +
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:20.0) Gecko/20100101 Firefox/20.0
 +
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
 +
Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3
 +
Accept-Encoding: gzip, deflate
 +
Cookie: wiki2010UserID=614; wiki2010UserName=Msobral; wiki2010Token=4ed97239498a2fc74596b0f0a62331b5; wiki2010_session=f4e6b1hl4ctlkbpe5gc5gkosi4
 +
Connection: keep-alive
 +
If-Modified-Since: Mon, 20 May 2013 00:38:20 GMT
 +
</syntaxhighlight>
 +
 
 +
==== Mensagens de resposta HTTP ====
 +
 
 +
Mensagens HTTP de resposta possuem a seguinte estrutura:
 +
 
 +
<syntaxhighlight lang=text>
 +
HTTP/versão_do_protocolo status info
 +
Cabeçalho1: valor do cabeçalho1
 +
Cabeçalho2: valor do cabeçalho2
 +
Cabeçalho3: valor do cabeçalho3
 +
CabeçalhoN: valor do cabeçalhoN
 +
 
 +
corpo da mensagem
 +
</syntaxhighlight>
 +
 
 +
A linha inicial informa o resultado do atendimento do pedido (se teve sucesso ou não), contendo um código numérico de status seguido de uma breve descrição. Os códigos numéricos e info mais comuns são:
 +
* '''200 OK''': pedido atendido com sucesso.
 +
* '''302 Moved Temporarily''': o pedido pode ser atendido em outra URL.
 +
* '''401 Authorization Required''': acesso negado, pois exige-se autenticação.
 +
* '''403 Forbidden''': acesso negado em definitivo.
 +
* '''404 Not Found''': documento não encontrado.
 +
 
 +
Após a linha inicial há os cabeçalhos, usados da mesma forma que em pedidos HTTP. Por fim, pode haver o corpo da mensagem (opcional). Um exemplo de mensagem de resposta segue abaixo:
 +
 
 +
<syntaxhighlight lang=text>
 +
HTTP/1.1 200 OK
 +
Date: Thu, 23 May 2013 20:43:31 GMT
 +
Server: Apache
 +
Last-Modified: Fri, 10 May 2013 14:09:58 GMT
 +
ETag: "757236-40-4dc5db8df272a"
 +
Accept-Ranges: bytes
 +
Content-Length: 64
 +
Vary: Accept-Encoding
 +
Connection: close
 +
Content-Type: text/plain; charset=UTF-8
 +
 
 +
Este é um pequeno arquivo de teste, sem informação útil ...
 +
</syntaxhighlight>
 +
 
 +
 
 +
==== Atividade Prática ====
 +
 
 +
1. Instale o servidor WWW Apache 2.
 +
* Documentação [http://httpd.apache.org/]
 +
<syntaxhighlight lang=bash>
 +
sudo apt-get install apache2
 +
</syntaxhighlight>
 +
 
 +
2. Verifique a configuração do apache
 +
* Nos arquivo "/etc/apache2/apache2.conf" e "/etc/apache2/sites-enabled/000-default", interprete os valores das seguintes variáveis:
 +
** DocumentRoot - local onde ficam as páginas web
 +
** ErrorLog - registro de erros (ex.: página não encontrada)
 +
** CustomLog - registro padrão (ex.: acessos)
 +
 
 +
3. Seguindo [http://www.sj.cefetsc.edu.br/~cantu/RCOI/Labs/Lab2_Web-HTML-HTTP.pdf este roteiro], crie uma página WEB no servidor instalado e acesse ela.
 +
 
 +
4. Acesse as páginas instaladas nos computadores de seus colegas.
 +
 
 +
5. Instale o wireshark e capture os pacotes de comunicação HTTP, identificando as mensagens GET e suas respostas, como exposto acima.
 +
<syntaxhighlight lang=bash>
 +
sudo apt-get install wireshark
 +
</syntaxhighlight>

Edição das 18h28min de 1 de setembro de 2014

TecTel: Redes de Computadores - 2014-2 - Prof. Arliones Hoeller

  • Professor: Arliones Hoeller
  • Turma: 1110231
  • Encontros: segundas das 18:30 às 22:30
  • Atendimento paralelo: quintas das 9:40 às 10:35 e das 14:25 às 15:20
  • Grupo de discussão
    • Web: a definir.
    • Email: a definir.

Plano de Ensino

Curiosidades

Materiais de aula

Slides

Listas de exercícios

Apostilas


Aulas

04/08/14: Apresentação da disciplina

  • Apresentação da disciplina, plano de aula, laboratórios e métodos de avaliação.
  • Revisão de conceitos do Projeto Integrador I
  • Introdução a Redes de Computadores [slides]


11/08/14: Comutação por Circuitos, Comutação de Pacotes, Lab01: Ferramentas básicas de redes

  • Introdução a Redes de Computadores [slides]

Nesta atividade serão vistos algumas ferramentas utilizadas para obter informações relacionadas às configurações de uma rede de computadores.


18/08/14: Modelos de serviço, Redes de acesso, Lab 3: Captura de pacotes na rede (Wireshark)

  • Introdução a Redes de Computadores [slides]

Lab 3: Captura de pacotes na rede (Wireshark)


25/08/14: Arquiteturas em Camadas, Comunicação entre processos


01/09/14: Protocolos da camada de aplicação: HTTP, FTP, SMTP, DNS, SSH / Lab 4: Uso de aplicações da Internet (HTTP, FTP, SSH, Email)

  • Revisão - Camadas de Protocolos (ver slides da primeira parte da disciplina)
  • A camada de aplicação (ver estes [slides])


Ver Capítulo 27 do livro Comunicação de Dados e Redes de Computadores, 4a ed., de Behrouz Forouzan.

Na arquitetura de redes da Internet, são as aplicações que se comunicam, gerando dados no transmissor e consumindo-os no receptor.

Res-camadas3.png

Aplicações residem em equipamentos de rede, e se comunicam através da rede usando os serviços das camadas inferiores

Aplicações são processos que se comunicam através da rede (lembre que processos são programas em execução). Exemplos de aplicações são navegadores web (Firefox, Chrome) e bate-papo (Skype, GTalk). A comunicação pode ser feita de diferentes formas, de acordo com o modelo de comunicação adotado pela aplicação em questão. O modelo de comunicação define o papel de cada participante da comunicação, e por consequência acaba determinando como a comunicação acontece (quem a inicia, quando se transmitem e recebem mensagens). Três modelos conhecidos são:

  • Cliente-Servidor: um participante é o cliente, e o outro o servidor. O cliente inicia a comunicação, ao enviar uma mensagem ao servidor pedindo algum serviço. Cabe ao servidor responder aos pedidos dos clientes. Este é o modelo mais comum de se encontrar em aplicações, tais como correio eletrônico, WWW, bancos de dados, compartilhamento de arquivos e outros.
  • Peer-to-Peer (P2P): cada participante pode ser tanto cliente quanto servidor, assim qualquer um pode iniciar uma comunicação. Tornou-se popular com aplicações como compartilhamento de arquivos (ex: BitTorrent, eDonkey) e sistemas de chamadas VoIP.
  • Publisher/Subscriber: neste modelo existem os publicadores de conteúdo (publishers) e os assinantes ou interessados (subscribers). Os assinantes registram seus interesses por demais tipos de dados (isso é, assinam canais de dados). Os publicadores eventualmente divulgam dados, que são distribuídos aos assinantes. Não é comum de ser encontrado em aplicações, porém é o modelo usado para detecção de presença em aplicações de conversa on-line (Skype, Gtalk).

Cada aplicação usa diretamente os serviços da camada de transporte, e indiretamente os de camadas inferiores. Assim, para uma aplicação é a camada de transporte que envia e recebe suas mensagens. Como visto na aula passada, um serviço importante da camada de transporte é classificar e separar os pacotes recebidos de acordo com a aplicação que deve recebê-los, e para isso se um número chamado de port. O número de port pode ser entendido como um endereçador de aplicações dentro de um mesmo host. Vimos também que a camada de transporte na Internet apresenta dois protocolos, e ambos usam números de port para separar os pacotes de acordo com a comunicação que os contém:

  • TCP: usado por aplicações quando há necessidade de ter certeza de que os dados foram recebidos. Esse protocolo faz retransmissões automáticas no caso de perdas de mensagens. Para estabelecer a comunicação, ele usa o conceito de conexão (em que os dois participantes entram em acordo sobre a comunicação, e lembram disso a cada mensagem enviada e recebida) e realiza confirmações das mensagens recebidas. Este é o protocolo de transporte mais usado.
  • UDP: usado quando não é imprescindível ter certeza de que cada mensagem chegou ao destino, ou o custo de fazer isso com TCP não compensar. Não há conexões, tampouco confirmações. Exemplos de uso são chamadas VoIP e consultas DNS.

O estudo das aplicações da Internet inicia com WWW, que foi responsável por popularizar a Internet nos anos 90 e ainda é a aplicação mais difundida e acessada.

WWW e protocolo HTTP

WWW (World Wide Web) é um sistema de documentos em hipermidia que são ligados e acessados na Internet (FONTE: Wikipedia). Tendo início em 1990 como uma aplicação experimental desenvolvida por Tim Berners-Lee, que então trabalhava no CERN, na Suíça, em pouco tempo caiu no gosto de demais usuários e se difundiu. WWW se tornou tão popular que para muitos passou a ser sinônimo de Internet (equivocadamente). Por trás da sua rápida aceitação há um protocolo de aplicação simples e funcional, além claro do modelo de informação em hipermidia que agradou as pessoas.

Se o WWW é um sistema de documentoshipermidia online mantido de forma distribuída na Internet, o protocolo HTTP (Hypertext Transfer Protocol) é o protocolo usado para acessá-los. Esse protocolo segue o modelo cliente-servidor, e as comunicações são feitas com mensagens de pedido e resposta. Um cliente (navegador web) envia uma mensagem HTTP de pedido a um servidor web, que a responde com uma mensagem de resposta contendo o conteúdo solicitado. O protocolo HTTP usa o protocolo TCP para transmitir suas mensagens.

Mensagens de pedido HTTP

Mensagens HTTP de pedido possuem a seguinte estrutura:

Método URI HTTP/versão_do_protocolo
Cabeçalho1: valor do cabeçalho1
Cabeçalho2: valor do cabeçalho2
Cabeçalho3: valor do cabeçalho3
CabeçalhoN: valor do cabeçalhoN

corpo da mensagem

A primeira linha usa o campo método para indicar o tipo de pedido a ser realizado. O método HTTP pode ser entendido como um comando a ser realizado pelo servidor. Os métodos mais comuns são:

  • GET: obtém um documento.
  • POST: envia algum conteúdo e obtém como resposta um documento.
  • HEAD: obtém informações sobre um documento.

O campo URI (Uniform Resource Indicator) identifica o documento que o servidor deve acessar. Ele se aparenta com um caminho de arquivo (pathname), porém possui algumas extensões para poder enviar informação adicional.

Os cabeçalhos servem para complementar o pedido, informando ao servidor mais detalhes sobre o que está sendo requisitado. Por fim, o corpo da mensagem é opcional, podendo conter dados a serem enviados ao servidor quando necessário.

Tendo entendido os componentes de um pedido HTTP, segue abaixo um exemplo de uma requisição real (note que ela não possui corpo de mensagem):

GET /wiki/ HTTP/1.1
Host: wiki.sj.ifsc.edu.br
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:20.0) Gecko/20100101 Firefox/20.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Cookie: wiki2010UserID=614; wiki2010UserName=Msobral; wiki2010Token=4ed97239498a2fc74596b0f0a62331b5; wiki2010_session=f4e6b1hl4ctlkbpe5gc5gkosi4
Connection: keep-alive
If-Modified-Since: Mon, 20 May 2013 00:38:20 GMT

Mensagens de resposta HTTP

Mensagens HTTP de resposta possuem a seguinte estrutura:

HTTP/versão_do_protocolo status info 
Cabeçalho1: valor do cabeçalho1
Cabeçalho2: valor do cabeçalho2
Cabeçalho3: valor do cabeçalho3
CabeçalhoN: valor do cabeçalhoN

corpo da mensagem

A linha inicial informa o resultado do atendimento do pedido (se teve sucesso ou não), contendo um código numérico de status seguido de uma breve descrição. Os códigos numéricos e info mais comuns são:

  • 200 OK: pedido atendido com sucesso.
  • 302 Moved Temporarily: o pedido pode ser atendido em outra URL.
  • 401 Authorization Required: acesso negado, pois exige-se autenticação.
  • 403 Forbidden: acesso negado em definitivo.
  • 404 Not Found: documento não encontrado.

Após a linha inicial há os cabeçalhos, usados da mesma forma que em pedidos HTTP. Por fim, pode haver o corpo da mensagem (opcional). Um exemplo de mensagem de resposta segue abaixo:

HTTP/1.1 200 OK
Date: Thu, 23 May 2013 20:43:31 GMT
Server: Apache
Last-Modified: Fri, 10 May 2013 14:09:58 GMT
ETag: "757236-40-4dc5db8df272a"
Accept-Ranges: bytes
Content-Length: 64
Vary: Accept-Encoding
Connection: close
Content-Type: text/plain; charset=UTF-8

Este é um pequeno arquivo de teste, sem informação útil ...


Atividade Prática

1. Instale o servidor WWW Apache 2.

  • Documentação [1]
sudo apt-get install apache2

2. Verifique a configuração do apache

  • Nos arquivo "/etc/apache2/apache2.conf" e "/etc/apache2/sites-enabled/000-default", interprete os valores das seguintes variáveis:
    • DocumentRoot - local onde ficam as páginas web
    • ErrorLog - registro de erros (ex.: página não encontrada)
    • CustomLog - registro padrão (ex.: acessos)

3. Seguindo este roteiro, crie uma página WEB no servidor instalado e acesse ela.

4. Acesse as páginas instaladas nos computadores de seus colegas.

5. Instale o wireshark e capture os pacotes de comunicação HTTP, identificando as mensagens GET e suas respostas, como exposto acima.

sudo apt-get install wireshark