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

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 24: Linha 24:
  
 
== Slides ==
 
== Slides ==
* [https://www.dropbox.com/s/cwf6ax8k6kybvl2/slides-kurose-cap1.pdf Cap. 1: Introdução a Redes de Computadores]
+
* [http://wiki.sj.ifsc.edu.br/images/b/b3/Slides-kurose-cap1.pdf Cap. 1: Introdução a Redes de Computadores]
 +
* [http://wiki.sj.ifsc.edu.br/images/c/c2/Slides-kurose-cap2.pdf Cap. 2: Camada de Aplicação]
  
 
== Listas de exercícios ==
 
== Listas de exercícios ==
Linha 36: Linha 37:
 
== 04/08/14: Apresentação da disciplina ==
 
== 04/08/14: Apresentação da disciplina ==
 
* Apresentação da disciplina, plano de aula, laboratórios e métodos de avaliação.
 
* Apresentação da disciplina, plano de aula, laboratórios e métodos de avaliação.
* Introdução a Redes de Computadores [[https://www.dropbox.com/s/cwf6ax8k6kybvl2/slides-kurose-cap1.pdf slides]]
+
* Introdução a Redes de Computadores [[http://wiki.sj.ifsc.edu.br/images/b/b3/Slides-kurose-cap1.pdf slides]]
  
  
Linha 51: Linha 52:
 
== 11/08/14: Borda e núcleo da Internet ==
 
== 11/08/14: Borda e núcleo da Internet ==
  
* Introdução a Redes de Computadores [[https://www.dropbox.com/s/cwf6ax8k6kybvl2/slides-kurose-cap1.pdf slides]]
+
* Introdução a Redes de Computadores [[http://wiki.sj.ifsc.edu.br/images/b/b3/Slides-kurose-cap1.pdf slides]]
 
* [http://www.sj.ifsc.edu.br/~tisemp/RES/listas_exercicios/lista1.pdf Lista de exercícios 1]
 
* [http://www.sj.ifsc.edu.br/~tisemp/RES/listas_exercicios/lista1.pdf Lista de exercícios 1]
  
Linha 67: Linha 68:
 
== 18/08/14: Comutação de Circuitos vs Comutação de Pacotes / Modelos de serviço ==
 
== 18/08/14: Comutação de Circuitos vs Comutação de Pacotes / Modelos de serviço ==
  
* Introdução a Redes de Computadores [[https://www.dropbox.com/s/cwf6ax8k6kybvl2/slides-kurose-cap1.pdf slides]]
+
* Introdução a Redes de Computadores [[http://wiki.sj.ifsc.edu.br/images/b/b3/Slides-kurose-cap1.pdf slides]]
  
 
== 19/08/14: Acesso à rede e meio físico, Estrutura da Internet e ISPs,  Atraso e perda em redes de comutação de pacotes ==
 
== 19/08/14: Acesso à rede e meio físico, Estrutura da Internet e ISPs,  Atraso e perda em redes de comutação de pacotes ==
  
* Introdução a Redes de Computadores [[https://www.dropbox.com/s/cwf6ax8k6kybvl2/slides-kurose-cap1.pdf slides]]
+
* Introdução a Redes de Computadores [[http://wiki.sj.ifsc.edu.br/images/b/b3/Slides-kurose-cap1.pdf slides]]
  
 
== 25/08/14: Arquiteturas em Camadas / Comunicação entre processos ==
 
== 25/08/14: Arquiteturas em Camadas / Comunicação entre processos ==
  
* Introdução a Redes de Computadores [[https://www.dropbox.com/s/cwf6ax8k6kybvl2/slides-kurose-cap1.pdf slides]]
+
* Introdução a Redes de Computadores [[http://wiki.sj.ifsc.edu.br/images/b/b3/Slides-kurose-cap1.pdf slides]]
  
 
<!--
 
<!--
 
== 19/08/14: Lab 3: Captura de pacotes na rede (tcpdump / Wireshark) ==
 
== 19/08/14: Lab 3: Captura de pacotes na rede (tcpdump / Wireshark) ==
  
* [https://www.dropbox.com/s/4ix92rnjrrg5svu/lab4.pdf Roteiro TCPDump]  
+
* [http://wiki.sj.ifsc.edu.br/images/0/04/Lab4.pdf Roteiro TCPDump]  
 
* [http://www.wireshark.org/ Wireshark e manuais]
 
* [http://www.wireshark.org/ Wireshark e manuais]
 
-->
 
-->
Linha 91: Linha 92:
  
 
PROVA SERÁ REALIZADA NA SALA 12!
 
PROVA SERÁ REALIZADA NA SALA 12!
 +
 +
== 08/09/14: Camada de Aplicação: introdução ==
 +
 +
* Introdução aos protocolos da camada de aplicação [[http://wiki.sj.ifsc.edu.br/images/c/c2/Slides-kurose-cap2.pdf slides]]
  
 
== 09/09/14: Laboratório: Captura de pacotes e análise do protocolo HTTP ==
 
== 09/09/14: Laboratório: Captura de pacotes e análise do protocolo HTTP ==

Edição das 16h23min de 9 de setembro de 2014

IntTel: Redes de Computadores - 2014-2 - Prof. Arliones Hoeller / Prof. Tomás Grimm

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.
  • Introdução a Redes de Computadores [slides]


05/08/14: Lab01: Introdução ao Linux

Neste laboratório serão revisados alguns conceitos relacionados ao uso de Linux que serão importantes durante o curso. Para isto, os seguintes roteiros serão executados.

11/08/14: Borda e núcleo da Internet

12/08/14: Lab02: Ferramentas básicas de redes

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

  • ping;
  • ifconfig;
  • traceroute;
  • nestat

[Media:01-Basico_Redes.pdf | Roteiro]

18/08/14: Comutação de Circuitos vs Comutação de Pacotes / Modelos de serviço

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

19/08/14: Acesso à rede e meio físico, Estrutura da Internet e ISPs, Atraso e perda em redes de comutação de pacotes

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

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

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


26/08/14: Revisão

01/09/14: Correção de lista de exercícios

02/09/14: Avaliação 1: Introdução a redes de computadores e à Internet

PROVA SERÁ REALIZADA NA SALA 12!

08/09/14: Camada de Aplicação: introdução

  • Introdução aos protocolos da camada de aplicação [slides]

09/09/14: Laboratório: Captura de pacotes e análise do protocolo HTTP

  • Revisão - Camadas de Protocolos
  • Introdução Camada de Aplicação (protocolo HTTP)

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 lá de ICO 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 ...


Roteiro Wireshark + HTTP