Mudanças entre as edições de "RED1-EngTel (página)"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
(58 revisões intermediárias por 4 usuários não estão sendo mostradas)
Linha 1: Linha 1:
 
__NOTOC__
 
__NOTOC__
== [[Redes de Computadores I |Ementa e referências bibliográficas]]==
 
{{Collapse top | Diário de aula de RED - 2013-2 - Prof. Tiago Semprebom}}
 
==Diário de aula de RED - 2013-2 - Prof. Tiago Semprebom==
 
  
=Instrutor=
+
{{DivulgueEngtelecom}}
''Professor'': Tiago Semprebom, Dr. Eng.
+
==Informações Gerais==
<br>''Email'': tisemp@ifsc.edu.br
+
*[[RED1-EngTel|Carga horária, Ementas, Bibliografia, Professores]]
<br>''Atendimento paralelo'': 3a feira 17:00h - 18:00 h e 6a feira 16h - 17h (Lab. de Desenvolvimento de Tele)
+
*[[Cronograma de atividades (RED1-EngTel) | Cronograma de atividades ]]
<br> ''Endereço web do grupo'': http://groups.google.com/group/ifsc_red
+
*[[RED1-EngTel (Plano de Ensino) | Plano de Ensino]]
<br> ''Endereço de e-mail da disciplina'': ifsc_red@googlegroups.com
 
<br>
 
