Mudanças entre as edições de "Predefinição:RCO 1110231 2019-1"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
 
(8 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 633: Linha 633:
 
*Resolução da [http://www.sj.ifsc.edu.br/~tisemp/RES/listas_exercicios/lista5.pdf Lista de exercícios 5]
 
*Resolução da [http://www.sj.ifsc.edu.br/~tisemp/RES/listas_exercicios/lista5.pdf Lista de exercícios 5]
  
{{Collapse top | Experimento}}
+
==27/05/19: Camada de Transporte==
 +
* As atividades de hoje buscarão mostrar as características básicas de comunicações com protocolos de transporte.
  
{{Collapse botton}}
+
{{Collapse top | Experimento TCP x UDP}}
 +
<!-- 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.
 +
-->
 +
=== 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>
 +
## Como se comparam as transferências usando TCP e UDP?
 +
{{Collapse bottom}}
 +
 
 +
==03/06/19: Avaliação Camada de Transporte==
 +
* Local: sala 02.
 +
* Horário: 19h.

Edição atual tal como às 21h16min de 20 de maio de 2019

Professor

Professor: Tiago Semprebom
Email: tisemp@ifsc.edu.br
Atendimento paralelo: 3a feira 17:30h - 18:30 h (sala de professores de telecomunicações II)
Endereço web do grupo: http://groups.google.com/group/ifsc_res
Endereço de e-mail da disciplina: ifsc_res@googlegroups.com

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.

Plano de Ensino

Notas

Matrícula A1 A2 A3 A4 Rel. Tec. Final
201823806749 0,0 0,0 0,0 0,0 OK 0,0
201811103467 0,0 0,0 0,0 0,0 OK 0,0
172001603800 0,0 0,0 0,0 0,0 NOK 0,0
201811103475 0,0 0,0 0,0 0,0 OK 0,0
201811101502 0,0 0,0 0,0 0,0 OK 0,0

F: faltou
(X): conceito da recuperação
negrito: com direito a recuperação

Curiosidades

Internet-map.png
Uma representação artística das interligações na Internet

Materiais de aula

Slides

Listas de exercícios

Apostilas

Aulas

11/02/19: 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]

18/02/19: Introdução às Redes de Computadores

  • Serviço orientado à conexão (TCP).
  • Serviço não orientado à conexão (UDP).
  • Comutação de circuitos vs Comutação de pacotes.
  • FDMA e TDMA.

25/02/19: Introdução à Redes de Computadores

  • Redes de acesso e meio físico;
  • Resolução de exercícios (Lista 1).

04/03/19: Feriado: Carnaval

  • sem atividade letivas.

11/03/19: Introdução à Redes de Computadores

  • Arquitetura em Camadas;
  • Correção lista de exercício I

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

Ferramentas básicas: Ping e Traceroute

Objetivos

  • Familiarização com a infraestrutura dos laboratórios de redes
  • Conhecer aplicativos para verificar os parâmetros do TCP/IP
  • Diagnosticar o atraso dos pacotes
  • Traçar rotas em redes TCP/IP

Conceitos introdutórios para uso do laboratório

A rede do laboratório em uso segue o modelo apresentado no diagrama da Figura 1.

Figura 1 - Diagrama da rede do laboratório

Roteiro de atividades

ifconfig

O aplicativo ifconfig pode ser utilizado para visualizar a configuração ou configurar uma interface de host em redes TCP/IP. Se nenhum argumento for passado na chamada do ifconfig, o comando mostra a configuração atual de cada interface de rede.

Consultar as páginas man ifconfig do Linux para maiores detalhes sobre o funcionamento deste aplicativo, o qual permite ativar/desativar a interface, configurar o endereço IP, definir o tamanho da MTU, redefinir o endereço de hardware se a interface suporta, redefinir a interrupção utilizada pelo dispositivo, entre outros.


  1. Analisando os dados obtidos do seguinte exemplo /sbin/ifconfig

eth0 Link encap:Ethernet Endereço de HW 64:51:06:1a:f3:da

         inet end.: 172.18.18.14  Bcast:172.18.63.255  Masc:255.255.192.0
         endereço inet6: fe80::6651:6ff:fe1a:f3da/64 Escopo:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Métrica:1
         pacotes RX:415237 erros:0 descartados:0 excesso:0 quadro:0
         Pacotes TX:118109 erros:0 descartados:0 excesso:0 portadora:0
         colisões:0 txqueuelen:1000 
         RX bytes:364658695 (364.6 MB) TX bytes:18315199 (18.3 MB)
         IRQ:18 

lo Link encap:Loopback Local

         inet end.: 127.0.0.1  Masc:255.0.0.0
         endereço inet6: ::1/128 Escopo:Máquina
         UP LOOPBACK RUNNING  MTU:65536  Métrica:1
         pacotes RX:6688 erros:0 descartados:0 excesso:0 quadro:0
         Pacotes TX:6688 erros:0 descartados:0 excesso:0 portadora:0
         colisões:0 txqueuelen:0 
         RX bytes:1057934 (1.0 MB) TX bytes:1057934 (1.0 MB) </syntaxhighlight>
    1. O sistema em questão possui duas interfaces de rede: eth0 e lo
    2. Link encap:Ethernet: Configuração da interface Ethernet 0 (primeira)
    3. Endereço de HW 64:51:06:1a:f3:da: É o endereço da placa de rede, camada 2
    4. inet end.: 172.18.18.14 Bcast:172.18.63.255 Masc:255.255.192.0: Endereço IPv4 associado a interface, seu respectivo endereço de broadcast e mascara de rede
    5. endereço inet6: fe80::6651:6ff:fe1a:f3da/64 Escopo:Link: Endereço IPv6 de escopo local gerado por autoconfiguração
    6. UP BROADCAST RUNNING MULTICAST: Significa que a interface está ativa (UP), responde a requisições de broadcast (pode ser desabilitado no kernel) e também pode ser associada a tráfegos multicast
    7. MTU: 1500: Maximum Transfer Unit – Tamanho máximo do pacote suportado pelo enlace que é do tipo Ethernet
    8. Os demais parâmetros são estatísticas da respectiva interface, como por exemplo, pacotes transmitidos, recebidos etc
    9. A interface lo: Qualquer tráfego que um computador envie em uma rede loopback é endereçada ao mesmo computador. O endereço IP mais usado para tal finalidade é 127.0.0.1 no IPv4 e ::1 no IPv6. O nome de domínio padrão para tal endereço é localhost. Em sistemas Unix, a interface loopback é geralmente chamada de lo ou lo0.
  1. Agora utilize o comando ifconfig para verificar o estado de suas interfaces e responda:
    1. Quantas e quais interfaces de rede sua máquina possui? Liste.
    2. Qual o significado/utilidade da interface lo?
    3. Quais são os endereços da camada 2 atribuído as mesmas? De onde o sistema obteve esses endereços?
    4. Quais são os endereços IPv4? De onde o sistema obteve esses endereços?
    5. Suas interfaces tem IPv6 configurado? Qual o endereço e escopo dos mesmos? Como foram obtidos? Qual o alcance (é roteável) do mesmo?

ping

Aplicativo ping permite a um usuário verificar se um host remoto está ativo. É bastante utilizado para detectar problemas de comunicação na rede. O ping está baseado no envio de mensagens de solicitação de eco (echo request) e de resposta de eco (echo reply). Estas mensagens fazem parte do rol de mensagens do protocolo ICMP, que é um protocolo de reportagem de erros, a ser estudado mais tarde, componente do protocolo IP.

O ping é um dos principais comandos a disposição do administrador de rede no sentido de verificar a conectividade em rede. Por exemplo, se houver resposta de um ping a partir de um servidor remoto, significa que a máquina local está rodando corretamente o TCP/IP, o enlace local está funcionando corretamente, o roteamento entre a origem e o destino está operando, e por fim, a máquina remota também está rodando corretamente o TCP/IP.

Consultar as páginas man do ping para verificar as possibilidades de uso deste aplicativo.

  1. Exemplo 1:

PING 200.135.37.65 (200.135.37.65) 56(84) bytes of data. 64 bytes from 200.135.37.65: icmp_seq=1 ttl=62 time=0.925 ms 64 bytes from 200.135.37.65: icmp_seq=2 ttl=62 time=0.743 ms 64 bytes from 200.135.37.65: icmp_seq=3 ttl=62 time=0.687 ms 64 bytes from 200.135.37.65: icmp_seq=4 ttl=62 time=0.689 ms ^C --- 200.135.37.65 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 2999ms rtt min/avg/max/mdev = 0.687/0.761/0.925/0.097 ms </syntaxhighlight>

    1. No exemplo foram enviados quatro pacotes ICMP, cada um com um número de seqüência (icmp_seq), os quais foram recebidos com sucesso com o tempo de viagem assinalado (time)
    2. Cada pacote tem ainda um tempo de vida (ttltime to live), o qual é decrementado em cada roteador, sendo o pacote descartado quando chegar a zero; isto evita pacotes perdidos na rede
    3. Quando o ping é interrompido (CRTL-C), uma estatística é apresentada indicando o percentual de pacotes transmitidos, recebidos e perdidos
    4. O tempo de viagem (rttround trip time) mínimo (min), médio (avg) e máximo (max) é calculado, assim como o desvio padrão (mdev)
  1. Como exercício envie ping para diferentes hosts e compare e anote os tempos de resposta:
    1. no endereço local de loopback;
    2. máquina de um colega do laboratório;
    3. servidor e roteador da rede da escola;
    4. servidores externos:

www.ifsc.edu.br www.uol.com.br www.aaa.jp </syntaxhighlight>

  1. Explique as diferenças entre os tempos de resposta dos ping realizados:
    1. Entre ping para diferentes destinos.
    2. Entre respostas recebidas de um mesmo destino.
  2. Consulte as páginas man e teste o ping com os parâmetros abaixo e descreva suas funcionalidades:
    1. -c count
    2. -i intervalo
    3. -s packetsize
    4. -t ttl (para um site distante inicie com 1 e vá incrementando, observe as mensagens). Com essa estratégia é possível mapear os roteadores no caminho entre a origem e o destino de um pacote.

traceroute

O traceroute é capaz de traçar uma rota aproximada entre dois hosts. Este comando usa mensagens ICMP. Para determinar o nome e o endereço dos roteadores entre a fonte e o destino, o traceroute na fonte envia uma série de datagramas IP ordinários ao destino. O primeiro datagrama tem o TTL (time to live – tempo de vida) igual a 1, o segundo 2, o terceiro 3, e assim por diante, e inicia temporizadores para cada datagrama. Quando o enésimo datagrama chega ao enésimo roteador, este verifica que o tempo de sobrevida do datagrama acaba de terminar. Pelas regras do IP, o datagrama é então descartado e uma mensagem ICMP de advertência tempo de vida excedido é enviada a fonte com o nome do roteador e seu endereço IP. Quando a resposta chega de volta a fonte, a mesma calcula o tempo de viagem em função dos temporizadores.

O traceroute envia datagramas IP encapsulados em segmentos UDP a um host destino. Todavia escolhe um número de porta destino com um valor desconhecido (maior que 30000), tornando improvável que o host destino esteja usando esta porta. Quando o datagrama chega ao destino uma mensagem ICMP porta inalcançável é gerada e enviada a origem. O programa traceroute precisa saber diferenciar as mensagens ICMP recebidas – tempo excedido e porta inalcançável – para saber quando a rota foi concluída.

  1. Exemplo:

sudo traceroute -I 200.135.37.65 traceroute to 200.135.37.65 (200.135.37.65), 30 hops max, 60 byte packets

1  192.168.1.1 (192.168.1.1)  0.225 ms  0.216 ms  0.368 ms
2  172.18.0.254 (172.18.0.254)  1.236 ms  1.235 ms  1.343 ms
3  hendrix.sj.ifsc.edu.br (200.135.37.65)  1.331 ms  1.313 ms  1.414 ms </syntaxhighlight> 


NOTA: O comando traceroute acima foi executado com o parâmetro -I. Esse comando força o traceroute a utilizar mensagens ICMP. Outra opção é utilizar o comando com o parâmetro -T, forçando o traceroute a utilizar o protocolo TCP para transmissão de seus pacotes. Caso nenhum dos parâmetros (-I ou -T) seja utilizado o traceroute utiliza o protocolo UDP como padrão. Visando barrar o tráfego de torrent na rede do Câmpus, o Firewall bloqueia as mensagens UDP da rede. Deste modo não é possível executar o comando traceroute na rede do Campus sem o uso dos parâmetro (-I ou -T).

</syntaxhighlight> 

O exemplo mostra a rota dos pacotes entre um computador do Lab. Redes (192.168.2.1) e o servidor hendrix (200.135.37.65). Observe que para cada roteador são realizados três amostras de tempo de ida e volta. Veja pelo mapa da rede do Campus São José que entre estes dois computadores, sistemas finais, existem dois roteadores intermediários, máquina do professor e Switch camada 3 (VLANs).

  1. Traçar a rota dos pacotes entre seu computador e diferentes hosts:
    1. máquina de um colega do laboratório
    2. servidor e roteador da rede da escola
    3. servidores americanos.
  2. Explique as diferenças entre os tempos de resposta:
    1. Entre traceroutes para diferentes destinos.
    2. No caso do traceroute para os EUA, aponte claramente qual foi o salto onde ocorreu a travessia do oceano. Como você chegou a essa conclusão?
    3. Entre as três medidas apresentadas para cada salto.
    4. O que justifica um possível tempo de resposta menor para um salto posterior? Por exemplo: pode-se obter no salto 13 um tempo de 289.207 ms e no salto 14 um tempo de 277.115 ms.
  3. Explique as linhas com o caracter *.

25/03/2019: Camada de Aplicação

  • Atividade em Laboratório (Laboratório de Redes de Computadores)
    • Configuração da máquina virtual VM VirtualBox em modo de tela cheia:
    • No terminal do mate e digitar os comandos a seguir:
      • sudo apt-get update
      • sudo apt install build-essential module-assistant dkms
      • sudo m-a prepare

Após esta instalação, podemos clicar em Dispositivos, e ir na opção Inserir imagem de CD dos adicionais para convidado e executar a aplicação que irá abrir.

  • Realização do Teste 1 (Avaliação 1: Introdução às Redes de Computadores)

01/04/2019: Ferramentas básicas: WireShark e tcpdump

KUROSE, J.F & ROSS, K. W. Todos os direitos reservados

Objetivos

  • Conhecer aplicativos para verificar os parâmetros do TCP/IP
  • Familiarização com os sniffers de rede WireShark e tcpdump.

Materiais de apoio

Ferramentas básicas: WireShark e tcpdump

Introdução

O entendimento de protocolos de redes pode ser bastante aprofundado através da “observação de protocolos funcionando” e “da manipulação de protocolos” - observando a sequência de mensagens trocadas entre duas entidades, entrando nos detalhes da operação do protocolo, e fazendo com que os protocolos realizem certas ações e então observando estas ações e as consequências.

A ferramenta básica para observar as mensagens trocadas entre as entidades em execução é chamada de sniffer. Como o nome sugere, um sniffer captura mensagens sendo enviadas/recebidas pelo seu computador; ele também tipicamente armazena e/ou apresenta os conteúdos dos vários campos dos protocolos nestas mensagens capturadas. Um sniffer isoladamente é um elemento passivo. Ele observa as mensagens sendo enviadas e recebidas pelas aplicações e protocolos executando no seu computador, mas jamais envia pacotes. Similarmente, os pacotes recebidos nunca são explicitamente endereçados ao sniffer. Ao invés disso, um sniffer recebe uma cópia de pacotes que são enviados/recebidos para/de aplicações e protocolos executando no seu computador.

A Figura 1 mostra a estrutura de um sniffer. À direita da Figura 2 estão os protocolos (neste caso, protocolos da Internet) e aplicações (tais como navegador web ou cliente FTP) que normalmente executam no seu computador. O sniffer, exibido dentro do retângulo tracejado na Figura 2 é uma adição aos softwares usuais no seu computador, e consiste de duas partes: a biblioteca de captura de pacotes e o analisador de pacotes. A biblioteca de captura de pacotes recebe uma cópia de cada quadro da camada de enlace que é enviado do ou recebido pelo seu computador. Lembre que mensagens trocadas por protocolos das camadas mais altas tais como HTTP, FTP, TCP, UDP, DNS ou IP, são todos eventualmente encapsulados em quadros que são transmitidos para o meio físico como um cabo Ethernet. Na Figura 2, assume-se que o meio físico é uma Ethernet, e desta forma, os protocolos das camadas superiores são eventualmente encapsulados em um quadro Ethernet. Capturar todos os quadros fornece todas as mensagens enviadas/recebidas de/por todos os protocolos e aplicações executando em seu computador.

Figura 1 - Estrutura de um sniffer

O analisador de pacotes exibe os conteúdos de todos os campos dentro de uma mensagem de protocolo. Para que isso seja feito, o analisador de pacotes deve “entender” a estrutura de todas as mensagens trocadas pelos protocolos. Por exemplo, suponha que estamos interessados em mostrar os vários campos nas mensagens trocadas pelo protocolo HTTP na Figura 5. O analisador de pacotes entende o formato dos quadros Ethernet, e desta forma pode identificar o datagrama IP dentro de um quadro. Ele também entende o formato do datagrama IP, para que ele possa extrair o segmento TCP dentro do datagrama IP. Ele entende a estrutura do segmento TCP, para que possa extrair a mensagem HTTP contida no segmento. Finalmente, ele entende o protocolo HTTP e então, por exemplo, sabe que os primeiros bytes de uma mensagem HTTP contém a cadeia “GET”, “POST” ou “HEAD”. Nós utilizaremos o sniffer Wireshark (http://www.wireshark.org) para estes laboratórios, o que nos permite exibir os conteúdos das mensagens sendo enviadas/recebidas de/por protocolos em diferentes camadas da pilha de protocolos. Tecnicamente falando, Wireshark é um analisador de pacotes que pode ser executado em computadores com Windows, Linux/UNIX e MAC.

É um analisador de pacotes ideal para nossos laboratórios, pois é estável, tem uma grande base de usuários e é bem documentado incluindo um guia de usuário (http://www.wireshark.org/docs/wsug_html/), páginas de manual (http://www.wireshark.org/docs/man-pages/), e uma seção de FAQ detalhada (http://www.wireshark.org/faq.html), funcionalidade rica que inclui a capacidade de analisar mais que 500 protocolos, e uma interface com o usuário bem projetada. Ele funciona em computadores ligados a uma Ethernet para conectar-se à Internet, bem como protocolos ponto a ponto, tal como PPP.

  • Analisando os campos da interface do Wireshark

Quando você executar o programa Wireshark, a interface com o usuário exibida na Figura 3 aparecerá. Inicialmente, nenhum dado será apresentado nas janelas. A interface do Wireshark tem seis componentes principais:

  1. Os menus de comandos são localizados no topo da janela. Por enquanto, interessam apenas os menus File e Capture. O menu File permite salvar dados de capturas de pacotes ou abrir um arquivo contendo dados de capturas de pacotes previamente realizadas, e sair da aplicação. O menu Capture permite iniciar uma captura de pacotes;
  2. A barra de ferramentas contém os comandos de menu que são mais frequentemente utilizados. Há atalhos para abrir ou salvar dados de captura de pacotes e para iniciar ou parar uma captura de pacotes;
  3. Abaixo da barra de ferramentas, está o campo de filtragem de pacotes exibidos. Nele podem ser digitados nome de protocolo ou outra informação apresentada na janela de listagem de pacotes. Apenas os pacotes que correspondem ao filtro são exibidos;
  4. A janela de listagem de pacotes apresenta um resumo de uma linha para cada pacote capturado, incluindo o número do pacote (atribuído pelo Wireshark; este não é o número do pacote contido no cabeçalho de qualquer protocolo), o tempo que o pacote foi capturado, os endereços fonte e destino do pacote, o tipo de protocolo, e informação específica do protocolo contida no pacote. A lista de pacotes pode ser ordenada conforme qualquer uma destas categorias clicando no nome de uma coluna correspondente. O campo tipo do protocolo lista o protocolo de mais alto nível que enviou ou recebeu este pacote, i.e., o protocolo que é a fonte ou o último sorvedouro para este pacote;
  5. A janela de detalhes de cabeçalho de pacotes fornece detalhes sobre o pacote selecionado na janela de listagem de pacotes. Para selecionar um pacote, basta clicar sobre ele com o botão esquerdo do mouse na janela de listagem de pacotes. Os detalhes apresentados incluem informações sobre o quadro Ethernet e o datagrama IP que contém o pacote. A quantidade de detalhes exibida pode ser expandida ou contraída. Se o pacote foi carregado sobre TCP ou UDP, detalhes correspondentes também são apresentados, os quais também podem ser contraídos ou expandidos. Finalmente, detalhes sobre o protocolo de mais alto nível que enviou ou recebeu este pacote também são apresentados;
  6. A janela de conteúdo de pacotes mostra o conteúdo inteiro do quadro capturado, nos formatos ASCII e hexadecimal.
Figura 3 - Interface com o usuário do Wireshark

Roteiro de atividades

  1. Inicie o navegador web;
  2. Inicie o Wireshark. Inicialmente as janelas estarão vazias, pois não há captura de pacotes em progresso;
  3. Para iniciar uma captura de pacotes, selecione o menu Capture e depois Interfaces.
  4. Isso faz com que a janela de interfaces de rede disponíveis seja apresentada (Figura 4);
    Figura 4 - Interfaces de rede no Wireshark
  5. Basta clicar no botão Start da interface desejada para iniciar a captura de pacotes. Na Figura 4, como o Wireshark está sendo executado no Linux, o botão Start da interface eth0 deve ser selecionado;
  6. Como nada está acontecendo na rede, a janela apresenta o conteúdo vazio;
  7. No navegador, acesse o site http://www.ifsc.edu.br;
  8. Ao voltar para a janela do Wireshark, houve a captura de todos os pacotes envolvidos na conexão;
  9. Antes de continuar, vamos parar a captura de pacotes e trabalhar com o que temos. Basta clicar em Capture e depois em Stop;
  10. Para testar as capacidades de filtragem, vamos inserir a cadeia “http” (sem as aspas e em minúsculo) no especificação do filtro de exibição e depois selecionar Apply (ou Aplicar). Um resultado similar é exibido na figura 5;
    Figura 5 - Janela após a aplicação do filtro http
  11. Selecione a primeira mensagem HTTP exibida na janela de listagem de pacotes. Ela deve ser a mensagem HTTP GET que foi enviada do seu computador ao servidor HTTP em www.ifsc.edu.br. Quando você seleciona a mensagem HTTP GET, as informações dos cabeçalhos do quadro Ethernet, do datagrama IP, do segmento TCP e da mensagem HTTP aparecem na janela de cabeçalhos de pacotes. É possível ver os detalhes, expandido ou comprimindo os itens com um clique na seta ao lado deles.
  12. Se desejar acesse novos sítios e faça novas capturas e tente entender o que ocorre;
  13. Com Wireshark ativo (Abra-o novamente se necessário) acesse um sítio de sua preferência e responda às seguintes questões:
    1. Teste outros filtros, por exemplo, mostre somente pacotes originados e/ou destinados a um determinado host (ip.addr == 191.36.13.X). Anote o filtro utilizado e salve a janela do mesmo. Exemplo de filtros.
    2. Elimine o filtro e anote os diferentes protocolos que aparecem na coluna Protocol na janela de listagem de pacotes;
    3. Quanto tempo passa entre o envio de uma mensagem HTTP GET até o recebimento de uma resposta OK? (por padrão, o valor da coluna Time na janela de listagem de pacotes é a quantidade de tempo, em segundos, desde que a captura iniciou). Para exibir o campo Time no formato hora do dia, selecione o menu View, depois Time Display Format, então selecione Time of day.
    4. Qual é o endereço IP do sítio navegado? Qual é o endereço IP da interface de rede do seu computador? Qual o endereço MAC de sua máquina?

Tcpdump

  1. Leia atentamente o manual do tcpdump , principalmente os exemplos: man tcpdump </syntaxhighlight>
  2. Faça um ping e navegue para algum site de sua preferência e, com o uso de parâmetros apropriados, faça com que o tcpdump armazene os em um arquivo denominado “pacotes_capturadosX.pcap“ (um arquivo para cada item X):
    1. Capture todos os pacotes oriundos e destinados à sua máquina.
    2. Idem anterior com a flag -vvv ativa e, em seguida, a flag -n.
      • Qual é a função dessas flags?
    3. Capture somente os pacotes oriundos de sua máquina.
      • Anote o comando utilizado.
    4. Capture somente pacotes destinados à sua máquina.
      • Anote o comando utilizado.
    5. Capture pacotes HTTP e DNS (lembre-se da porta de cada serviço).
      • Anote o comando utilizado.
  3. Procure um dos arquivos salvos, com o navegador de arquivos de sua máquina, dê um duplo clique sobre o mesmo.
    1. Com qual programa foi aberto o arquivo?
    2. Exemplifique um possível uso dessa compatibilidade de arquivos?

08/04/19: Camada de Aplicação

  • A camada de aplicação (ver estes [slides)
  • Lista de Exercício: II

15/04/19: Camada de Aplicação

  • Protocolos da Camada de Aplicação: HTTP, FTP, SMTP, POP e DNS.
  • Lista de Exercício: III
  • Revisão para Avaliação 1.

22/04/19: Camada de Aplicação

  • Avaliação 1 (sala 02).

29/04/19: Camada de Aplicação

  • Vista de prova.
DNS: Domain Name System

DNS: Domain Name System

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:

  1. Atualmente existem bilhões de endereços de IP em uso e a grande maioria das máquinas possui um nome legível associado.
  2. 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.
  3. Nomes de domínio e endereços de IP podem mudar frequentemente (até mesmo diariamente).
  4. Novos nomes de domínio são criados todos os dias.
  5. 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 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:

216.183.103.150

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:

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

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.95 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:

  1. Pode responder diretamente com um endereço de IP, por já conhecer previamente este endereço do domínio.
  2. 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.
  3. 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.”
  4. 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:

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

A estrutura das informações mantidas no DNS

Como deve ter ficado claro na 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.

Hierarquia-DNS.gif

(tirado do manual do BIND9)

Ver também o 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: 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 dig (o resultado teve alguns comentários removidos):

tisemp@sj-lin-des2-744934:~$ dig www.ifsc.edu.br
;; QUESTION SECTION:
;www.ifsc.edu.br.		IN	A

;; ANSWER SECTION:
www.ifsc.edu.br.	310	IN	A	200.135.190.95

;; AUTHORITY SECTION:
ifsc.edu.br.		3592	IN	NS	adns1.pop-sc.rnp.br.
ifsc.edu.br.		3592	IN	NS	ns1.ifsc.edu.br.
ifsc.edu.br.		3592	IN	NS	ns2.ifsc.edu.br.
ifsc.edu.br.		3592	IN	NS	adns2.pop-sc.rnp.br.

;; ADDITIONAL SECTION:
ns1.ifsc.edu.br.	3592	IN	A	200.135.190.1
ns2.ifsc.edu.br.	1061	IN	A	200.135.190.3
adns1.pop-sc.rnp.br.	493216	IN	A	200.237.192.10
adns1.pop-sc.rnp.br.	493216	IN	AAAA	2801:80:a88:4000::10
adns2.pop-sc.rnp.br.	493216	IN	A	200.135.14.10
adns2.pop-sc.rnp.br.	493216	IN	AAAA	2001:12f0:200:a014::10

Cada uma das informações acima mostra um determinado registro e seu conteúdo, como descrito na tabela abaixo:

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:

Registro Descrição Exemplo
A Endereço (Address) www.ifsc.edu.br IN A 200.135.190.95
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:

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

Atividade

  1. Usando o programa host ou 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
  2. 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:
    host -t ns ifsc.edu.br
    
  3. Descubra qual o servidor DNS usado pelo seu computador. Para isso é mais fácil usar o programa nslookup:
    # Use o nslookup para consultar o endereço IP de um nome qualquer ...
    nslookup sj.ifsc.edu.br
    
  4. 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:
    sudo wireshark
    
    ... 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 ?
  5. 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:
    host -t mx ifsc.edu.br
    
    Descubra quem é o servidor que recebe emails nos seguintes domínios:
    • gmail.com
    • hotmail.com
    • uol.com.br
    • ufsc.br
  6. 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:
    dig -x 200.135.190.95
    
    ... 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.
  7. 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 ?
    1. Descubra quem são os servidores raiz (topo de hierarquia DNS):
      host -t ns .
      
    2. Escolha um dos servidores listados, e use-o para fazer as consultas. Por exemplo:
      host -v -t a www.sj.ifsc.edu.br. j.root-servers.net.
      
      ... e observe a seção ;; AUTHORITY SECTION:. Ele contém a listagem de servidores DNS que podem atender sua consulta.
    3. Continue fazendo as consultas aos servidores DNS listados, até conseguir traduzir o nome requisitado. Quantos servidores DNS foi necessário consultar no total ?
    4. Repita esse exercício para os seguintes nomes de domínio:
      • www.bbc.co.uk
      • www.amazon.com
      • www.reeec.illinois.edu
      • www.inm.ras.ru

06/05/19: Camada de Transporte

13/05/19: Camada de Transporte

  • Protocolos Dutados:
    • Volta-N;
    • Retransmissão Seletiva.

20/05/19: Camada de Transporte

27/05/19: Camada de Transporte

  • As atividades de hoje buscarão mostrar as características básicas de comunicações com protocolos de transporte.
Experimento TCP x UDP

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 ?

  1. Abra um terminal e execute o seguinte comando para fazer o download de um arquivo a ser usado no experimento:
    wget http://tele.sj.ifsc.edu.br/~tisemp/RES/ubuntu.iso
    
  2. 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.
  3. Escolha um colega para fazer o experimento, em que o arquivo será transferido de um computador para o outro.
  4. A primeira transferência será feita usando o protocolo TCP da seguinte forma:
    • No computador receptor execute:
      nc -l 5555 > arquivo
      
    • No computador transmissor execute (X é o número do seu computador, visível em sua etiqueta):
      time nc 192.168.1.X 5555 < ubuntu.iso
      
    • Quando completar a transferência, verifique o tamanho do arquivo recebido. Ele é igual ao arquivo original? E quanto tempo levou para transmiti-lo ?
  5. A segunda transferência será feita usando o protocolo UDP:
    • No computador receptor faça o download deste programa. Em seguida acrescente a ele permissão de execução (chmod +x receptor).
    • No computador receptor execute:
      ./receptor 5555 > arquivo
      
    • No computador transmissor faça o download 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):
      ./transmissor 192.168.1.X 5555 < ubuntu.iso
      
    • Quando completar a transferência, verifique o tamanho do arquivo recebido. Ele é igual ao arquivo original ? E quanto tempo levou para transmiti-lo ?
  6. 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:

Res-Exp2-transporte.png

  1. Abra um terminal em seu computador, e nele execute este comando:
    wget http://tele.sj.ifsc.edu.br/~tisemp/RES/ubuntu.iso
    
  2. Observe a taxa de transferência (velocidade do download) obtida. Que valores ela apresenta ? Quanto tempo levou para o arquivo ser transferido ?
  3. 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 ?
  4. 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 ?
  5. 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 ?
  6. 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:
    1. Abra dois terminais. Em um deles execute este comando:
      watch -n 1 ls -l arquivo
      
      ... e no outro execute:
      ./receptor 5555 > arquivo
      
    2. Como se comparam as transferências usando TCP e UDP?

03/06/19: Avaliação Camada de Transporte

  • Local: sala 02.
  • Horário: 19h.