<br> '''IMPORTANTE:''' o direito de recuperar uma avaliação em que se faltou somente existe mediante justificativa reconhecida pela coordenação. Assim, deve-se protocolar a justificativa no prazo de 48 horas, contando da data e horário da avaliação, e aguardar o parecer da coordenação. O não cumprimento desse procedimento implica a impossibilidade de fazer a recuperação, e assim a reprovação na disciplina.
 
  
* [http://www.sj.ifsc.edu.br/~tisemp/RED/plano-de-ensino.pdf Plano da disciplina]
+
==Edições==
 
+
*[[RED29004-2015-2|RED29004 2015-2 - Prof. Odilson T. Valle]]
= Material de apoio =
+
*[[RED29004-2015-1|RED29004 2015-1 - Prof. Odilson T. Valle]]
 
+
*[[RED29004-2014-2|RED29004 2014-2 - Prof. Odilson T. Valle]]
* Listas de exercícios
+
*[[RED29004-2014-1|RED29004 2014-1 - Prof. Arliones Hoeller]]
** [http://www.sj.ifsc.edu.br/~tisemp/RES/listas_exercicios/lista1.pdf Lista 1]
+
*[[RED29004-2013-2|RED29004 2013-2 - Prof. Tiago Semprebom]]
** [http://www.sj.ifsc.edu.br/~tisemp/RES/listas_exercicios/lista2.pdf Lista 2]
 
** [http://www.sj.ifsc.edu.br/~tisemp/RES/listas_exercicios/lista3.pdf Lista 3]
 
** [http://www.sj.ifsc.edu.br/~tisemp/RES/listas_exercicios/lista4.pdf Lista 4]
 
** [http://www.sj.ifsc.edu.br/~tisemp/RES/listas_exercicios/lista5.pdf Lista 5]
 
** [http://www.sj.ifsc.edu.br/~tisemp/RES/listas_exercicios/lista6.pdf Lista 6]
 
** [http://www.sj.ifsc.edu.br/~tisemp/RES/listas_exercicios/lista7.pdf Lista 7]
 
** [http://www.sj.ifsc.edu.br/~tisemp/RES/listas_exercicios/lista8.pdf Lista 8]
 
** [http://www.sj.ifsc.edu.br/~tisemp/RES/listas_exercicios/lista9.pdf Lista 9]
 
 
 
* Transparências utilizadas durante as aulas
 
** [http://www.sj.ifsc.edu.br/~tisemp/RES/aulas/cap1.pdf Capítulo 1]
 
** [http://www.sj.ifsc.edu.br/~tisemp/RES/aulas/cap2.pdf Capítulo 2]
 
** [http://www.sj.ifsc.edu.br/~tisemp/RES/aulas/cap3.pdf Capítulo 3]
 
** [http://www.sj.ifsc.edu.br/~tisemp/RES/aulas/cap4.pdf Capítulo 4]
 
** [http://www.sj.ifsc.edu.br/~tisemp/RES/aulas/cap5.pdf Capítulo 5]
 
 
 
= Curiosidades =
 
 
 
* [http://en.wikipedia.org/wiki/Telegraphy#Telex Telex]
 
* [http://www.sj.ifsc.edu.br/~msobral/RCO2/docs/ciberespaco.pdf O Ciberespaço e as Redes de Computadores na Construção de Novo Conhecimento]
 
* [http://www.sj.ifsc.edu.br/~tisemp/RES/dissertacao_mestrado.pdf Uma história das Redes  de Computadores]
 
* [http://www.youtube.com/watch?v=9hIQjrMHTv4&eurl=http://www.insidetechno.com/2009/02/17/a-historia-da-internet-em-video/&feature=player_embedded Breve História da Internet]
 
 
 
==16/08/13: Apresentação da disciplina==
 
* Apresentação da disciplina, plano de aula, trabalhos e métodos de avaliação.
 
 
 
==19/08/13: Introdução à Redes de Computadores==
 
 
 
* Breve histórico sobre o surgimento das redes de computadores e a Internet
 
** [http://www.youtube.com/watch?v=9hIQjrMHTv4&eurl=http://www.insidetechno.com/2009/02/17/a-historia-da-internet-em-video/&feature=player_embedded Vídeo sobre surgimento da Internet]
 
 
 
* Vídeo sobre o funcionamento das fibras ópticas
 
** [http://www.youtube.com/watch?v=T1Lt0y-TpBE Vídeo sobre fibra óptica]
 
 
 
* [http://www.rnp.br/backbone/index.php Mapa da rede Ipê (Internet acadêmica pública no Brasil)]
 
 
 
[[imagem:Internet-map.png|600px]]
 
<br>''Uma representação artística das interligações na Internet''
 
 
 
==23/08/13: Introdução à Redes de Computadores==
 
* Hosts, elementos finais e modelos de serviço.
 
* Visão de serviços e componentes, borda da rede, núcleo da rede, protocolos.
 
* Lista de exercícios 1.
 
 
 
==24/08/13: (Sábado Letivo) ==
 
* Serviços da camada de transporte.
 
 
 
==26/08/13: Introdução à Redes de Computadores==
 
* Comutação de circuitos vs Comutação de pacotes.
 
 
 
==30/08/13: Comutação de circuitos==
 
* Viagem à Lages: [http://sepei.ifsc.edu.br/ SEPEI 2013]
 
 
 
==02/09/13:  Arquitetura em Camadas ==
 
* Redes de acesso e meio físico
 
* Arquitetura em Camadas
 
 
 
==06/09/13: Arquitetura em Camadas ==
 
* 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.
 
 
 
[[imagem:Res-camadas3.png]]
 
<br><br>''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 ([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>
 
 
 
==09/09/13: Camada de Aplicação ==
 
* '''Seminário Novas Tecnologias em Redes'''
 
* ''Distribuição dos temas'':
 
** Redes Veiculares (VANETS): ''Leonan e Marcus''
 
** 4G (LTE) (comparar com Wi-Max): ''Jean, Danilo e Gustavo''
 
** RFID: ''Letícia e Tamara'':
 
** IEEE 802.11ac (sucessor do IEEE 802.11n): ''Ernani, Thiago Werner''
 
** ISA 100a e WirelessHart: Bruno e Thiago Bonotto
 
** Internet das Coisas (Internet of Things): ''Elton F. Broering e Flávia de Oliveira Barbosa''
 
 
 
* ''Sobre o Seminário de RED'':
 
** Data de entrega do documento: '''21/10/2013''' (impreterivelmente).
 
** Data de apresentação do trabalho: '''25/10/2013'''.
 
** Modelo para redação do documento .odt: [http://www.sj.ifsc.edu.br/~tisemp/RCO/modelo_documento.odt clique aqui]
 
** Modelo para redação do documento em Látex: [http://www.sj.ifsc.edu.br/~tisemp/RCO/modelo_documento_latex.tar.gz clique aqui]
 
** Minicurso Látex (apoio): [http://www.sj.ifsc.edu.br/~tisemp/RCO/minicurso-latex.pdf clique aqui]
 
** Duração da apresentação: 20 minutos + 5 minutos de perguntas.
 
** '''Modelo para apresentação''' [http://www.sj.ifsc.edu.br/~tisemp/RCO/modelo_apresentacao.odp clique aqui]
 
 
 
==13/09/13: Camada de Aplicação ==
 
* Serviço de Correio Eletrônico (SMTP, POP3 e IMAP)
 
* Serviço de Nomes: DNS
 
 
 
* Capítulo 25 do livro ''Comunicação de Dados e Redes de Computadores, 4a. ed.'', de Behrouz Forouzan.
 
 
 
 
 
DNS é um dos serviços fundamentais da Internet, tendo sido concebido em 1987 (ver [http://tools.ietf.org/html/rfc1034 RFC 1034] e [http://tools.ietf.org/html/rfc1035 RFC 1035]) !
 
 
 
O serviço DNS (Domain Name System) pode ser comparado a um grande catálogo telefônico, que possibilita que se descubra o endereço IP (nessa analogia, equivalente ao número de telefone) associado a um determinado ''nome de domínio'' (comparável ao nome de uma pessoa ou empresa). A ideia é poder endereçar máquinas com nomes mais fáceis de lidar e memorizar, ao contrário de usar endereços numéricos.
 
 
 
Lembre que:
 
* Máquinas são identificadas na Internet por endereços IP.
 
* Nomes de domínios são nomes de fácil memorização que são associados a essas máquinas.
 
 
 
A seção a seguir descreve esse serviço fundamental da Internet.
 
 
 
== Uma ''breve'' descrição sobre DNS ==
 
 
 
''O texto abaixo foi obtido de [http://informatica.hsw.uol.com.br/dns.htm Como funcionam os servidores de domínio (DNS)].''
 
 
 
 
 
Se você gasta algum tempo na internet mandando e-mails ou navegando pela web, está utilizando servidores de domínios sem mesmo perceber. O sistema DNS (''Domain Name System'') forma uma das maiores, mais ativas e mais distribuídas bases de dados do planeta. Sem o DNS, a internet acabaria rapidamente.
 
 
 
Quando você navega na internet ou manda uma mensagem de e-mail, você estará utilizando um nome de domínio. Por exemplo, a URL "http://www.hsw.com.br" contém o nome de domínio ''howstuffworks.com''. Assim como o endereço de e-mail "iknow@howstuffworks.com."
 
 
 
Nomes como “howstuffworks.com” são facilmente lembrados pelas pessoas, mas não ajudam em nada as máquinas. Todas elas usam endereços de IP para se referirem umas às outras. A máquina a que as pessoas se referem como "www.hsw.com.br", por exemplo, possui o endereço IP 216.183.103.150. Toda vez que se usa um nome de domínio, os servidores de domínios da internet (DNS) estarão traduzindo os nomes de domínio legíveis em endereços de IP reconhecidos pelas máquinas. Durante um dia de navegação e envio de e-mails, os servidores de domínios podem ser acessados inúmeras vezes.
 
 
 
'''Os servidores de domínios traduzem ''nomes de domínios'' em endereços de IP'''. Isto parece uma tarefa simples, e seria, exceto por cinco razões:
 
 
 
# Atualmente existem bilhões de endereços de IP em uso e a grande maioria das máquinas possui um nome legível associado.
 
# Alguns bilhões de requisições são feitas ao DNS todos os dias. Uma única pessoa pode fazer várias requisições em apenas um dia e existem muitas pessoas e máquinas usando a Internet diariamente.
 
# Nomes de domínio e endereços de IP podem mudar frequentemente (até mesmo diariamente).
 
# Novos nomes de domínio são criados todos os dias.
 
# Milhões de pessoas trabalham na mudança e no acréscimo de nomes de domínio e endereços de IP constantemente.
 
 
 
'''O sistema DNS é uma [http://pt.wikipedia.org/wiki/Banco_de_dados base de dados]''', e nenhuma outra em todo o globo recebe tantas requisições. É a única, também, modificada por milhões de pessoas todos os dias. Isso é o que faz o sistema DNS tão singular.
 
 
 
=== Endereços IP ===
 
 
 
Para manter todas as máquinas da Internet em perfeito funcionamento, cada uma delas é associada a um único endereço chamado endereço de IP. IP significa ''protocolo da Internet'', e é um número de 32 bits normalmente apresentado como quatro “octetos” em um “número decimal pontuado.” Um endereço de IP comum se parece com esse:
 
 
 
<syntaxhighlight lang=text>
 
216.183.103.150 
 
</syntaxhighlight>
 
 
Os quatro números em um endereço de IP são chamados de octetos por possuírem valores entre 0 e 255 (256 possibilidades por octeto).
 
 
 
Toda máquina na Internet possui seu próprio endereço de IP (na verdade, tem ao menos UM endereço). Um servidor tem um endereço IP estático, que raramente muda. Uma máquina doméstica, que se conecta através de um modem, muitas vezes possui um endereço de IP designado pelo provedor no momento da conexão. Este endereço IP é único a cada sessão e pode mudar na próxima vez que houver uma conexão. Considerando isto, um provedor precisa apenas de um endereço IP para cada modem que dá suporte, ao invés de um para cada cliente (isso vale para ADSL ou conexões 3G também).
 
 
 
Se você estiver usando um computador com sistema operacional Linux, você pode ver seu endereço IP por meio do seguinte comando:
 
 
 
<syntaxhighlight lang=bash>
 
aluno@M2:~$ ifconfig
 
eth0      Link encap:Ethernet  Endereço de HW 84:2b:2b:7c:54:f5 
 
          inet end.: 172.18.80.251  Bcast:172.18.127.255  Masc:255.255.128.0
 
          endereço inet6: fe80::862b:2bff:fe7c:54f5/64 Escopo:Link
 
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Métrica:1
 
          pacotes RX:3634552 erros:0 descartados:145885 excesso:0 quadro:0
 
          Pacotes TX:608253 erros:0 descartados:0 excesso:0 portadora:0
 
          colisões:0 txqueuelen:1000
 
          RX bytes:888269786 (888.2 MB) TX bytes:195176030 (195.1 MB)
 
          IRQ:21 Memória:f7fe0000-f8000000
 
</syntaxhighlight>
 
 
 
No exemplo acima, a interface de rede ''eth0'' (que é o dispositivo de hardware ou software que liga o computador fisicamente a Internet) possui o endereço IP 172.18.80.251. As demais informações descrevem outros parâmetros e características da interface de rede, e serão estudados em momento oportuno (mas não agora ;-).
 
 
 
Para que as máquinas acessem a Internet, é necessário apenas um endereço de IP para se conectar a um servidor. Você poderia digitar em seu navegador, por exemplo, a URL http://200.135.190.28 e alcançaria a máquina que contém o servidor web do IFSC. Porém essa forma de endereçar servidores na Internet é pouco prática. Nomes de domínio são estritamente usados para a nossa conveniência.
 
 
 
=== Nomes de domínios ===
 
 
 
Se precisássemos lembrar de todos os endereços de IP das páginas da Web que visitamos diariamente, ficaríamos malucos. Seres humanos não são bons em lembrar séries de números. No entanto, somos bons na lembrança de palavras, por isso usamos os nomes de domínios. Você possui, provavelmente, vários nomes de domínios guardados em sua cabeça. Como por exemplo:
 
 
 
* www.hsw.com.br - um nome típico
 
* www.google.com - o nome mais conhecido no mundo
 
* www.mit.edu - um nome EDU (educacionais) bastante popular
 
* encarta.msn.com - um servidor da Web que não começa com www
 
* www.bbc.co.uk - um nome que utiliza quatro partes em vez de três
 
* ftp.microsoft.com - um servidor FTP (em inglês) ao invés de um servidor da Web
 
 
 
As partes COM, EDU e UK destes servidores são chamadas de domínios principais ou domínios de primeiro nível. Existem vários domínios principais, incluindo COM, EDU, GOV, MIL, NET, ORG e INT, assim como as singulares combinações de duas letras para cada país (em inglês).
 
 
 
Em cada domínio principal existe uma enorme lista de domínios secundários. No domínio principal COM, por exemplo, tem-se:
 
 
 
* howstuffworks
 
* google
 
* msn
 
* microsoft
 
* ... e milhões de outros.
 
 
 
Cada nome no domínio principal COM precisa ser único, mas podem existir réplicas entre os domínios. Por exemplo, howstuffworks.com e howstuffworks.org são duas máquinas completamente diferentes.
 
 
 
No caso de bbc.co.uk, este é um domínio terciário. São possíveis até 127 níveis, no entanto, mais do que quatro são raros.
 
 
 
A palavra mais à esquerda, como www ou encarta, é nome de hospedagem, que determina o nome de uma máquina específica (com um endereço de IP próprio) em um domínio. Um domínio concedido pode conter milhões de nomes de hospedagem desde que sejam únicos.
 
 
 
Por causa desta determinação de todos os nomes em um domínio serem únicos, é necessário que uma entidade controle a lista destes servidores e garanta que nenhuma duplicação aconteça. O domínio COM, por exemplo, não pode conter dois nomes iguais e uma empresa chamada Network Solutions (em inglês) é a responsável por manter esta lista. Ao registrar um nome de domínio, o processo passa por um dos inúmeros registradores que trabalham na Network Solutions para adicionar nomes à lista. Ao mesmo tempo, é mantida uma base de dados chamada whois (em inglês) que contém informações sobre o proprietário e o servidor de cada domínio. Se você acessar o formulário whois (em inglês), encontrará informações acerca de qualquer domínio existente.
 
 
 
Apesar de ser importante possuir uma autoridade central cuidando da base de dados referente aos nomes no domínio principal COM (e nos outros), você pode não querer centralizar a base de dados de todas as informações do domínio. A Microsoft, por exemplo, tem inúmeros endereços de IP e de nomes de hospedagens. Esta empresa quer manter seu próprio servidor de domínio pelo microsoft.com. Similarmente, a Grã-Bretanha quer administrar os domínios principais uk e a Austrália os domínios au, assim como nós brasileiros queremos administrar os domínios br. Por esta razão, o sistema DNS é um sistema partilhado. A Microsoft é completamente responsável pela manutenção do servidor microsoft.com: ela mantém as máquinas que implementam sua parte do sistema DNS, podendo mudar a base de dados de seu domínio sempre que necessitar, pois possui seus próprios servidores de domínio.
 
 
 
Todo domínio possui um servidor em algum lugar, responsável por lidar com as requisições, onde há uma pessoa mantendo os registros deste DNS. Esta é uma das partes mais extraordinárias deste sistema: ele está completamente espalhado por todo o planeta em milhões de máquinas, administradas por milhões de pessoas e, ainda assim, se comporta como uma base de dados única e integrada.
 
 
 
=== Servidores DNS ===
 
 
 
Servidores DNS fazem duas coisas o tempo todo:
 
 
 
* Aceitam solicitações de programas para converter nomes de domínios em endereços de IP.
 
* Aceitam solicitações de outros servidores para converter nomes de domínios em endereços de IP.
 
 
 
Quando uma solicitação chega, o servidor pode exercer uma das quatro opções:
 
 
 
# Pode responder diretamente com um endereço de IP, por já conhecer previamente este endereço do domínio.
 
# Pode contatar outros servidores e tentar encontrar o endereço de IP para que foi solicitado, um processo que pode ser repetido várias vezes.
 
# Pode dizer: “eu não sei o endereço de IP para o domínio solicitado, mas aqui está o endereço de IP de um servidor que sabe mais do que eu.”
 
# Pode retornar uma mensagem de erro, pois o domínio solicitado é inválido ou inexistente.
 
 
 
Ao digitar uma URL em seu navegador, o primeiro passo que este faz é converter o nome do domínio e da hospedagem em um endereço IP, para que o navegador solicite uma página da web à máquina que possui esse endereço de IP. Para fazer esta conversão, o navegador se comunica com um servidor DNS.
 
 
 
Ao configurar seu computador para se conectar a Internet, você (ou o software instalado para se conectar ao seu provedor) precisa informar ao computador qual o servidor DNS que deve ser usado para a conversão de nomes de domínios em endereços de IP. Para ver qual o servidor DNS configurado em seu computador (assumindo que ele esteja com Linux), use o comando ''nslookup'':
 
 
 
<syntaxhighlight lang=bash>
 
aluno@M2:~$ nslookup www.ifsc.edu.br
 
Server: 200.135.37.65
 
Address: 200.135.37.65#53
 
 
 
Non-authoritative answer:
 
Name: www.ifsc.edu.br
 
Address: 200.18.10.13
 
</syntaxhighlight>
 
 
 
== A estrutura das informações mantidas no DNS ==
 
 
 
Como deve ter ficado claro na [[RES-2013-1#Uma_breve_descri.C3.A7.C3.A3o_sobre_DNS|seção anterior]], '''DNS ''(Domain Name System)''''' é uma base de dados distribuída e hierárquica. Nela se armazenam informações para mapear nomes de máquinas da Internet para endereços IP e vice-versa, informação para roteamento de email, e outros dados utilizados por aplicações da Internet.
 
 
 
A informação armazenada no DNS é identificada por nomes de domínio que são organizados em uma árvore, de acordo com as divisões administrativas ou organizacionais. Cada nodo dessa árvore, chamado de ''domínio'', possui um rótulo (na seção anterior isso foi denominado ''hospedagem''). O nome de domínio de um nodo é a concatenação de todos os rótulos no caminho do nodo até a raiz. Isto é representado como uma ''string'' de rótulos listados da direita pra esquerda e separados por pontos (ex: ifsc.edu.br, sj.ifsc.edu.br). Um rótulo precisa ser único somente dentro do domínio pai a que pertence.
 
 
 
Por exemplo, um nome de domínio de uma máquina no IFSC pode ser ''mail.ifsc.edu.br'', em que ''br'' é o domínio do topo da hierarquia ao qual ''mail.sj.ifsc.edu.br'' pertence.
 
Já ''edu'' é um subdomíno de ''br'', ''ifsc'' um subdomínio de ''edu'', e ''mail'' o nome da máquina em questão.
 
 
 
Por razões administrativas, o espaço de nomes é dividido em áreas chamadas de ''zonas'', cada uma iniciando em um nodo e se estendendo para baixo para os nodos folhas ou nodos onde outras zonas iniciam. Os dados de cada zona são guardados em um ''servidor de nomes'', que responde a consultas sobre uma zona usando o protocolo DNS.
 
 
 
Clientes buscam informação no DNS usando uma biblioteca de resolução (''resolver library''), que envia as consultas para um ou mais servidores de nomes e interpreta as respostas.
 
 
 
[[Imagem:hierarquia-DNS.gif|400px]]
 
 
 
(tirado do [http://www.bind9.net/manual/bind/9.3.2/Bv9ARM.ch01.html#id2546234 manual do BIND9])
 
 
 
Ver também o [http://my.safaribooksonline.com/0-596-00158-4/dns4-CHP-2 livro sobre DNS e BIND] da O'Reilly.
 
 
 
Você pode consultar a IANA para conhecer as delegações dos ''top-level domains'' como o .br, por exemplo. A IANA é responsável por coordenar estas delegações em confirmidade com suas políticas. Consulte: [http://www.iana.org/domains/root/db top-level domains]
 
 
 
=== Registros DNS ===
 
 
 
Cada rótulo na hierarquia DNS possui um conjunto de informações associadas a si. Essas informações são guardas em registros de diferentes tipos, dependendo de seu significado e propósito. Cada consulta ao DNS retorna assim as informações do registro pedido associado ao rótulo. Por exemplo, para ver o registro de endereço IP associado a www.ifsc.edu.br pode-se executar o comando [http://manpages.ubuntu.com/manpages/lucid/man1/dig.1.html dig] (o resultado teve alguns comentários removidos):
 
 
 
<syntaxhighlight lang=bash>
 
tisemp@M1:~$ dig sj.ifsc.edu.br mx
 
 
 
;; QUESTION SECTION:
 
;sj.ifsc.edu.br. IN MX
 
 
 
;; ANSWER SECTION:
 
sj.ifsc.edu.br. 3600 IN MX 10 hendrix.sj.ifsc.edu.br.
 
 
 
;; AUTHORITY SECTION:
 
sj.ifsc.edu.br. 3600 IN NS ns.pop-udesc.rct-sc.br.
 
sj.ifsc.edu.br. 3600 IN NS ns.pop-ufsc.rct-sc.br.
 
sj.ifsc.edu.br. 3600 IN NS hendrix.sj.ifsc.edu.br.
 
 
 
;; ADDITIONAL SECTION:
 
hendrix.sj.ifsc.edu.br. 3600 IN A 200.135.37.65
 
ns.pop-ufsc.rct-sc.br. 11513 IN A 200.135.15.3
 
ns.pop-udesc.rct-sc.br. 37206 IN A 200.135.14.1
 
</syntaxhighlight>
 
 
 
Cada uma das informações acima mostra um determinado registro e seu conteúdo, como descrito na tabela abaixo:
 
 
 
{| border="1" cellpadding="2"
 
!Nome
 
!TTL
 
!Classe
 
!Registro
 
!Conteúdo do registro
 
|-
 
|hendrix.sj.ifsc.edu.br.||3600||IN||A||200.135.37.65
 
|-
 
|sj.ifsc.edu.br.||3600||IN||NS||hendrix.sj.ifsc.edu.br.
 
|-
 
|sj.ifsc.edu.br.||3600||IN||MX||10 hendrix.sj.ifsc.edu.br.
 
|}
 
 
 
Obs: ''TTL'' é o tempo de validade (em segundos) da informação retornada do servidor de nomes, e ''classe'' é o tipo de endereço (no caso IN equivale a endereços Internet).
 
 
 
Os tipos de registros mais comuns são:
 
 
 
{| border="1" cellpadding="2"
 
!Registro
 
!Descrição
 
!Exemplo
 
|-
 
|A || Endereço (Address) || www.sj.ifsc.edu.br IN A 200.135.37.66
 
|-
 
|NS|| Servidor de nomes (Name Server) || sj.ifsc.edu.br IN NS hendrix.sj.ifsc.edu.br.
 
|-
 
|CNAME || Apelido (Canonical Name) || mail.sj.ifsc.edu.br IN CNAME hendrix.sj.ifsc.edu.br.
 
|-
 
|MX || Roteador de email (Mail Exchanger) || sj.ifsc.edu.br IN MX mail.sj.ifsc.edu.br.
 
|-
 
|SOA || dados sobre o domínio (Start of Authority)||sj.ifsc.edu.br IN SOA hendrix.sj.ifsc.edu.br. root.sj.ifsc.edu.br. 2009120102 1200 120 604800 3600
 
|-
 
|PTR || Ponteiro para nome (Pointer) || 65.37.135.200.in-addr.arpa IN PTR hendrix.sj.ifsc.edu.br.
 
|-
 
|TXT || Texto genérico (Text) || sj.ifsc.edu.br IN TXT "v=spf1 a mx ~all"
 
|}
 
 
 
Uma zona assim é composta de um conjunto de registros com todas as informações dos domínios nela contidos. O conteúdo de uma zona, contendo o domínio ''example.com'', pode ser visualizado abaixo:
 
 
 
<syntaxhighlight lang=text>
 
example.com  86400  IN SOA ns1.example.com. hostmaster.example.com. (
 
      2002022401 ; serial
 
      10800 ; refresh
 
      15 ; retry
 
      604800 ; expire
 
      10800 ; minimum
 
    )
 
      IN  NS    ns1.example.com.
 
      IN  NS    ns2.smokeyjoe.com.
 
      IN  MX  10 mail.another.com.
 
      IN  TXT  "v=spf1 mx -all"
 
 
 
ns1    IN  A      192.168.0.1
 
www    IN  A      192.168.0.2
 
ftp    IN  CNAME  www.example.com.
 
 
 
bill  IN  A      192.168.0.3
 
fred  IN  A      192.168.0.4
 
</syntaxhighlight>
 
 
 
==16/09/13: Camada de Aplicação (Laboratório Redes I) ==
 
===  Experimento 1: Comunicação de dados ===
 
 
 
A comunicação dados pode ser entendida como '''troca de informação entre dois dispositivos através de algum meio de comunicação'''. A comunicação ocorre no âmbito de um sistema de telecomunicações, composto por equipamentos (hardware) e programas (softwares). Um sistema básico de comunicação de dados se constitui de cinco componentes:
 
 
 
[[imagem:Rede-intro-1.png]]
 
 
 
# '''A mensagem''': a informação a ser transmitida. O conteúdo da mensagem, seja um texto, música, video, ou qualquer outro tipo de informação, é representada por conjuntos de '''bits''' (dígitos binários).
 
# '''Transmissor:''' dispositivo que transmite a mensagem.
 
# '''Receptor:''' dispositivo que recebe a mensagem.
 
# '''Meio de comunicação:''' caminho físico por onde viaja a mensagem do transmissor até o receptor.
 
# '''Protocolo:''' conjunto de regras que governa a comunicação de dados.
 
 
 
Neste experimento, vamos interagir com um servidor web e identificar esses cinco componentes.
 
# Usando um navegador, acesse os seguintes links:
 
#* [http://tele.sj.ifsc.edu.br/~tisemp/RES/arquivo.txt http://tele.sj.ifsc.edu.br/~tisemp/RES/arquivo.txt]
 
#* [http://tele.sj.ifsc.edu.br/~tisemp/RES/teste.html http://tele.sj.ifsc.edu.br/~tisemp/RES/teste.html]<br><br>Quais são os componentes do sistema de comunicação de dados ?
 
# Vamos repetir o acesso aos links acima, porém sem usar o navegador. A ideia é que nós façamos o papel de navegador. Isso deve ser feito com os seguintes passos:
 
#* Abra um terminal de texto no Linux (menu ''Aplicativos->Acessórios->Terminal'').
 
#* Execute este comando: <syntaxhighlight lang=bash>
 
telnet tele.sj.ifsc.edu.br 80
 
</syntaxhighlight>
 
#* Após aparecer esta linha: <syntaxhighlight lang=text>
 
Trying 200.135.37.75...
 
Connected to integrado.sj.ifsc.edu.br.
 
Escape character is '^]'.
 
</syntaxhighlight>digite o seguinte:<syntaxhighlight lang=text>
 
GET /~tisemp/RES/arquivo.txt HTTP/1.0
 
</syntaxhighlight> e em seguida tecle ENTER duas vezes.
 
#* Agora execute o seguinte para acessar o outro link: <syntaxhighlight lang=bash>
 
telnet tele.sj.ifsc.edu.br 80
 
</syntaxhighlight>
 
#* Após aparecer esta linha: <syntaxhighlight lang=text>
 
Trying 200.135.37.75...
 
Connected to integrado.sj.ifsc.edu.br.
 
Escape character is '^]'.
 
</syntaxhighlight>digite o seguinte:<syntaxhighlight lang=text>
 
GET /~tisemp/RES/teste.html HTTP/1.0
 
</syntaxhighlight> e em seguida tecle ENTER duas vezes.
 
#* Compare o resultado das execuções desses comandos com o que se viu no navegador. Qual a diferença em cada caso ?
 
#* Identifique os componentes do sistema de comunicação de dados nesse acesso direto.
 
 
 
=== Experimento 2: transmissão de mensagens de aplicação ===
 
 
 
Neste experimento, serão observadas as mensagens transmitidas entre um navegador e um servidor web, e com base nelas devem ser identificados:
 
* os protocolos envolvidos e suas respectivas camadas dentro do modelo da Internet.
 
* os encapsulamentos realizados por esses protocolos.
 
* as informações que possibilitam identificar univocamente o navegador e o servidor web durante sua comunicação.
 
 
 
# Execute o wireshark em seu computador: abra um terminal em ''Aplicativos->Terminal'' e execute <syntaxhighlight lang=bash>
 
sudo wireshark
 
</syntaxhighlight>
 
# Na tela do wireshark, ative a captura na interface de rede eth0 (ela está listada no lado esquerdo).
 
# Usando um navegador, acesse o link [http://tele.sj.ifsc.edu.br/~tisemp/RES/arquivo.txt http://tele.sj.ifsc.edu.br/~tisemp/RES/arquivo.txt].
 
# Interrompa a captura no wireshark, clicando no menu ''Capture->Stop''.
 
# Na tela do wireshark, escreva ''http'' na caixa de edição ''Filter'', e em seguida clique em ''Apply''.
 
# Selecione o primeiro pacote da lista. Em seguida, clique no menu ''Analyze->Follow TCP Stream''. Uma tela se abrirá, e nela você poderá observar os dados transmitidos pelo navegador (em vermelho) e pelo servidor web (em azul). Esses são os dados da conversação ... todo o resto são informações de outros protocolos usadas para realizar a comunicação.
 
# Voltando à lista de pacotes mostrada pelo wireshark, observe a sequência de pacotes. Com base nela identifique:
 
#* os protocolos envolvidos
 
#* em que camada cada um deles atua
 
#* que informações mantidas nesses protocolos possibilitam identificar o navegador e o servidor web.
 
# Cada protocolo transmite e recebe pacotes com um determinado formato, composto por cabeçalho e dados carregados (''payload''). Identifique nos pacotes recebidos que partes correspondem a cabeçalho e dados carregados.
 
# '''DESAFIO:''' imagine que foram capturados pacotes em uma rede, em que se monitoram as comunicações de uma determinada pessoa sob investigação. O investigador deve analisar esses pacotes em busca de arquivos que tenham sido transmitidos. Os pacotes capturados foram salvos em um arquivo de captura do wireshark, o qual se encontra aqui:<br><br>[http://tele.sj.ifsc.edu.br/~tisemp/RES/captura.log captura.log]<br><br>Para visualizar os pacotes, use o menu ''File->Open'' do wireshark. Verifique se existem arquivos transmitidos dentro desses pacotes, e, caso afirmativo, extraia-os e visualize seus conteúdos. Para cada arquivo encontrado, informe:
 
#* qual o protocolo de aplicação usado para transmiti-lo
 
#* que computador foi usado para acessá-los, e qual servidor foi acessado.
 
 
 
=== Experimento 3: pacotes que passeiam pela rede ===
 
 
 
Neste experimento, deve-se evidenciar a transmissão de pacotes desde o transmissor até o receptor, que pode estar em outra rede. Como já foi discutido, para que isso seja possível deve haver uma forma de transmitir esses pacotes para dispositivos intermediários na rede, que os encaminham para seus destinos. Quer dizer, os pacotes devem ser roteados até seu receptor.
 
 
 
# Execute o wireshark em seu computador, e ative a captura de pacotes.
 
# Usando um navegador, acesse [http://wiki.sj.ifsc.edu.br/index.php/Principal esta página].
 
# Observe os pacotes transmitidos entre seu computador e o computador que atendeu seu pedido e respondeu com o conteúdo da página (isso é, o servidor web).
 
#* que informações identificam essa comunicação ?
 
#* quais os protocolos envolvidos ?
 
# O servidor web está fora da rede do laboratório. Assim, os pacotes precisaram ser encaminhados pelo computador do professor para a rede da escola (lembre que o computador do professor fica entre a rede do laboratório e a do Câmpus). Portanto, nesse computador deve ser possível visualizar seus pacotes sendo transmitidos em direção ao servidor, assim como a resposta do servidor. Observe esses pacotes no wireshark executado pelo professor.
 
#* as informações que identificam suas comunicações são as mesmas que as identificadas em seu próprio computador ?
 
# Acesse [http://www.ufsc.br/ a página da UFSC]. Enquanto isso, observe na tela do projeto do laboratório o wireshark no computador do professor capturando seus pacotes.
 
#* que informações identificam suas comunicações ?
 
# O servidor web da UFSC está em outra rede. Com certeza vários equipamentos intermediários precisarão ajudar para que os pacotes cheguem lá, e as respostas voltem para os seus computadores. Para saber por onde seus pacotes passam, use este comando:<syntaxhighlight lang=bash>
 
traceroute -n www.ufsc.br
 
</syntaxhighlight>
 
#* que informação está sendo usada para encaminhar os pacotes até o servidor web da UFSC ?
 
#* que protocolo mantém e usa essa informação ?
 
 
 
=== Experimento 4: Aplicação Web e o protocolo HTTP ===
 
 
 
Nas atividades abaixo sempre use o wireshark para observar as comunicações realizadas. Preste atenção aos encapsulamentos realizados e os protocolos envolvidos, assim como as informações mantidas por esses protocolos. Em particular, observe o endereço IP (mantido pelo protocolo IP na camada de rede)
 
e números de port (mantidos por protocolos TCP e UDP na camada de transporte).
 
 
 
# Para criar um servidor web muito simples, siga estes passos:
 
## Baixe [http://tele.sj.ifsc.edu.br/~tisemp/RES/resposta este arquivo].
 
## Execute este comando: <syntaxhighlight lang=bash>
 
nc -l 8080 < resposta > pedido
 
</syntaxhighlight>
 
## Em seu navegador, acesse a URL http://127.0.0.1:8080/.
 
## Observe o resultado na tela do seu navegador, e veja o conteúdo do arquivo ''pedido''.
 
# Para rodar um servidor web pequeno, mas funcional, faça o seguinte:
 
## Baixe [http://tele.sj.ifsc.edu.br/~tisemp/RES/monkey-1.1.1.tar.gz este arquivo].
 
## Execute estes comandos: <syntaxhighlight lang=bash>
 
tar xzf monkey-1.1.1.tar.gz
 
cd monkey-1.1.1
 
./configure --prefix=/home/aluno/monkey
 
make
 
make install
 
</syntaxhighlight>
 
## Edite o arquivo /home/aluno/monkey/conf/sites/default e modifique a seguinte linha: <syntaxhighlight lang=text>
 
DocumentRoot /home/aluno/
 
</syntaxhighlight>
 
## Edite o arquivo /home/aluno/monkey/conf/plugins.load e verifique se ele contém o seguinte: <syntaxhighlight lang=text>
 
    # Directory Listing Plugin
 
    # ========================
 
    # When a directory is requested, this plugin will show
 
    # an HTML list of the available content to the client.
 
    #
 
    Load /home/sobral/tmp/monkey/plugins/monkey-dirlisting.so
 
</syntaxhighlight>
 
## Execute o servidor web: <syntaxhighlight lang=bash>
 
/home/aluno/monkey/bin/monkey
 
</syntaxhighlight>
 
## Com seu navegador, acesse http://127.0.0.1:2001/
 
## Experimente navegar pelos links mostrados.
 
# Acesse as seguintes páginas, identificando o método HTTP, a URI, a versão do protocolo e os cabeçalhos enviados e recebidos. Verifique também se há corpo da mensagem no pedido ou na resposta:
 
#* [http://tele.sj.ifsc.edu.br/~tisemp/RES/arquivo.txt File]
 
#* [http://tele.sj.ifsc.edu.br/~tisemp/RES/lagoa.jpg Lake]
 
#* [http://tele.sj.ifsc.edu.br/~tisemp/RES/teste.html Test]
 
#* [https://www.ifsc.edu.br/ https://www.ifsc.edu.br/]
 
# Acesse a página abaixo, e use o wireshark para acompanhar a comunicação. O que se pode ver de diferente em relação à atividade anterior ?
 
#* [http://tele.sj.ifsc.edu.br/~msobral/res/form.html Formulário]
 
# Acesse a página abaixo, e observe quantas requisições HTTP são geradas a partir desse acesso. Como você explica essa quantidade de requisições ?
 
#* [http://tele.sj.ifsc.edu.br/~tisemp/RES/muitos.html Diversos]
 
 
 
== Para pensar ==
 
 
 
# Para que o protocolo HTTP é usado atualmente além de acesso a documentos na web? Faça uma pesquisa sobre isso.
 
# Pesquise o significado dos cabeçalhos HTTP vistos nos acessos feitos na aula de hoje.
 
 
 
=== Considerações finais ===
 
 
 
Os experimentos realizados buscaram introduzir alguns mecanismos envolvidos na comunicação através de uma rede de computadores. Tais mecanismos são implementados por alguns protocolos, lembrando que um protocolo especifica o ''formato dos pacotes transmitidos'' e as ''regras de comunicação para intercâmbio desses pacotes''. Durante os experimentos, teve-se contato com alguns protocolos importantes envolvidos em comunicações na Internet, assim como algumas das principais informações definidas e usadas por esses protocolos. A visualização da hierarquia em que operam esses protocolos buscou mostrar o modelo de camadas da Internet, que define como deve funcionar um sistema que se comunica nesse tipo de rede.
 
 
 
'''Para pensar:'''
 
* Para cada experimento, desenhe um diagrama de rede que mostre os equipamentos envolvidos. Para cada equipamento, desenhe também o modelo de camadas da Internet. Por fim, mostre o fluxo dos pacotes através dessas camadas (desde o transmissor até o receptor), indicando:
 
** que protocolo foi usado em cada camada.
 
** que serviço cada protocolo realizou.
 
** que informações foram usadas por cada protocolo.
 
 
 
==20/09/13: Camada de Aplicação (Laboratório Redes I) ==
 
=== Atividade: Serviço de Nomes (DNS) ===
 
 
 
# Usando o programa [http://manpages.ubuntu.com/manpages/hardy/man1/host.1.html host] ou [http://manpages.ubuntu.com/manpages/hardy/man1/dig.1.html dig], descubra os endereços IP associados aos seguintes nomes de domínios:
 
#* mail.ifsc.edu.br
 
#* www.sj.ifsc.edu.br
 
#* www.google.com
 
#* www.gmail.com
 
#* www.amazon.co.uk
 
#* www.gov.za
 
#* www.sls.com.au
 
# Agora descubra quem é o servidor DNS responsável por cada um dos domínios dos nomes acima. Para isso consulte o valor do registro NS associado a esses domínios. Por exemplo, com o programa ''host'' isso pode ser feito assim: <syntaxhighlight lang=bash>
 
host -t ns ifsc.edu.br
 
</syntaxhighlight>
 
# Descubra qual o servidor DNS usado pelo seu computador. Para isso é mais fácil usar o programa [http://manpages.ubuntu.com/manpages/lucid/man1/nslookup.1.html nslookup]: <syntaxhighlight lang=bash>
 
# Use o nslookup para consultar o endereço IP de um nome qualquer ...
 
nslookup www.ifsc.edu.br
 
</syntaxhighlight>
 
# Agora que já está ficando claro como funcionam as consultas DNS, deve-se investigar como se dá a comunicação entre seu computador e seu servidor DNS. Portanto, execute o wireshark: <syntaxhighlight lang=bash>
 
sudo wireshark
 
</syntaxhighlight>... e em seguida faça uma consulta DNS qualquer. Com base nisso identifique o seguinte:
 
#* Quantas mensagens são trocadas entre cliente e servidor DNS para cada consulta ?
 
#* Que protocolo de transporte é usado ? E que port ?
 
#* Qual o formato das mensagens DNS ? Elas são textuais como as mensagens HTTP ou SMTP ?
 
#* Qual o tipo de registro DNS acessado em cada consulta ?
 
#* Que informações estão contidas nas respostas DNS ? Há algo além do que foi pedido ?
 
#* Qual o tamanho das mensagens DNS ?
 
# O serviço DNS fornece outras informações além do endereço IP associado a cada nome de domínio. Por exemplo, como ele se pode descobrir que ''host'' recebe emails em um determinado domínio. Isso é utilizado pelos MTA mundo afora para entregarem emails para seus destinatários (lembre que isso se faz com o protocolo SMTP). Para descobrir essa informação, deve-se consultar o registro MX de um domínio. Por exemplo: <syntaxhighlight lang=bash>
 
host -t mx ifsc.edu.br
 
</syntaxhighlight>Descubra quem é o servidor que recebe emails nos seguintes domínios:
 
#* gmail.com
 
#* hotmail.com
 
#* uol.com.br
 
#* ufsc.br
 
# Outra informação útil guardada por servidores DNS é a tradução de endereço IP para nome de domínio. Isso é chamado de tradução reversa (ou DNS reverso). Usando os programas de diagnóstico já vistos, isso pode ser feito assim: <syntaxhighlight lang=bash>
 
dig -x 200.180.10.13
 
</syntaxhighlight> ... o ''dig'' tem um resultado um pouco mais carregado que os outros utilitários (''host'' e ''nslookup''), porém neste caso é mais prático. Veja o resultado da consulta logo após a linha '';; ANSWER SECTION:''. Experimente fazer a resolução reversa para cada um dos IP obtidos nas consultas realizadas no primeiro exercício desta atividade.
 
# Como explicado durante a aula, DNS é um banco de dados distribuído. Isso quer dizer que suas informações estão espalhadas em milhares (ou milhões ?) de servidores DNS mundo afora. Cada servidor DNS mantém os dados dos domínios por que é responsável. Será que é possível rastrear todos os servidores DNS que devem ser consultados até chegar ao servidor do domínio procurado ?
 
## Descubra quem são os servidores raiz (topo de hierarquia DNS): <syntaxhighlight lang=bash>
 
host -t ns .
 
</syntaxhighlight>
 
## Escolha um dos servidores listados, e use-o para fazer as consultas. Por exemplo: <syntaxhighlight lang=bash>
 
host -v -t a www.sj.ifsc.edu.br. j.root-servers.net.
 
</syntaxhighlight>... e observe a seção '';; AUTHORITY SECTION:''. Ele contém a listagem de servidores DNS que podem atender sua consulta.
 
## Continue fazendo as consultas aos servidores DNS listados, até conseguir traduzir o nome requisitado. Quantos servidores DNS foi necessário consultar no total ?
 
## Repita esse exercício para os seguintes nomes de domínio:
 
##* www.bbc.co.uk
 
##* www.amazon.com
 
##* www.thepiratebay.org
 
##* www.reeec.illinois.edu
 
##* www.inm.ras.ru
 
 
 
==23/09/13: Camada de Transporte ==
 
 
 
Até o momento nos concentramos nos serviços de rede (Camada de Aplicação). Afinal, são elas que usamos para nos comunicarmos através das redes de computadores. No entanto, aplicações dependem de outros protocolos para poderem se comunicar, os quais cuidam dos detalhes envolvidos na transmissão e recepção de mensagens em uma rede vasta como a Internet.
 
 
 
As aplicações se comunicam por meio de mensagens. Cada protocolo de aplicação (HTTP, POP3, DNS, IMAP, SMTP, SIP, ...) tem seu formato de mensagem. Essas mensagens podem ser pequenas (ex: DNS, SIP) ou por vezes grandes (ex: SMTP, HTTP, POP3). De qualquer forma, a aplicação precisa que suas mensagens sejam transmitidas para o outro participante da comunicação, que está em um computador remoto. Para isso ela usa um '''protocolo de transporte'''.
 
 
 
[[imagem:Res-Camadas-protocolos.png]]
 
<br>''Algumas aplicações e protocolos de transporte na Internet''
 
 
 
Como já discutido, mais de uma aplicação pode existir em um mesmo computador. Por isso, uma das principais atribuições de um protocolo de transporte é identificar de qual aplicação é uma mensagem a ser transmitida, e para qual aplicação se destina uma mensagem recebida. Deve-se ter em mente que uma aplicação é representada por um programa em execução em um computador, portanto um protocolo de transporte possibilita a comunicação entre processos que estão sendo executados usualmente em computadores diferentes. Em nossas discussões anteriores chamamos isso de ''classificação das mensagens'', mas o termo usado para expressar essa capacidade dos protocolos de transporte é '''multiplexação'''. No caso específico dos protocolos de transporte da Internet (TCP e UDP), um número de port é usado para fazer essa distinção, e por isso essa função é denominada '''multiplexação baseada em port'''.
 
 
 
<syntaxhighlight lang=text>
 
Uma comunicação entre aplicações é composta basicamente de duas informações principais: endereços dos hosts participantes
 
e números de port dos processos. Os endereços são responsabilidade da Camada de Rede (onde há o protocolo IP), e os números
 
de port são usados na Camada de Transporte (onde estão os protocolos TCP e UDP).
 
</syntaxhighlight>
 
 
 
Mas por que existem dois protocolos de transporte ? Talvez ajude a esclarecer essa questão se compararmos as necessidades das aplicações:
 
 
 
{| border="1"
 
!Aplicação
 
!Tolerância a perdas
 
!Tolerância a atrasos
 
!Tamanhos de mensagens
 
|-
 
|HTTP || baixa || média|| variável ... podem ser muito grandes (de poucos bytes a centenas de megabytes ou mais)
 
|-
 
|SMTP || baixa || alta || variável ... podem ser grandes (de centenas bytes a alguns megabytes)
 
|-
 
|DNS || média|| baixa|| pequenas (algumas centenas de bytes)
 
|-
 
|POP3 || baixa || média|| variável ... podem ser grandes (de centenas bytes a alguns megabytes)
 
|-
 
|SIP || média|| média|| pequenas (algumas centenas de bytes)
 
|-
 
|VoIP || média|| baixa|| pequenas (tipicamente < 164 bytes)
 
|}
 
 
 
Durante o projeto e aperfeiçoamento dos protocolos da Internet, convergiu-se para a definição de dois protocolos de transporte:
 
* '''TCP (ver [https://tools.ietf.org/html/rfc793 RFC 793])''': protocolo orientado a conexão, com garantia de entrega, controle de fluxo e controle de congestionamento.
 
* '''UDP (ver [https://tools.ietf.org/html/rfc768 RFC 768])''': protocolo orientado a datagrama (não há conexão), sem garantia de entrega ou qualquer outra verificação ou controle. Basicamente faz somente a multiplexação baseada em port.
 
 
 
'''Curiosidade:''' veja os anos em que foram publicados as especificações desses protocolos ...
 
 
 
As diferenças entre eles serão melhor detalhadas nas próximas aulas. Hoje farems alguns experimentos para ter uma ideia de como se comportam as comunicações feitas com esses protocolos.
 
 
 
== Atividade ==
 
 
 
<!-- Realizar experimentos para mostrar as características de uma comunicação com TCP. Nesse primeiro momento não se entra a fundo nos seus mecanismos, tampouco na estrutura de cabeçalho. Deve-se porém evidenciar seu comportamento quanto a:
 
* Estabelecimento de conexão
 
* Vazão dependente da capacidade disponível na rede
 
* Compartilhamento de banda entre diversas streams TCP simultâneas
 
* Tratamento de erros: o que acontece se segmentos TCP forem perdidos
 
Um problema pode ser apresentado ao final, de forma que a turma tente resolvê-lo experimentalmente.
 
-->
 
 
 
As atividades de hoje buscarão mostrar as características básicas de comunicações com protocolos de transporte.
 
 
 
=== Aplicações e protocolos de transporte ===
 
 
 
Faça uma rápida pesquisa e descubra que protocolos de transporte (e que ports) são usados por estas aplicações:
 
* SSH
 
* FTP
 
* BitTorrent
 
* emule
 
* WINS
 
* Compartilhamento de arquivos do Windows
 
* Windows Terminal Service
 
* NFS
 
* Openvpn
 
* RADIUS
 
* DHCP
 
* SNMP
 
* NTP
 
* LDAP
 
* Mysql
 
* Postgresql
 
* Oracle RDBMS
 
* Syslog
 
* CUPS
 
 
 
Que protocolo de transporte predomina nesse conjunto ?
 
 
 
=== Tipos de protocolos de transporte: TCP x UDP ===
 
 
 
Nestes experimentos, serão evidenciadas diferenças entre os protocolos TCP e UDP.
 
 
 
==== Experimento 1 ====
 
 
 
Ambos protocolos de transporte podem ser usados por aplicações que precisem se comunicar. Porém cada um deles têm certas propriedades, então a escolha precisa ser feita dependendo do tipo de comunicação a ser feita pela aplicação. Por exemplo, o que aconteceria se um arquivo fosse transferido de um computador a outro com ambos protocolos ?
 
 
 
# Abra um terminal e execute o seguinte comando para fazer o download de um arquivo a ser usado no experimento: <syntaxhighlight lang=bash>
 
wget http://tele.sj.ifsc.edu.br/~tisemp/RES/ubuntu.iso
 
</syntaxhighlight>
 
# Observe o tamanho do arquivo transferido ... ele deve ter exatamente 832569344 bytes (cerca de 832 MB). Você pode fazer isso com o comando ''ls -l ubuntu.iso'', ou executando o gerenciador de arquivos e visualizando as propriedades desse arquivo.
 
# Escolha um colega para fazer o experimento, em que o arquivo será transferido de um computador para o outro.
 
# A primeira transferência será feita usando o protocolo TCP da seguinte forma:
 
#* No computador receptor execute: <syntaxhighlight lang=bash>
 
nc -l 5555 > arquivo
 
</syntaxhighlight>
 
#* No computador transmissor execute (''X'' é o número do seu computador, visível em sua etiqueta): <syntaxhighlight lang=bash>
 
time nc 192.168.1.X 5555 < ubuntu.iso
 
</syntaxhighlight>
 
#* Quando completar a transferência, verifique o tamanho do arquivo recebido. Ele é igual ao arquivo original? E quanto tempo levou para transmiti-lo ?
 
# A segunda transferência será feita usando o protocolo UDP:
 
#* No computador receptor faça o download [http://tele.sj.ifsc.edu.br/~tisemp/res/receptor deste programa]. Em seguida acrescente a ele permissão de execução (''chmod +x receptor'').
 
#* No computador receptor execute: <syntaxhighlight lang=bash>
 
./receptor 5555 > arquivo
 
</syntaxhighlight>
 
#* No computador transmissor faça o download [http://tele.sj.ifsc.edu.br/~tisemp/res/transmissor deste programa]. Em seguida acrescente a ele permissão de execução (''chmod +x transmissor'').
 
#* No computador transmissor execute (''X'' é o número do seu computador, visível em sua etiqueta): <syntaxhighlight lang=bash>
 
./transmissor 192.168.1.X 5555 < ubuntu.iso
 
</syntaxhighlight>
 
#* Quando completar a transferência, verifique o tamanho do arquivo recebido. Ele é igual ao arquivo original ? E quanto tempo levou para transmiti-lo ?
 
# Compare as transferências feitas com TCP e UDP. O que eles têm em comum ? Que diferenças lhe pareceram mais pronunciadas ? Como isso deve afetar as aplicações que usam esses protocolos ?
 
 
 
==== Experimento 2 ====
 
 
 
Transferências usando cada um desses protocolos podem apresentar características bem distintas. Neste segundo experimento, serão feitas transferências simultâneas de arquivos a partir de um mesmo servidor, comparando-se o resultado obtido com TCP e UDP. Essas transferência ocorrerão entre os computadores do laboratório e um servidor externo ao laboratório, como mostrado na figura abaixo:
 
 
 
 
 
[[imagem:Res-Exp2-transporte.png]]
 
 
 
 
 
# Abra um terminal em seu computador, e nele execute este comando: <syntaxhighlight lang=bash>
 
wget http://tele.sj.ifsc.edu.br/~tisemp/RES/ubuntu.iso
 
</syntaxhighlight>
 
# Observe a taxa de transferência (velocidade do download) obtida. Que valores ela apresenta ?  Quanto tempo levou para o arquivo ser transferido ?
 
# Após todos terem copiado o arquivo, o professor irá se logar em um dos computadores do laboratório e repetir a transferência. Porém desta vez ele irá fazê-la sozinho. Que taxas ele obteve, e quanto tempo levou ?
 
# O professor irá repetir a transferência novamente, mas desta vez ele irá pedir que um aluno também a inicie logo em seguida. Qual foi a taxa obtida por ambos ?
 
# Finalmente, o professor irá repetir a transferência porém com mais dois alunos fazendo-a ao mesmo tempo. Que se pode concluir quanto a taxa de transferência obtida ?
 
# Para poder fazer uma comparação, as transferências serão feitas novamente porém usando UDP como protocolo de transporte. Para isso siga estes passos:
 
## Abra dois terminais. Em um deles execute este comando: <syntaxhighlight lang=bash>
 
watch -n 1 ls -l arquivo
 
</syntaxhighlight> ... e no outro execute: <syntaxhighlight lang=bash>
 
./receptor 5555 > arquivo
 
</syntaxhighlight>
 
## O professor irá transmitir o arquivo a partir do servidor. Observe o tamanho do arquivo, que deverá aumentar.
 
## Em que valor o tamanho do arquivo parou de crescer ? Quanto tempo isso levou, aproximadamente ? E esse tamanho final é o mesmo do arquivo original ?
 
## Como se comparam as transferências usando TCP e UDP ?
 
 
 
==27/09/13: Correio eletrônico ==
 
 
 
O correio eletrônico (''email'') é ainda um dos principais serviços na Internet. De fato foi o primeiro serviço a ser usado em larga escala. Trata-se de um método para intercâmbio de mensagens digitais. Os sistemas de correio eletrônico se baseiam em um modelo armazena-e-encaminha (''store-and-forward'') em que os servidores de email aceitam, encaminham, entregam e armazenam mensagens de usuários.
 
 
 
=== Funcionamento do email ===
 
 
 
Os componentes da infraestrutura de email são:
 
* ''MUA (Mail User Agent):'' o aplicativo que o usuário usa para envio e acesso a mensagens. Atualmente é bastante comum MUA do tipo webmail, mas existem outros como Mozilla Thunderbird, KMail e Microsoft Outlook.
 
* ''MDA (Mail Delivery Agent):'' o servidor responsável por receber dos usuários mensagens a serem enviadas. Assim, quando um usuário quer enviar uma mensagem, usa um MUA que contata o MDA para fazer o envio. Exemplos de software são Postfix, Sendmail, Qmail e Microsoft Exchange.
 
* ''MTA (Mail Transport Agent):'' o servidor responsável por transmitir mensagens até seu destino, e receber mensagens da rede para seus usuários. Comumente faz também o papel de MDA. Exemplos de softwares são Postfix, Sendmail, Qmail e Microsoft Exchange.
 
 
 
A figura abaixo ilustra uma infraestrutura de email típica.
 
 
 
[[Imagem:Email-intro.png]]
 
 
 
Os protocolos envolvidos são:
 
 
 
* ''SMTP (Simple Mail Transfer Protocol):'' usado para envios de mensagens entre MTAs, e entre MUA e MDA/MTA.
 
* ''IMAP (Internet Mail Access Protocol):'' usado por MUAs para acesso a mensagens armazenadas em caixas de email em servidores.
 
* ''POP (Post Office Protocol):'' mesma finalidade que IMAP, porém com funcionalidade mais limitada. Se destina a situações em que o normal é copiar as mensagens parao computador do usuário, e então removê-las do servidor.
 
* ''LMTP (Local Mail Transfer Protocol):'' usado para entrega de mensagens entre MTA e MDA/MTA, sendo que o servidor de destino não mantém uma fila de mensagens (quer dizer, ele entrega diretamente na caixa de entrada de um usuário ou a encaminha imediatamente).
 
 
 
=== Endereçamento ===
 
 
 
Endereços de email estão intimamente ligados ao DNS. Cada usuário de email possui um endereço único mundial, definido por um identificador de usuário e um domínio de email, escritos usando-se o símbolo especial ''@'' (lê-se ''at'', do original em inglês) para conectá-los:
 
 
 
tele@ifsc.edu.br
 
 
 
Nesse exemplo, o identificador de usuário é ''tele'', e o domínio é ''ifsc.edu.br''.
 
 
 
Os domínios de email tem correspondência direta com domínios DNS, mas isso é um assunto para mais adiante ... por enquanto basta saber que um domínio representa um conjunto de endereços de email tratados administrativamente da mesma forma.
 
 
 
=== Mensagens de email ===
 
 
 
Uma mensagem de correio eletrônico se divide em duas partes:
 
* ''Cabeçalhos:'' contém informações de controle e atributos da mensagem
 
* ''Corpo:'' o conteúdo da mensagem
 
 
 
<syntaxhighlight lang=text>
 
Received: from zeus.das.ufsc.br (zeus.das.ufsc.br [150.162.12.8])
 
        by mx.google.com with ESMTP id e12si8422753vcx.66.2010.04.25.07.40.18;
 
        Sun, 25 Apr 2010 07:40:19 -0700 (PDT)
 
Received: from submissoes.sbc.org.br (submissoes.sbc.org.br [143.54.31.12])
 
by zeus.das.ufsc.br (Departamento de Automacao e Sistemas (DAS-UFSC)) with ESMTP id BA97E7BD90
 
for <tele@ifsc.edu.br>; Sun, 25 Apr 2010 11:30:00 -0300 (BRT)
 
Received: from submissoes.sbc.org.br (localhost [127.0.0.1])
 
by submissoes.sbc.org.br (8.14.3/8.14.3/Debian-4) with ESMTP id o3PEZ70L029107
 
for <tele@ifsc.edu.br>; Sun, 25 Apr 2010 11:35:07 -0300
 
Received: (from www-data@localhost)
 
by submissoes.sbc.org.br (8.14.3/8.14.3/Submit) id o3PEZ7kH029104;
 
Sun, 25 Apr 2010 11:35:07 -0300
 
Date: Sun, 25 Apr 2010 11:35:07 -0300
 
Message-Id: <201004251435.o3PEZ7kH029104@submissoes.sbc.org.br>
 
From: WTR 2010 <lbecker@das.ufsc.br>
 
To: "Telê Santana" <tele@ifsc.edu.br>
 
Subject: Final version and registration
 
MIME-Version: 1.0
 
Content-Type: text/plain
 
Content-Transfer-Encoding: 8bit
 
 
 
Dear Coach,
 
 
 
Please remember to upload the camera-ready version of your paper and to
 
register in the competition by April 27.
 
 
 
See you in Spain,
 
 
 
FIFA World Cup Staff - Spain - 1982
 
</syntaxhighlight>
 
 
 
Na mensagem acima, os cabeçalhos são as linhas iniciais. Os cabeçalhos terminam quando aparece uma linha em branco, a partir de que começa o corpo da mensagem.
 
 
 
=== Atividade ===
 
 
 
# Conectar-se a um servidor de email, e enviar uma mensagem.
 
## ''Primeiro acesso:'' usando o webmail que está em http://192.168.1.101/squirrelmail
 
##* Envie mensagens para seus colegas, e confira seu recebimento.
 
 
 
## ''Segundo acesso:'' usando telnet para enviar uma mensagem
 
##* Conecte-se ao servidor de email do laboratório (note que ele é acessado via port TCP 25): <syntaxhighlight lang=bash>
 
telnet 192.168.1.101 25
 
</syntaxhighlight>
 
##* ''Converse'' com o servidor de email usando o protocolo SMTP, que é textual: <syntaxhighlight lang=text>
 
helo mail
 
250 m1
 
mail from: aluno2@tiago.semprebom
 
250 2.1.0 OK
 
rcpt to: aluno1@tiago.semprebom
 
250 2.1.5 OK
 
data
 
354 End data with <CR><LF>.<CR><LF>
 
From: Aluno 2 <aluno2@tiago.semprebom>
 
To: Aluno 1 <aluno1@tiago.semprebom>
 
Subject: Teste de envio manual ...
 
 
 
Testando o envio de uma mensagem na unha ...
 
.
 
250 2.0.0 Ok: queued as 57C486819C
 
quit
 
221 2.0.0 Bye
 
</syntaxhighlight>''Obs:'' as linhas que iniciam com números correspondem a respostas do servidor SMTP.
 
##* Verifique se a mensagem foi de fato enviada.
 
 
 
==30/09/13: Camada de Aplicação ==
 
* Avaliação 1 RED: Int. Internet e Camada de Aplicação
 
 
 
==04/10/13:  ==
 
 
 
==07/10/13:  ==
 
 
 
==11/10/13:  ==
 
 
 
==14/10/13:  ==
 
 
 
==18/10/13:  ==
 
 
 
==19/10/13: (Sábado Letivo) ==
 
 
 
==21/10/13:  ==
 
* Entrega documento: Seminário de RED
 
 
 
==25/10/13: Seminário RED ==
 
* Realização do Seminário da Disciplina: Novas Tecnologias em Redes
 
 
 
==28/10/13:  ==
 
 
 
==01/11/13:  ==
 
 
 
==04/11/13: Aula com Prof. Roberto Matos (MIC) ==
 
* Participação do III Simpósio Brasileiro de Engenharia de Sistemas Computacionais [http://sbesc.lisha.ufsc.br SBESC 2013]
 
* Será realizada aula de MIC (Prof. Roberto Matos) em substituição à aula do dia 25 de outubro (Seminário RED).
 
 
 
==08/11/13:  ==
 
 
 
==11/11/13:  ==
 
 
 
==15/11/13:  ==
 
 
 
==18/11/13:  ==
 
 
 
==22/11/13:  ==
 
 
 
==25/11/13:  ==
 
 
 
==29/11/13:  ==
 
 
 
==02/12/13:  ==
 
 
 
==06/12/13:  ==
 
 
 
==09/12/13:  ==
 
 
 
==13/12/13:  ==
 
* Avaliações de recuperação finais da disciplina
 
 
 
==16/12/13: Encerramento da Disciplina==
 
{{Collapse bottom}}
 

Edição das 10h27min de 29 de julho de 2015