Mudanças entre as edições de "Curso Técnico Integrado de Telecomunicações - Redes de Computadores (RCO)"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
(42 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 1: Linha 1:
__NOTOC__
 
 
 
{{DivulgueEngtelecom}}
 
{{DivulgueEngtelecom}}
 
==Informações Gerais==
 
==Informações Gerais==
 
*[[RCO-IntTel|Carga horária, Ementas, Bibliografia]]
 
*[[RCO-IntTel|Carga horária, Ementas, Bibliografia]]
 
*[[RCO-IntTel (Plano de Ensino) | Plano de Ensino]]
 
*[[RCO-IntTel (Plano de Ensino) | Plano de Ensino]]
*[[Cronograma de atividades (RCO-IntTel) | Cronograma de atividades]]
 
  
 
==Edições==
 
==Edições==
 
+
*[[RCO60807 2021-1|RCO60803 2021 em diante - Prof. Odilson Tadeu Valle - Roteiros de laboratórios]]
 
+
*[[RCO60803 2019-1|RCO60803 2019-1 - Trabalho dirigido - Prof. Odilson Tadeu Valle]]
 +
*[[RCO60803 2018-2|RCO60803 2018-2 - Prof. Odilson Tadeu Valle / Prof. Eraldo Silveira e Silva]]
 
*[[RCO60803 2018-1|RCO60803 2018-1 - Prof. Odilson Tadeu Valle / Prof. Eraldo Silveira e Silva]]
 
*[[RCO60803 2018-1|RCO60803 2018-1 - Prof. Odilson Tadeu Valle / Prof. Eraldo Silveira e Silva]]
 
*[[RCO60803 2017-2|RCO60803 2017-2 - Prof. Odilson Tadeu Valle / Prof. Eraldo Silveira e Silva]]
 
*[[RCO60803 2017-2|RCO60803 2017-2 - Prof. Odilson Tadeu Valle / Prof. Eraldo Silveira e Silva]]
Linha 24: Linha 22:
 
Vários [http://wps.pearsoned.com/ecs_kurose_compnetw_6/216/55463/14198700.cw/ aplicativos] com representação dinâmica de características das redes de computadores.
 
Vários [http://wps.pearsoned.com/ecs_kurose_compnetw_6/216/55463/14198700.cw/ aplicativos] com representação dinâmica de características das redes de computadores.
 
==Transparências utilizadas durante as aulas==
 
==Transparências utilizadas durante as aulas==
[http://docente.ifsc.edu.br/odilson/RCO60803/slides-kurose-cap1.pdf Capítulo 1 - Introdução]
+
[http://docente.ifsc.edu.br/odilson/RDC60803/slides-kurose-cap1.pdf Capítulo 1 - Introdução]
  
[http://docente.ifsc.edu.br/odilson/RCO60803/slides-kurose-cap2.pdf Capítulo 2 - Camada de Aplicação]
+
[http://docente.ifsc.edu.br/odilson/RDC60803/slides-kurose-cap2.pdf Capítulo 2 - Camada de Aplicação]
  
[http://docente.ifsc.edu.br/odilson/RCO60803/PPTs%20-%20Cap%C3%ADtulo%202%20-%20FTP%20-%20Email%20-%20P2P.pdf Capítulo 2 - Camada de Aplicação - FTP + EMAIL + P2P]
+
[http://docente.ifsc.edu.br/odilson/RDC60803/PPTs%20-%20Cap%C3%ADtulo%202%20-%20FTP%20-%20Email%20-%20P2P.pdf Capítulo 2 - Camada de Aplicação - FTP + EMAIL + P2P]
  
[http://docente.ifsc.edu.br/odilson/RCO60803/slides-kurose-cap3.pdf Capítulo 3 - Camada de Transporte]
+
[http://docente.ifsc.edu.br/odilson/RDC60803/slides-kurose-cap3.pdf Capítulo 3 - Camada de Transporte]
  
[http://docente.ifsc.edu.br/odilson/RCO60803/PPTs%20-%20Cap%C3%ADtulo%204%20A%20camada%20de%20REDE.pdf Capítulo 4 - Camada de Rede]
+
[http://docente.ifsc.edu.br/odilson/RDC60803/PPTs%20-%20Cap%C3%ADtulo%204%20A%20camada%20de%20REDE.pdf Capítulo 4 - Camada de Rede]
  
 
==Slides de Outras Universidades==
 
==Slides de Outras Universidades==
Linha 44: Linha 42:
  
 
* [http://www.pop-sc.rnp.br/publico/monitoramento.php Monitoramento do tráfego RNP - PoP-SC]
 
* [http://www.pop-sc.rnp.br/publico/monitoramento.php Monitoramento do tráfego RNP - PoP-SC]
* [http://memoria.rnp.br/ceo/trafego/panorama.php Monitoramento do tráfego RNP - Nacional]
+
* [https://www.rnp.br/sistema-rnp/ferramentas/panorama-de-trafego Monitoramento do tráfego RNP - Nacional]
 
* [http://www.redclara.net/index.php/pt/red/redclara/topologia-actual-de-la-red Rede Clara Internacional]
 
* [http://www.redclara.net/index.php/pt/red/redclara/topologia-actual-de-la-red Rede Clara Internacional]
 
* [https://eventos.rnp.br/sites/default/files/activity/activity-presentation/apresentacao_wrnp_2017_eduardo_grizenid_v_1.2.pdf Futura infraestrutura de rede da RNP]
 
* [https://eventos.rnp.br/sites/default/files/activity/activity-presentation/apresentacao_wrnp_2017_eduardo_grizenid_v_1.2.pdf Futura infraestrutura de rede da RNP]
 +
* [https://http2.akamai.com/demo Comparativo HTTP/1.1 vs HTTP/2]
 
* [https://www.youtube.com/watch?v=IlAJJI-qG2k Animated map shows the undersea cables that power the internet]
 
* [https://www.youtube.com/watch?v=IlAJJI-qG2k Animated map shows the undersea cables that power the internet]
* [http://submarine-cable-map-2018.telegeography.com/ Submarine Cable Map 2018]
+
* [https://submarine-cable-map-2019.telegeography.com/ Submarine Cable Map 2019]
 +
* [https://www.bbc.com/portuguese/geral-50162526 A pré-história da internet]
 +
* [https://www.youtube.com/watch?v=9hIQjrMHTv4 ''History of the Internet'']
 
* [https://www.youtube.com/watch?v=A5dD2x2iQx8 ''History of the Internet'' - legendado]
 
* [https://www.youtube.com/watch?v=A5dD2x2iQx8 ''History of the Internet'' - legendado]
 +
* [https://www.youtube.com/watch?v=PBWhzz_Gn10 ''Warriors of the Net'']
 
* [https://www.youtube.com/watch?v=O_xG0ay5Vqs ''Warriors of the Net'' - legendado]
 
* [https://www.youtube.com/watch?v=O_xG0ay5Vqs ''Warriors of the Net'' - legendado]
 +
* [https://www.youtube.com/watch?v=VANORrzKX50 ''Browser Wars'']
 
* [https://www.youtube.com/watch?v=1G3SUTmioQE ''Browser Wars'' - legendado]
 
* [https://www.youtube.com/watch?v=1G3SUTmioQE ''Browser Wars'' - legendado]
 
* [https://www.youtube.com/watch?v=0nz-lcuv3TM ''Browser Wars'' - dublado]
 
* [https://www.youtube.com/watch?v=0nz-lcuv3TM ''Browser Wars'' - dublado]
 
* [https://db-ip.com/200.135.37.65 Localização geográfica de IPs]
 
* [https://db-ip.com/200.135.37.65 Localização geográfica de IPs]
 
* [http://ipv6.br/ '''IPv6 no Brasil''']
 
* [http://ipv6.br/ '''IPv6 no Brasil''']
 +
* [https://www.youtube.com/watch?v=5OtebbSnwoM Fragmentação no IPv4 e IPv6]
 
* [http://ipv6.br/lab/ Laboratório de IPv6 - Livro didático contendo vários roteiros para entendimento do IPv6]
 
* [http://ipv6.br/lab/ Laboratório de IPv6 - Livro didático contendo vários roteiros para entendimento do IPv6]
 
* [https://www.google.com/intl/pt-BR/ipv6/statistics.html#tab=per-country-ipv6-adoption&tab=per-country-ipv6-adoption Estatísticas Google sobre IPv6]
 
* [https://www.google.com/intl/pt-BR/ipv6/statistics.html#tab=per-country-ipv6-adoption&tab=per-country-ipv6-adoption Estatísticas Google sobre IPv6]
 +
* [https://http2.github.io/faq/#will-http2-replace-http1x HTTP/2 Frequently Asked Questions]
 +
* [https://www.youtube.com/watch?v=8XxeAw_d-BI Iniciação à máquinas de estados]
 +
 +
<!--
 +
=Laboratórios=
  
==Laboratórios==
 
  
 
{{Collapse top |Laboratório 1 - Ferramentas de Rede e Conceitos Básicos}}
 
{{Collapse top |Laboratório 1 - Ferramentas de Rede e Conceitos Básicos}}
Linha 75: Linha 83:
 
====Estrutura do Laboratório====
 
====Estrutura do Laboratório====
  
[http://docente.ifsc.edu.br/odilson/RCO60803/Ferramentas%20de%20rede%20e%20conceitos%20basicos.pdf Conceitos Básicos]
+
[http://docente.ifsc.edu.br/odilson/RDC60803/Ferramentas%20de%20rede%20e%20conceitos%20basicos.pdf Conceitos Básicos]
  
 
[http://tele.sj.ifsc.edu.br/~eraldo/AULAS/2018-2/RCO-INTEGRADO/MACxIP.pdf Endereçamento MAC x Endereçamento IP]
 
[http://tele.sj.ifsc.edu.br/~eraldo/AULAS/2018-2/RCO-INTEGRADO/MACxIP.pdf Endereçamento MAC x Endereçamento IP]
Linha 88: Linha 96:
 
====Parte 1: Observando interfaces do sistema com ifconfig====
 
====Parte 1: Observando interfaces do sistema com 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.
 
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.
 +
 +
NOTA: o ifconfig está sendo substituído pelo comando ip. A última versão do Uuntu já não traz mais o ifconfig por default.
  
 
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.
 
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.
Linha 137: Linha 147:
  
 
#Exemplo 1: <syntaxhighlight lang=bash>
 
#Exemplo 1: <syntaxhighlight lang=bash>
PING 200.135.37.65 (200.135.37.65) 56(84) bytes of data.
+
ping 191.36.0.94
64 bytes from 200.135.37.65: icmp_seq=1 ttl=62 time=0.925 ms
+
PING 191.36.0.94 (191.36.0.94) 56(84) bytes of data.
64 bytes from 200.135.37.65: icmp_seq=2 ttl=62 time=0.743 ms
+
64 bytes from 191.36.0.94: icmp_seq=1 ttl=60 time=2.46 ms
64 bytes from 200.135.37.65: icmp_seq=3 ttl=62 time=0.687 ms
+
64 bytes from 191.36.0.94: icmp_seq=2 ttl=60 time=0.513 ms
64 bytes from 200.135.37.65: icmp_seq=4 ttl=62 time=0.689 ms
+
64 bytes from 191.36.0.94: icmp_seq=3 ttl=60 time=0.573 ms
 +
64 bytes from 191.36.0.94: icmp_seq=4 ttl=60 time=0.558 ms
 
^C
 
^C
--- 200.135.37.65 ping statistics ---
+
--- 191.36.0.94 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
+
4 packets transmitted, 4 received, 0% packet loss, time 3001ms
rtt min/avg/max/mdev = 0.687/0.761/0.925/0.097 ms </syntaxhighlight>
+
rtt min/avg/max/mdev = 0.513/1.026/2.463/0.830 ms </syntaxhighlight>
 +
 
 
##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'')
 
##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'')
 
##Cada pacote tem ainda um tempo de vida (''ttl'' – ''time to live''), o qual é decrementado em cada roteador, sendo o pacote descartado quando chegar a zero; isto evita pacotes perdidos na rede
 
##Cada pacote tem ainda um tempo de vida (''ttl'' – ''time to live''), o qual é decrementado em cada roteador, sendo o pacote descartado quando chegar a zero; isto evita pacotes perdidos na rede
Linha 204: Linha 216:
 
2005 KUROSE, J.F & ROSS, K. W. Todos os direitos reservados  
 
2005 KUROSE, J.F & ROSS, K. W. Todos os direitos reservados  
  
[http://docente.ifsc.edu.br/odilson/RCO60803/Wireshark%20e%20encapsulamento.pdf Wireshark e encapsulamento]
+
[http://docente.ifsc.edu.br/odilson/RDC60803/Wireshark%20e%20encapsulamento.pdf Wireshark e encapsulamento]
 
*Introdução
 
*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.  
 
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.  
Linha 272: Linha 284:
  
 
===Introdução===
 
===Introdução===
[http://docente.ifsc.edu.br/odilson/RCO60803/Conceituando%20protocolos.pdf Conceituando protocolos]
+
[http://docente.ifsc.edu.br/odilson/RDC60803/Conceituando%20protocolos.pdf Conceituando protocolos]
  
 
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.
 
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.
Linha 287: Linha 299:
 
[[Arquivo:AppRCO.png | 500px | Estrutura Applicação'']]
 
[[Arquivo:AppRCO.png | 500px | Estrutura Applicação'']]
  
 +
===Procedimento do Laboratório===
  
 
*Definição do protocolo a ser criado
 
*Definição do protocolo a ser criado
Linha 327: Linha 340:
 
===Fonte base===
 
===Fonte base===
  
*[http://docente.ifsc.edu.br/odilson/RCO60803/Desvendando%20o%20HTTP%20basico.pdf SLIDES DE APOIO: Desvendando o HTTP - Básico - Baseado na Pearson/Kurose]
+
*[http://docente.ifsc.edu.br/odilson/RDC60803/Desvendando%20o%20HTTP%20basico.pdf SLIDES DE APOIO: Desvendando o HTTP - Básico - Baseado na Pearson/Kurose]
 
*[http://www.ebah.com.br/content/ABAAABZ6QAD/wireshark-http Wireshark - HTTP]
 
*[http://www.ebah.com.br/content/ABAAABZ6QAD/wireshark-http Wireshark - HTTP]
 
*[https://pt.wikipedia.org/wiki/Hypertext_Transfer_Protocol HTTP na Wikipedia]
 
*[https://pt.wikipedia.org/wiki/Hypertext_Transfer_Protocol HTTP na Wikipedia]
Linha 421: Linha 434:
 
===Fonte base===
 
===Fonte base===
  
*[http://docente.ifsc.edu.br/odilson/RCO60803/Desvendando%20o%20HTTP%20avancado.pdf SLIDES DE APOIO: Desvendando o HTTP - Avançado - Baseado na Pearson/Kurose]
+
*[http://docente.ifsc.edu.br/odilson/RDC60803/Desvendando%20o%20HTTP%20avancado.pdf SLIDES DE APOIO: Desvendando o HTTP - Avançado - Baseado na Pearson/Kurose]
 
*[http://www.ebah.com.br/content/ABAAABZ6QAD/wireshark-http Wireshark - HTTP]
 
*[http://www.ebah.com.br/content/ABAAABZ6QAD/wireshark-http Wireshark - HTTP]
 
*[https://pt.wikipedia.org/wiki/Hypertext_Transfer_Protocol HTTP na Wikipedia]
 
*[https://pt.wikipedia.org/wiki/Hypertext_Transfer_Protocol HTTP na Wikipedia]
Linha 485: Linha 498:
 
===Fonte base===
 
===Fonte base===
  
*[http://docente.ifsc.edu.br/odilson/RCO60803/ServidorApache.pdf SLIDES DE APOIO: Introdução à Programação “para Web”]. Baseado no resumo destes material Introdução à Programação para Web de Carlos Bazilio: [http://www.ic.uff.br/~bazilio/cursos/java/slides/Introducao.pptm]
+
*[http://docente.ifsc.edu.br/odilson/RDC60803/ServidorApache.pdf SLIDES DE APOIO: Introdução à Programação “para Web”]. Baseado no resumo destes material Introdução à Programação para Web de Carlos Bazilio: [http://www.ic.uff.br/~bazilio/cursos/java/slides/Introducao.pptm]
 
*[https://www.apache.org/ Apache]
 
*[https://www.apache.org/ Apache]
  
 
===Máquinas Virtuais UML / Netkit2===
 
===Máquinas Virtuais UML / Netkit2===
  
[http://docente.ifsc.edu.br/odilson/RCO60803/SlidesApoioMaquinaVirtual.pdf Conceitos de máquinas virtuais]
+
[http://docente.ifsc.edu.br/odilson/RDC60803/SlidesApoioMaquinaVirtual.pdf Conceitos de máquinas virtuais]
  
 
Para esta aula de laboratório estaremos usando o [https://wiki.sj.ifsc.edu.br/index.php/Netkit2 netkit2] do Prof. Sobral, uma extensão do [http://wiki.netkit.org/index.php/Main_Page netkit] da '''Universidade Roma Tre'''.
 
Para esta aula de laboratório estaremos usando o [https://wiki.sj.ifsc.edu.br/index.php/Netkit2 netkit2] do Prof. Sobral, uma extensão do [http://wiki.netkit.org/index.php/Main_Page netkit] da '''Universidade Roma Tre'''.
Linha 549: Linha 562:
 
chmod 555 /var/www/ET/index.html
 
chmod 555 /var/www/ET/index.html
 
service apache2 restart </syntaxhighlight>
 
service apache2 restart </syntaxhighlight>
#Em sua máquina hospedeira transforme o script em executável. Num terminal digite: <syntaxhighlight lang=bash> chmod +x /home/aluno/shared/config_apache.sh </syntaxhighlight>
+
#Em sua máquina hospedeira transforme o script em executável. Num terminal digite: <syntaxhighlight lang=bash> chmod +x /home/aluno/lab/shared/config_apache.sh </syntaxhighlight>
 
#O shell script será executado na máquina virtual do apache, portanto, abra o terminal da mesma no Netkit e digite: <syntaxhighlight lang=bash>
 
#O shell script será executado na máquina virtual do apache, portanto, abra o terminal da mesma no Netkit e digite: <syntaxhighlight lang=bash>
 
/hostlab/shared/config_apache.sh  
 
/hostlab/shared/config_apache.sh  
Linha 573: Linha 586:
  
 
===Fonte Base===
 
===Fonte Base===
*[http://docente.ifsc.edu.br/odilson/RCO60803/Servico%20de%20Nomes%20DNS.pdf Serviço de Nomes - DNS]
+
*[http://docente.ifsc.edu.br/odilson/RDC60803/Servico%20de%20Nomes%20DNS.pdf Serviço de Nomes - DNS]
  
 
===PARTE 1: Consulta simples ao DNS gerada a partir de um comando ping===
 
===PARTE 1: Consulta simples ao DNS gerada a partir de um comando ping===
Linha 740: Linha 753:
 
*Entender o conceito de multiplexação
 
*Entender o conceito de multiplexação
 
===Fonte Base===
 
===Fonte Base===
*[http://docente.ifsc.edu.br/odilson/RCO60803/UDP%20Basico.pdf Introdução a camada de transporte e UDP básico]
+
*[http://docente.ifsc.edu.br/odilson/RDC60803/UDP%20Basico.pdf Introdução a camada de transporte e UDP básico]
  
 
===Parte 1 - Fluxo único UDP===
 
===Parte 1 - Fluxo único UDP===
Linha 790: Linha 803:
 
**Finalização da Conexão
 
**Finalização da Conexão
 
===Fonte Base===
 
===Fonte Base===
*[http://docente.ifsc.edu.br/odilson/RCO60803/TCP%20Basico.pdf Camada de transporte: TCP básico]
+
*[http://docente.ifsc.edu.br/odilson/RDC60803/TCP%20Basico.pdf Camada de transporte: TCP básico]
  
 
==Configuração do Laboratório==
 
==Configuração do Laboratório==
Linha 847: Linha 860:
 
#*O servidor responde com um FIN-ACK.
 
#*O servidor responde com um FIN-ACK.
 
#*Finalmente o cliente faz um ACK.   
 
#*Finalmente o cliente faz um ACK.   
#*Veja se confere com a figura [http://www.tcpipguide.com/free/t_TCPConnectionTermination-2.htm Término de conexão TCP] ou com os [http://docente.ifsc.edu.br/odilson/RCO60803/TCP%20Basico.pdf slides] apresentados no início da aula.
+
#*Veja se confere com a figura [http://www.tcpipguide.com/free/t_TCPConnectionTermination-2.htm Término de conexão TCP] ou com os [http://docente.ifsc.edu.br/odilson/RDC60803/TCP%20Basico.pdf slides] apresentados no início da aula.
 
#Gere com o wireshark um diagrama da comunicação, ou diagrama de troca de mensagens, fazendo: Statistics > Flow Graph > OK
 
#Gere com o wireshark um diagrama da comunicação, ou diagrama de troca de mensagens, fazendo: Statistics > Flow Graph > OK
 
#Analise esse diagrama, observando qual pacote  contém os dados, ou seja, o texto que você digitou.
 
#Analise esse diagrama, observando qual pacote  contém os dados, ou seja, o texto que você digitou.
Linha 862: Linha 875:
  
 
===Fonte Base===
 
===Fonte Base===
*[http://docente.ifsc.edu.br/odilson/RCO60803/TCP%20controle%20de%20erros.pdf TCP - Controle de Erros]
+
*[http://docente.ifsc.edu.br/odilson/RDC60803/TCP%20controle%20de%20erros.pdf TCP - Controle de Erros]
  
 
==Configuração do Laboratório==
 
==Configuração do Laboratório==
Linha 954: Linha 967:
  
 
===Fonte Base===
 
===Fonte Base===
*[http://docente.ifsc.edu.br/odilson/RCO60803/TCP%20controle%20de%20congestionbamento%20e%20equidade.pdf TCP - Controle de Congestionamento e Equidade]
+
*[http://docente.ifsc.edu.br/odilson/RDC60803/TCP%20controle%20de%20congestionbamento%20e%20equidade.pdf TCP - Controle de Congestionamento e Equidade]
 
*[https://media.pearsoncmg.com/aw/ecs_kurose_compnetwork_7/cw/content/interactiveanimations/tcp-congestion/index.html Animação do controle de congestinamento]
 
*[https://media.pearsoncmg.com/aw/ecs_kurose_compnetwork_7/cw/content/interactiveanimations/tcp-congestion/index.html Animação do controle de congestinamento]
  
Linha 1 139: Linha 1 152:
  
 
===Fonte Base===
 
===Fonte Base===
*[http://docente.ifsc.edu.br/odilson/RCO60803/IP%20Basico.pdf Introdução a Camada de Rede]
+
*[http://docente.ifsc.edu.br/odilson/RDC60803/IP%20Basico.pdf Introdução a Camada de Rede]
 
*[http://tele.sj.ifsc.edu.br/~eraldo/AULAS/2018-2/RCO-INTEGRADO/MACxIP.pdf Endereçamento MAC x Endereçamento IP]
 
*[http://tele.sj.ifsc.edu.br/~eraldo/AULAS/2018-2/RCO-INTEGRADO/MACxIP.pdf Endereçamento MAC x Endereçamento IP]
  
Linha 1 225: Linha 1 238:
  
 
===Fonte Base===
 
===Fonte Base===
*[http://docente.ifsc.edu.br/odilson/RCO60803/IP%20Roteamento.pdf Introdução ao Roteamento]
+
*[http://docente.ifsc.edu.br/odilson/RDC60803/IP%20Roteamento.pdf Introdução ao Roteamento]
  
 
====PARTE 1 - Rede com 3 roteadores====
 
====PARTE 1 - Rede com 3 roteadores====
Linha 1 385: Linha 1 398:
  
 
===Fonte Básica===
 
===Fonte Básica===
*[http://docente.ifsc.edu.br/odilson/RCO60803/IP_DHCP_NAT.pdf DHCP e NAT]
+
*[http://docente.ifsc.edu.br/odilson/RDC60803/IP_DHCP_NAT.pdf DHCP e NAT]
 
*[http://www.davidc.net/sites/default/subnets/subnets.html Cálculo de sub-redes]
 
*[http://www.davidc.net/sites/default/subnets/subnets.html Cálculo de sub-redes]
  
Linha 1 449: Linha 1 462:
 
*[http://www.davidc.net/sites/default/subnets/subnets.html Link Calculador Online de Subnets]
 
*[http://www.davidc.net/sites/default/subnets/subnets.html Link Calculador Online de Subnets]
  
 +
{{Collapse bottom}}
 +
 +
{{Collapse top |Laboratório 17 - Tecnologia de Enlace Ethernet }}
  
{{Collapse bottom}}
+
===Objetivos===
  
{{Collapse top |Laboratório 17 - IPv6: Endereços e ''Neighbor Discovery''}}
+
*Compreender que Ethernet não é Internet e que não é necessário o mundo IP para haver comunicação.
 +
*Diferenciar Hub de Switch
 +
*Compreender o papel do protocolo ARP
  
 
===Fonte Base===
 
===Fonte Base===
*[http://docente.ifsc.edu.br/odilson/RCO60803/IPv6.pdf IPv6]
+
*[http://docente.ifsc.edu.br/odilson/RDC60803/Camada%20de%20enlace.pdf Camada de Enlace]
 +
 
 +
===Animação Pearson/Kurose===
  
Fontes Extras
+
*[https://media.pearsoncmg.com/aw/ecs_kurose_compnetwork_7/cw/content/interactiveanimations/csma-cd/index.html Animação CSMA/CD]
*Este roteiro foi baseado no material disponível no Livro - [http://www.paulogurgel.com.br/ Laboratório de IPv6].
 
*[http://docente.ifsc.edu.br/odilson/RED29004/enderec-v6.pdf Guia didático de endereçamento IPv6] obtido de http://ipv6.br/.
 
  
===Objetivos do laboratório:===
+
===PARTE 1===
*Um primeiro contato com o protocolo [https://pt.wikipedia.org/wiki/IPv6 IPv6].
 
*Compreender o funcionando do ''Neighbor Discovery'', o equivalente ao ARP (''Address Resolution Protocol'') do IPv4, que em resumo é uma tabela contendo a relação ente IPs e MACs.
 
*Aprender configurações básicas de interfaces IPv6 no Linux.
 
  
===Introdução teórica===
+
Neste experimento vamos conectar quatro computadores através de um Hub Ethernet. Este dispositivo faz com que todos os computadores se conectem tal como um cabo. Quando um PC envia uma mensagem para outro PC, TODOS os computadores podem ver esta mensagem. Para haver comunicação basta que um computador envie um frame ETHERNET direcionado para o endereço de hardware do computador destino. NÃO é necessário que as interfaces dos computadores estejam configuradas com endereços IP.
Obs.: texto copiado literalmente de: [http://ipv6.br/lab/ Laboratório de IPv6].
 
  
A '''descoberta de vizinhança''' por meio do protocolo ''Neighbor Discovery'' no
+
[[Arquivo:RCO-Animacao_HUB.gif | thumb | 400px| Figura 2 - Funcionamento de um Hub]]
IPv6 é um procedimento realizado pelos nós de uma rede para descobrir endereços físicos dos dispositivos vizinhos presentes no mesmo enlace. A função deste protocolo se assemelha à função do ARP e do RARP no IPv4.
 
*O procedimento é iniciado quando um dispositivo tenta enviar um pacote cujo endereço físico de destino é desconhecido. O nó solicitante envia uma mensagem ''Neighbor Solicitation'' (NS) para todos os nós do enlace pertencentes ao grupo ''multicast solicited-node'' (ff02::1:ffXX:XXXX), de modo que XX:XXXX são os últimos 24 bits do endereço IPv6 em que está interessado.
 
*É possível notar que, por uma coincidência dos últimos 24 bits, é bastante provável que apenas o nó de destino faça realmente parte deste grupo. Isto é um ''truque'' interessante do IPv6 para diminuir o tráfego deste tipo de pacote na rede.
 
*Na mensagem NS, o endereço IPv6 a ser resolvido é informado no campo ''Target''. O campo ''Source link-layer address'' informa ao nó de destino o endereço MAC do nó de origem, poupando-o de ter que fazer o mesmo procedimento no sentido inverso.
 
*O nó de destino, dono do IPv6 requisitado, ao receber este pacote, envia uma mensagem ''Neighbor Advertisement'' (NA) como resposta diretamente ao nó requisitante. O seu endereço físico será informado no campo ''Target link-layer address''.
 
*A informação de mapeamento entre endereços IP e endereços físicos é armazenada em uma tabela chamada ''neighbor cache''. Nela também fica registrado o ''status'' de cada destino, informando se o mesmo é alcançável ou não.
 
  
===Roteiro de atividades:===
+
#Contruir um arquivo '''\home\aluno\hub.conf''' com a seguinte configuração <syntaxhighlight lang=bash>
A figura abaixo apresenta o diagrama esquemático da rede a ser montada/analisada. Observe que todos os IPv6 ''Global Unicast'' já estão definidos na mesma, são esses IPs que utilizaremos em nosso experimento.
 
 
 
[[Arquivo:Diagrama_rede_IPv6.jpg]]
 
 
 
#Crie em seu computador um arquivo com nome '''/home/aluno/IPv6.conf''', com o seguinte conteúdo: <syntaxhighlight lang=bash>
 
#Ligacao das maquinas nos dominios de colisao
 
#Duas pequenas redes interligadas pelo backbone
 
 
# Hosts definitions
 
 
pc1[type]=generic
 
pc1[type]=generic
 
pc2[type]=generic
 
pc2[type]=generic
 
pc3[type]=generic
 
pc3[type]=generic
 
pc4[type]=generic
 
pc4[type]=generic
+
 
# Hosts' interfaces to local routers
+
pc1[eth0]=lan0
pc1[eth0]=link0:ipv6=2001:bcc:faca:1::101/64
+
pc2[eth0]=lan0
pc2[eth0]=link1:ipv6=2001:bcc:cafe:1::102/64
+
pc3[eth0]=lan0
pc3[eth0]=HUB1:ipv6=2001:bcc:1f0:1::103/64
+
pc4[eth0]=lan0
pc4[eth0]=HUB1
+
</syntaxhighlight>
+
#Carregar e executar a configuração no Netkit.
#Default Gateways definitions
+
#Baixar o arquivo sendraw.py: [http://tele.sj.ifsc.edu.br/~eraldo/AULAS/2018/RCO-INTEGRADO/sendraw.py sendraw.py] para o diretório /home/aluno
pc1[route]=default6:gateway=2001:bcc:faca:1::1
+
#Copiar o arquivo para a Máquina Virtual, no terminal da máquina real digite:<syntaxhighlight lang=bash>
pc2[route]=default6:gateway=2001:bcc:cafe:1::1
+
cp /home/aluno/sendraw.py /home/aluno/lab/shared </syntaxhighlight>
pc3[route]=default6:gateway=2001:bcc:1f0:1::1
+
#Identificar o endereço de Hardware (MAC) do PC2. Use o '''ifconfig'''. Note que NÃO existe endereço IPv4 configurado.
+
#Executar o tcpdump no PC2:<syntaxhighlight lang=bash>
# Routers definitions
+
  tcpdump -i eth0 -e -X -vvv -s 50</syntaxhighlight>
r1[type]=gateway
+
#Executar o tcpdump no PC3:<syntaxhighlight lang=bash>
r2[type]=gateway
+
  tcpdump -i eth0 -e -X -vvv -s 50</syntaxhighlight>
+
#Executar o tcpdump no PC4:<syntaxhighlight lang=bash>
#Routers interfaces definitions
+
  tcpdump -i eth0 -e -X -vvv -s 50</syntaxhighlight>
r1[eth0]=backbone0:ipv6=2001:db8:dead:1::1/64
+
#No PC1 enviar uma mensagem para o PC2 usando o endereço de hardware identificado anteriormente, <span style="color: red;">lembre-se se substituir o ENDERECO_MAC pelo MAC adequado:<syntaxhighlight lang=bash>
r1[eth1]=link0:ipv6=2001:bcc:faca:1::1/64
+
  python /hostlab/shared/sendraw.py -d ENDERECO_MAC -i Alo-Mundo</syntaxhighlight> <span style="color: black;"><blockquote style="background: lime; border: 1px solid black; padding: 1em;"> Observe que a mensagem chega a todos os PCs embora foi enviada somente para o PC2. </blockquote>
r1[eth2]=link1:ipv6=2001:bcc:cafe:1::1/64
+
#O que explica o comportamento de broadcast para esse caso?
+
#Pode existir colisão em um sistema com HUBs simples como este do experimento?
r2[eth0]=backbone0:ipv6=2001:db8:dead:1::2/64
+
 
r2[eth1]=HUB1:ipv6=2001:bcc:1f0:1::1/64
+
===PARTE 2 - Explorando o SWITCH e o endereço de Broadcast Ethernet===
+
 
#Routers definitions
+
[[Arquivo:RCO-Animacao_SWITCH.gif | thumb | 370px| Figura 2 - Funcionamento de um Switch]]
r1[route]=2001:bcc:1f0:1::0/64:gateway=2001:db8:dead:1::2
+
 
r2[route]=2001:bcc:faca:1::0/64:gateway=2001:db8:dead:1::1
+
#Construir um arquivo '''/home/aluno/switch.conf''' com a seguinte configuração: <syntaxhighlight lang=bash>
r2[route]=2001:bcc:cafe:1::0/64:gateway=2001:db8:dead:1::1
+
switchA[type]=switch
</syntaxhighlight>
+
 
#Tenha certeza que o Netkit2 estja atualizado: General >> Update.
+
pc1[type]=generic
#Rode o NetKit em seu computador. Em um terminal digite: <syntaxhighlight lang=bash>
+
pc2[type]=generic
netkit2 & </syntaxhighlight>
+
pc3[type]=generic
#No menu '''File''' - '''Load and Run''', procure o arquivo '''/home/aluno/IPv6.conf''' e clique em OK. Abrirá uma janela com 6 abas, onde cada uma delas é um terminal de configuração do respectivo equipamento: '''pc1-4''' ou '''r1-2'''.
+
pc4[type]=generic
#Observe que o '''pc4''' não está com sua interface configurada.
+
 
#Ao clicar no menu '''File''' - '''Graph''', pode-se ter uma visão da rede a ser simulada e conferir se é equivalente ao diagrama proposto.
+
switchA[eth0]=port0
#Faça um '''ping6''' entre o '''pc1''' ao '''pc3''': <syntaxhighlight lang=bash>
+
switchA[eth1]=port1
ping6 -c4 2001:bcc:1f0:1::103 </syntaxhighlight>
+
switchA[eth2]=port2
#Faça um '''ping6''' entre o '''pc1''' e '''pc2'''.
+
switchA[eth3]=port3
#No '''pc4''' use o seguinte comando para adicionar o endereço IPv6 à interface de rede: <syntaxhighlight lang=bash>
+
 
ip addr add 2001:bcc:1f0:1::104/64 dev eth0 </syntaxhighlight>
+
pc1[eth0]=port0
#No '''pc4''', acrescente o ''default gateway'' com o seguinte comando: <syntaxhighlight lang=bash>
+
pc2[eth0]=port1
ip -6 route add default via 2001:bcc:1f0:1::1 dev eth0 </syntaxhighlight>
+
pc3[eth0]=port2
#No '''pc1''' use o seguinte comando para verificar como ficou a configuração dos endereços da interface de rede. O resultado é similar ao apresentado pelo comando '''ifconfig''': <syntaxhighlight lang=bash>
+
pc4[eth0]=port3
ip addr show dev eth0 </syntaxhighlight>
+
</syntaxhighlight>
#Todo o roteamento está pronto, mas caso desejássemos poderíamos acrescentar rotas com comando similares aos já utilizados. Por exemplo, no '''r1''', para adicionar uma rota estática para a rede dos '''pc3''' e '''pc4''' utilizaríamos o seguinte comando: <syntaxhighlight lang=bash>
+
#Carregar e executar a configuração no Netkit.
ip -6 route add 2001:bcc:1f0:1::/64 via 2001:db8:dead:1::2 dev eth0 </syntaxhighlight>
+
#Baixar o arquivo sendraw.py do site:  [http://tele.sj.ifsc.edu.br/~eraldo/AULAS/2018/RCO-INTEGRADO/sendraw.py sendraw.py] para o /home/aluno.
#Confira as rotas estabelecidas em todos os ''hosts'' com o comando abaixo.
+
#Copiar o arquivo para a Máquina Virtual. No terminal da máquina real digite:<syntaxhighlight lang=bash>
##São coerentes com os dados apresentados no diagrama acima?<syntaxhighlight lang=bash>
+
  cp /home/aluno/sendraw.py /home/aluno/lab/shared/ </syntaxhighlight>
ip -6 route show </syntaxhighlight>
+
#Identificar o endereço de Hardware (MAC) do PC2. Use o ifconfig. Note que NÃO existe endereço IPv4 configurado
#Use os comandos '''traceroute6 2001:bcc:1f0:1::103''' e '''traceroute6 2001:bcc:1f0:1::104''' a partir do computador '''pc1'''.
+
#Executar o tcpdump no PC2, PC3 e PC4 com o comando:<syntaxhighlight lang=bash>
#Anote as rotas.
+
  tcpdump -i eth0 -e -X -vvv -s 50</syntaxhighlight>
#Deixe um '''ping6''' entre o '''pc1''' ao '''pc3''' rodando: <syntaxhighlight lang=bash>
+
#No PC1 enviar uma mensagem para o PC2 usando o endereço de hardware identificado anteriormente, <span style="color: red;">Lembre-se se substituir o ENDERECO_MAC pelo MAC adequado:<syntaxhighlight lang=bash>
ping6 2001:bcc:1f0:1::103 </syntaxhighlight>
+
  python /hostlab/shared/sendraw.py -d ENDERECO_MAC -i Alo-Mundo </syntaxhighlight> <span style="color: black;"><blockquote style="background: lime; border: 1px solid black; padding: 1em;"> Agora somente o PC2 deve receber pois o ''switch'' entrega o quadro somente para a porta de saída associada ao respectivo MAC destino. </blockquote><blockquote style="background: red; border: 1px solid black; padding: 1em;"> CASO todos tenham recebido, é devido ao fato que por algum motivo o switch ainda não aprendeu quem está conectado nas portas. Neste caso envie pacotes do PC2 para o PC1 e depois retome o experimento do item 4. </blockquote>
#Rode o wireshark no '''r1''' com os procedimentos:
+
#No PC1 enviar uma mensagem em broadcast (endereço FF:FF:FF:FF:FF:FF)<syntaxhighlight lang=bash>
##Clique sobre a aba do '''r1'''.
+
  python /hostlab/shared/sendraw.py -d FF:FF:FF:FF:FF:FF -i Mensagem_Broadcast  </syntaxhighlight>
 +
<blockquote style="background: lime; border: 1px solid black; padding: 1em;">
 +
  Note que neste caso todos os computadores recebem a mensagem em ''broadcast'', mesmo sendo um '''switch'''.
 +
</blockquote>
 +
 
 +
===PARTE 3 - Explorando o ARP===
 +
 
 +
O protocolo ARP serve como apoio para descoberta do endereço MAC dado que se sabe o endereço IP de uma máquina. Quando um PC deseja enviar um pacote IP para uma máquina na rede local, ele necessita descobrir o endereço MAC desta máquina. O protocolo ARP usa o broadcast ETHERNET para perguntar para todas as máquinas na rede QUEM tem o endereço IP em questão. A máquina que possui o endereço responderá informando o seu MAC.
 +
 
 +
#Configure endereços IP em todas as máquinas do laboratório anterior. Use exemplo a rede 10.10.10.0/24
 +
#Rode o wireshark no '''PC2''' com os procedimentos:
 +
##Clique sobre a aba do '''PC2'''.
 
##Menu: Wireshark >> any
 
##Menu: Wireshark >> any
#Analisando a captura do Wireshark, você verá os pacotes relativos ao ping6 e também pacotes parecidos com: <syntaxhighlight lang=bash> fe80::4cd6:19ff:fedc:2b52 2001:db8:dead:1::1 ICMPv6 86 Neighbor Solicitation for 2001:db8:dead:1::1 from 4e:d6:19:dc:2b:52
+
#Faça um ping do PC1 no PC2 e observe a sequência de pacotes trocados. Faça um diagrama no tempo mostrando a troca de pacotes até a realização do ECHO REQUEST do ping. Os resultados do Wireshark devem ser similares a: [[Arquivo:RCO-TelaARP.jpg | 700px| Troca de pacotes ARP e PING]]
2001:db8:dead:1::1 fe80::4cd6:19ff:fedc:2b52 ICMPv6 78 Neighbor Advertisement 2001:db8:dead:1::1 (rtr, sol) </syntaxhighlight>
+
#Confira o cache do arp no PC1 fazendo:<syntaxhighlight lang=bash>
#Explique o processo de descoberta de vizinhança (''Neighbor Discovery'' / ''Neighbor Solicitation'' - '''NS''' e ''Neighbor Advertisement'' - '''NA'''), citando os endereços de '''multicast''' e '''link local''' utilizados.
+
  arp -a</syntaxhighlight>
#Alguns exemplos de campos visualizáveis para uma mensagem do tipo ''Neighbor Advertisement'':
+
#Confira o cache do arp no PC2 fazendo:<syntaxhighlight lang=bash>
##Destination (camada Ethernet)
+
  arp -a</syntaxhighlight>
##*O endereço MAC do nó requisitante que foi obtido por meio da mensagem NS enviada anteriormente.
+
#Faça um ping do PC1 no PC3.
##Source (camada Ethernet)
+
#Confira novamente o cache do arp no PC1 fazendo:<syntaxhighlight lang=bash>
##*A origem é o endereço MAC da interface do dispositivo que enviou a resposta.
+
  arp -a</syntaxhighlight>
##Type (camada Ethernet)
+
 
##*Indica que a mensagem utiliza IPv6.
 
##Next header (camada IPv6)
 
##*Indica qual é o próximo cabeçalho. Neste caso, o valor 58 (0x3a) refere-se a uma mensagem ICMPv6.
 
##Source (camada IPv6)
 
##*A origem é o endereço IP da interface diretamente ligada ao enlace em que a requisição foi recebida.
 
##Destination (camada IPv6)
 
##*Diferentemente da mensagem NS, a mensagem NA possui como destino o endereço IPv6 global do nó requisitante.
 
##Type (camada ICMPv6)
 
##*Indica que a mensagem é do tipo 136 (Neighbor Advertisement).
 
##Flags (camada ICMPv6)
 
##*Uma mensagem NA possui três flags:
 
###Indica se quem está enviando é um roteador. Neste caso, o valor marcado é 0, pois não é um roteador.
 
###Indica se a mensagem é uma resposta a um NS. Neste caso, o valor marcado é 1, pois é uma resposta.
 
###Indica se a informação carregada na mensagem é uma atualização de endereço de algum nó da rede. Neste caso, o valor marcado é 1, pois está informando o endereço pela primeira vez.
 
##Target Address (camada ICMPv6)
 
##*Indica o endereço IP associado às informações das flags. Neste caso, é o próprio endereço da interface do dispositivo em questão.
 
##ICMPv6 option (camada ICMPv6)
 
##*Indica as opções do pacote ICMPv6:
 
###Target link-layer address
 
##Type
 
##*Indica o tipo de opção. Neste caso, Target link-layer address.
 
##Link-layer address
 
##*Indica o endereço MAC da interface do dispositivo em questão.
 
#Em todos os ''hosts'' rode o comando <syntaxhighlight lang=bash> ip -6 neighbor show </syntaxhighlight>
 
##Qual é a funcionalidade desse comando?
 
##Qual é o significado do conteúdo dessa tabela?
 
##A tabela mostrada em cada um dos casos é compatível com o diagrama da rede montado?
 
##Por que, por exemplo, na tabela do '''pc3''' não há uma referência explícita ao '''pc1'''?
 
 
{{Collapse bottom}}
 
{{Collapse bottom}}
  
{{Collapse top |Laboratório 18 - Tecnologia de Enlace Ethernet }}
+
{{Collapse top |Laboratório 18 - IPv6: Endereços e ''Neighbor Discovery''}}
  
===Objetivos===
+
===Fonte Base===
 +
*[http://docente.ifsc.edu.br/odilson/RDC60803/IPv6.pdf IPv6]
  
*Compreender que Ethernet não é Internet e que não é necessário o mundo IP para haver comunicação.
+
Fontes Extras
*Diferenciar Hub de Switch
+
*Este roteiro foi baseado no material disponível no Livro - [http://www.paulogurgel.com.br/ Laboratório de IPv6].
*Compreender o papel do protocolo ARP
+
*[http://docente.ifsc.edu.br/odilson/RED29004/enderec-v6.pdf Guia didático de endereçamento IPv6] obtido de http://ipv6.br/.
  
===Fonte Base===
+
===Objetivos do laboratório:===
*[http://docente.ifsc.edu.br/odilson/RCO60803/Camada%20de%20enlace.pdf Camada de Enlace]
+
*Um primeiro contato com o protocolo [https://pt.wikipedia.org/wiki/IPv6 IPv6].
 +
*Compreender o funcionando do ''Neighbor Discovery'', o equivalente ao ARP (''Address Resolution Protocol'') do IPv4, que em resumo é uma tabela contendo a relação ente IPs e MACs.
 +
*Aprender configurações básicas de interfaces IPv6 no Linux.
  
===Animação Pearson/Kurose===
+
===Introdução teórica===
 +
Obs.: texto copiado literalmente de: [http://ipv6.br/lab/ Laboratório de IPv6].
  
*[https://media.pearsoncmg.com/aw/ecs_kurose_compnetwork_7/cw/content/interactiveanimations/csma-cd/index.html Animação CSMA/CD]
+
A '''descoberta de vizinhança''' por meio do protocolo ''Neighbor Discovery'' no
 +
IPv6 é um procedimento realizado pelos nós de uma rede para descobrir endereços físicos dos dispositivos vizinhos presentes no mesmo enlace. A função deste protocolo se assemelha à função do ARP e do RARP no IPv4.
 +
*O procedimento é iniciado quando um dispositivo tenta enviar um pacote cujo endereço físico de destino é desconhecido. O nó solicitante envia uma mensagem ''Neighbor Solicitation'' (NS) para todos os nós do enlace pertencentes ao grupo ''multicast solicited-node'' (ff02::1:ffXX:XXXX), de modo que XX:XXXX são os últimos 24 bits do endereço IPv6 em que está interessado.
 +
*É possível notar que, por uma coincidência dos últimos 24 bits, é bastante provável que apenas o nó de destino faça realmente parte deste grupo. Isto é um ''truque'' interessante do IPv6 para diminuir o tráfego deste tipo de pacote na rede.
 +
*Na mensagem NS, o endereço IPv6 a ser resolvido é informado no campo ''Target''. O campo ''Source link-layer address'' informa ao nó de destino o endereço MAC do nó de origem, poupando-o de ter que fazer o mesmo procedimento no sentido inverso.
 +
*O nó de destino, dono do IPv6 requisitado, ao receber este pacote, envia uma mensagem ''Neighbor Advertisement'' (NA) como resposta diretamente ao nó requisitante. O seu endereço físico será informado no campo ''Target link-layer address''.
 +
*A informação de mapeamento entre endereços IP e endereços físicos é armazenada em uma tabela chamada ''neighbor cache''. Nela também fica registrado o ''status'' de cada destino, informando se o mesmo é alcançável ou não.
  
===PARTE 1===
+
===Roteiro de atividades: ETAPA 1===
  
Neste experimento vamos conectar quatro computadores através de um Hub Ethernet. Este dispositivo faz com que todos os computadores se conectem tal como um cabo. Quando um PC envia uma mensagem para outro PC, TODOS os computadores podem ver esta mensagem. Para haver comunicação basta que um computador envie um frame ETHERNET direcionado para o endereço de hardware do computador destino. NÃO é necessário que as interfaces dos computadores estejam configuradas com endereços IP.
+
A figura abaixo apresenta o diagrama esquemático da rede a ser montada/analisada. Observe que todos os IPv6 ''Global Unicast'' já estão definidos na mesma, são esses IPs que utilizaremos em nosso experimento.
  
[[Arquivo:RCO-Animacao_HUB.gif | thumb | 400px| Figura 2 - Funcionamento de um Hub]]
+
[[Arquivo:Diagrama_rede_IPv6.jpg]]
  
#Contruir um arquivo '''\home\aluno\hub.conf''' com a seguinte configuração <syntaxhighlight lang=bash>
+
#Crie em seu computador um arquivo com nome '''/home/aluno/IPv6.conf''', com o seguinte conteúdo: <syntaxhighlight lang=bash>
pc1[type]=generic
+
#Ligacao das maquinas nos dominios de colisao
 +
#Duas pequenas redes interligadas pelo backbone
 +
 +
# Hosts definitions
 +
pc1[type]=generic
 
pc2[type]=generic
 
pc2[type]=generic
 
pc3[type]=generic
 
pc3[type]=generic
 
pc4[type]=generic
 
pc4[type]=generic
 
+
pc1[eth0]=lan0
+
# Hosts' interfaces to local routers
pc2[eth0]=lan0
+
pc1[eth0]=link0:ipv6=2001:bcc:faca:1::101/64
pc3[eth0]=lan0
+
pc2[eth0]=link1:ipv6=2001:bcc:cafe:1::102/64
pc4[eth0]=lan0
+
pc3[eth0]=HUB1:ipv6=2001:bcc:1f0:1::103/64
</syntaxhighlight>
+
pc4[eth0]=HUB1
#Carregar e executar a configuração no Netkit.
+
#Baixar o arquivo sendraw.py: [http://tele.sj.ifsc.edu.br/~eraldo/AULAS/2018/RCO-INTEGRADO/sendraw.py sendraw.py] para o diretório /home/aluno
+
#Default Gateways definitions
#Copiar o arquivo para a Máquina Virtual, no terminal da máquina real digite:<syntaxhighlight lang=bash>
+
pc1[route]=default6:gateway=2001:bcc:faca:1::1
cp /home/aluno/sendraw.py /home/aluno/lab/shared </syntaxhighlight>
+
pc2[route]=default6:gateway=2001:bcc:cafe:1::1
#Identificar o endereço de Hardware (MAC) do PC2. Use o '''ifconfig'''. Note que NÃO existe endereço IPv4 configurado.
+
pc3[route]=default6:gateway=2001:bcc:1f0:1::1
#Executar o tcpdump no PC2:<syntaxhighlight lang=bash>
+
  tcpdump -i eth0 -e -X -vvv -s 50</syntaxhighlight>
+
# Routers definitions
#Executar o tcpdump no PC3:<syntaxhighlight lang=bash>
+
r1[type]=gateway
  tcpdump -i eth0 -e -X -vvv -s 50</syntaxhighlight>
+
r2[type]=gateway
#Executar o tcpdump no PC4:<syntaxhighlight lang=bash>
+
  tcpdump -i eth0 -e -X -vvv -s 50</syntaxhighlight>
+
#Routers interfaces definitions
#No PC1 enviar uma mensagem para o PC2 usando o endereço de hardware identificado anteriormente, <span style="color: red;">lembre-se se substituir o ENDERECO_MAC pelo MAC adequado:<syntaxhighlight lang=bash>
+
r1[eth0]=backbone0:ipv6=2001:db8:dead:1::1/64
  python /hostlab/shared/sendraw.py -d ENDERECO_MAC -i Alo-Mundo</syntaxhighlight> <span style="color: black;"><blockquote style="background: lime; border: 1px solid black; padding: 1em;"> Observe que a mensagem chega a todos os PCs embora foi enviada somente para o PC2. </blockquote>
+
r1[eth1]=link0:ipv6=2001:bcc:faca:1::1/64
#O que explica o comportamento de broadcast para esse caso?
+
r1[eth2]=link1:ipv6=2001:bcc:cafe:1::1/64
#Pode existir colisão em um sistema com HUBs simples como este do experimento?
+
 
+
r2[eth0]=backbone0:ipv6=2001:db8:dead:1::2/64
===PARTE 2 - Explorando o SWITCH e o endereço de Broadcast Ethernet===
+
r2[eth1]=HUB1:ipv6=2001:bcc:1f0:1::1/64
 
+
[[Arquivo:RCO-Animacao_SWITCH.gif | thumb | 370px| Figura 2 - Funcionamento de um Switch]]
+
#Routers definitions
 
+
r1[route]=2001:bcc:1f0:1::0/64:gateway=2001:db8:dead:1::2
#Construir um arquivo '''/home/aluno/switch.conf''' com a seguinte configuração: <syntaxhighlight lang=bash>
+
r2[route]=2001:bcc:faca:1::0/64:gateway=2001:db8:dead:1::1
switchA[type]=switch
+
r2[route]=2001:bcc:cafe:1::0/64:gateway=2001:db8:dead:1::1
 
+
</syntaxhighlight>
pc1[type]=generic
+
#Tenha certeza que o Netkit2 estja atualizado: General >> Update.
pc2[type]=generic
+
#Rode o NetKit em seu computador. Em um terminal digite: <syntaxhighlight lang=bash>
pc3[type]=generic
+
netkit2 & </syntaxhighlight>
pc4[type]=generic
+
#No menu '''File''' - '''Load and Run''', procure o arquivo '''/home/aluno/IPv6.conf''' e clique em OK. Abrirá uma janela com 6 abas, onde cada uma delas é um terminal de configuração do respectivo equipamento: '''pc1-4''' ou '''r1-2'''.
 
+
#Observe que o '''pc4''' não está com sua interface configurada.
switchA[eth0]=port0
+
#Ao clicar no menu '''File''' - '''Graph''', pode-se ter uma visão da rede a ser simulada e conferir se é equivalente ao diagrama proposto.
switchA[eth1]=port1
+
#Faça um '''ping6''' entre o '''pc1''' ao '''pc3''': <syntaxhighlight lang=bash>
switchA[eth2]=port2
+
ping6 -c4 2001:bcc:1f0:1::103 </syntaxhighlight>
switchA[eth3]=port3
+
#Faça um '''ping6''' entre o '''pc1''' e '''pc2'''.
 
+
#No '''pc4''' use o seguinte comando para adicionar o endereço IPv6 à interface de rede: <syntaxhighlight lang=bash>
pc1[eth0]=port0
+
ip addr add 2001:bcc:1f0:1::104/64 dev eth0 </syntaxhighlight>
pc2[eth0]=port1
+
#No '''pc4''', acrescente o ''default gateway'' com o seguinte comando: <syntaxhighlight lang=bash>
pc3[eth0]=port2
+
ip -6 route add default via 2001:bcc:1f0:1::1 dev eth0 </syntaxhighlight>
pc4[eth0]=port3
+
#No '''pc1''' use o seguinte comando para verificar como ficou a configuração dos endereços da interface de rede. O resultado é similar ao apresentado pelo comando '''ifconfig''': <syntaxhighlight lang=bash>
</syntaxhighlight>
+
ip addr show dev eth0 </syntaxhighlight>
#Carregar e executar a configuração no Netkit.
+
#Todo o roteamento está pronto, mas caso desejássemos poderíamos acrescentar rotas com comando similares aos já utilizados. Por exemplo, no '''r1''', para adicionar uma rota estática para a rede dos '''pc3''' e '''pc4''' utilizaríamos o seguinte comando: <syntaxhighlight lang=bash>
#Baixar o arquivo sendraw.py do site:  [http://tele.sj.ifsc.edu.br/~eraldo/AULAS/2018/RCO-INTEGRADO/sendraw.py sendraw.py] para o /home/aluno.
+
ip -6 route add 2001:bcc:1f0:1::/64 via 2001:db8:dead:1::2 dev eth0 </syntaxhighlight>
#Copiar o arquivo para a Máquina Virtual<syntaxhighlight lang=bash>
+
#Confira as rotas estabelecidas em todos os ''hosts'' com o comando abaixo.  
  cp /home/aluno/sendraw.py /home/aluno/lab/shared/ </syntaxhighlight>
+
##São coerentes com os dados apresentados no diagrama acima?<syntaxhighlight lang=bash>
#Identificar o endereço de Hardware (MAC) do PC2. Use o ifconfig. Note que NÃO existe endereço IPv4 configurado
+
ip -6 route show </syntaxhighlight>
#Executar o tcpdump no PC2, PC3 e PC4 com o comando:<syntaxhighlight lang=bash>
+
#No '''pc1''' use os seguintes comandos para ver a rota para alguns vizinhos: <syntaxhighlight lang=bash>
  tcpdump -i eth0 -e -X -vvv -s 50</syntaxhighlight>
+
traceroute6 2001:bcc:1f0:1::103
#No PC1 enviar uma mensagem para o PC2 usando o endereço de hardware identificado anteriormente, <span style="color: red;">Lembre-se se substituir o ENDERECO_MAC pelo MAC adequado:<syntaxhighlight lang=bash>
+
traceroute6 2001:bcc:1f0:1::104 </syntaxhighlight>
  python /hostlab/shared/sendraw.py -d ENDERECO_MAC -i Alo-Mundo </syntaxhighlight> <span style="color: black;"><blockquote style="background: lime; border: 1px solid black; padding: 1em;"> Agora somente o PC2 deve receber pois o ''switch'' entrega o quadro somente para a porta de saída associada ao respectivo MAC destino. </blockquote><blockquote style="background: red; border: 1px solid black; padding: 1em;"> CASO todos tenham recebido, é devido ao fato que por algum motivo o switch ainda não aprendeu quem está conectado nas portas. Neste caso envie pacotes do PC2 para o PC1 e depois retome o experimento do item 4. </blockquote>
+
#*Anote as rotas.
#No PC1 enviar uma mensagem em broadcast (endereço FF:FF:FF:FF:FF:FF)<syntaxhighlight lang=bash>
+
#Deixe um '''ping6''' entre o '''pc1''' ao '''pc3''' rodando: <syntaxhighlight lang=bash>
  python /hostlab/shared/sendraw.py -d FF:FF:FF:FF:FF:FF -i Mensagem_Broadcast  </syntaxhighlight>
+
ping6 2001:bcc:1f0:1::103 </syntaxhighlight>
<blockquote style="background: lime; border: 1px solid black; padding: 1em;">
+
#Rode o wireshark no '''r1''' com os procedimentos:
  Note que neste caso todos os computadores recebem a mensagem em ''broadcast'', mesmo sendo um '''switch'''.
+
##Clique sobre a aba do '''r1'''.
</blockquote>
 
 
 
===PARTE 3 - Explorando o ARP===
 
 
 
O protocolo ARP serve como apoio para descoberta do endereço MAC dado que se sabe o endereço IP de uma máquina. Quando um PC deseja enviar um pacote IP para uma máquina na rede local, ele necessita descobrir o endereço MAC desta máquina. O protocolo ARP usa o broadcast ETHERNET para perguntar para todas as máquinas na rede QUEM tem o endereço IP em questão. A máquina que possui o endereço responderá informando o seu MAC.
 
 
 
#Configure endereços IP em todas as máquinas do laboratório enterior. Use exemplo a rede 10.10.10.0/24
 
#Rode o wireshark no '''PC2''' com os procedimentos:
 
##Clique sobre a aba do '''PC2'''.
 
 
##Menu: Wireshark >> any
 
##Menu: Wireshark >> any
#Faça um ping do PC1 no PC2 e observe a sequência de pacotes trocados. Faça um diagrama no tempo mostrando a troca de pacotes até a realização do ECHO REQUEST do ping. Os resultados do Wireshark devem ser similares a: [[Arquivo:RCO-TelaARP.jpg | 700px| Troca de pacotes ARP e PING]]
+
#Analisando a captura do Wireshark, você verá os pacotes relativos ao ping6 e também pacotes parecidos com: <syntaxhighlight lang=bash> fe80::4cd6:19ff:fedc:2b52 2001:db8:dead:1::1 ICMPv6 86 Neighbor Solicitation for 2001:db8:dead:1::1 from 4e:d6:19:dc:2b:52
#Confira o cache do arp no PC1 fazendo:<syntaxhighlight lang=bash>
+
2001:db8:dead:1::1 fe80::4cd6:19ff:fedc:2b52 ICMPv6 78 Neighbor Advertisement 2001:db8:dead:1::1 (rtr, sol) </syntaxhighlight>
  arp -a</syntaxhighlight>
+
#Explique o processo de descoberta de vizinhança (''Neighbor Discovery'' / ''Neighbor Solicitation'' - '''NS''' e ''Neighbor Advertisement'' - '''NA'''), citando o endereço '''link local''' utilizado.
#Confira o cache do arp no PC2 fazendo:<syntaxhighlight lang=bash>
+
#*Alguns exemplos de campos visualizáveis para uma mensagem do tipo ''Neighbor Advertisement'':
  arp -a</syntaxhighlight>
+
##Destination (camada Ethernet)
#Faça um ping do PC1 no PC3.
+
##*O endereço MAC do nó requisitante que foi obtido por meio da mensagem NS enviada anteriormente.
#Confira novamente o cache do arp no PC1 fazendo:<syntaxhighlight lang=bash>
+
##Source (camada Ethernet)
  arp -a</syntaxhighlight>
+
##*A origem é o endereço MAC da interface do dispositivo que enviou a resposta.
 +
##Type (camada Ethernet)
 +
##*Indica que a mensagem utiliza IPv6.
 +
##Next header (camada IPv6)
 +
##*Indica qual é o próximo cabeçalho. Neste caso, o valor 58 (0x3a) refere-se a uma mensagem ICMPv6.
 +
##Source (camada IPv6)
 +
##*A origem é o endereço IP da interface diretamente ligada ao enlace em que a requisição foi recebida.
 +
##Destination (camada IPv6)
 +
##*Diferentemente da mensagem NS, a mensagem NA possui como destino o endereço IPv6 global do nó requisitante.
 +
##Type (camada ICMPv6)
 +
##*Indica que a mensagem é do tipo 136 (Neighbor Advertisement).
 +
##Flags (camada ICMPv6)
 +
##*Uma mensagem NA possui três flags:
 +
###Indica se quem está enviando é um roteador. Neste caso, o valor marcado é 0, pois não é um roteador.
 +
###Indica se a mensagem é uma resposta a um NS. Neste caso, o valor marcado é 1, pois é uma resposta.
 +
###Indica se a informação carregada na mensagem é uma atualização de endereço de algum nó da rede. Neste caso, o valor marcado é 1, pois está informando o endereço pela primeira vez.
 +
##Target Address (camada ICMPv6)
 +
##*Indica o endereço IP associado às informações das flags. Neste caso, é o próprio endereço da interface do dispositivo em questão.
 +
##ICMPv6 option (camada ICMPv6)
 +
##*Indica as opções do pacote ICMPv6:
 +
###Target link-layer address
 +
##Type
 +
##*Indica o tipo de opção. Neste caso, Target link-layer address.
 +
##Link-layer address
 +
##*Indica o endereço MAC da interface do dispositivo em questão.
 +
#Em todos os ''hosts'' rode o comando <syntaxhighlight lang=bash> ip -6 neighbor show </syntaxhighlight>
 +
##Qual é a funcionalidade desse comando?
 +
##Qual é o significado do conteúdo dessa tabela?
 +
##A tabela mostrada em cada um dos casos é compatível com o diagrama da rede montado?
 +
##Por que, por exemplo, na tabela do '''pc3''' não há uma referência explícita ao '''pc1'''?
 +
 
 +
===Roteiro de atividades: ETAPA 2 - DESAFIO===
 +
 
 +
Acrescentar um terceiro roteador ligado a R1 e R2 (backbone0). Acrescentar uma rede ethernet ligada a este roteador. Configure  a rede com endereços IPv6 colocando pelo menos um PC adicional. Acrescente os roteamentos necessários para que este PC seja pingável a partir de PC1.
  
 
{{Collapse bottom}}
 
{{Collapse bottom}}
Linha 1 763: Linha 1 783:
 
#Fazer um desenho da '''topologia''' do domínio com todos IPs alocados e apresentar os cálculos das subredes conforme restrições abaixo.  
 
#Fazer um desenho da '''topologia''' do domínio com todos IPs alocados e apresentar os cálculos das subredes conforme restrições abaixo.  
 
##Construir as tabelas de roteamento para que a rede fique plenamente operacional. Apresentar as '''tabelas de roteamento na página WEB do projeto''';
 
##Construir as tabelas de roteamento para que a rede fique plenamente operacional. Apresentar as '''tabelas de roteamento na página WEB do projeto''';
##Apresentar o desenho da '''topologia na página WEB do projeto''';
+
##Apresentar o desenho da '''topologia na página WEB do projeto'''. Utilize o modelo ao lado. Observe que o modelo está propositalmente incompleto; [[Image:Modelo_de_diagrama_do_projeto.png|300px]]
 
##Enlaces ponto-a-ponto devem obrigatoriamente ter máscara /30;
 
##Enlaces ponto-a-ponto devem obrigatoriamente ter máscara /30;
 +
##Enlaces multiponto devem obrigatoriamente comportar no mínimo 50 hospedeiros;
 
##Todas as rotas devem ser colocadas no arquivo '''projeto.conf''' do netkit. Apresentar esse arquivo na '''página WEB do projeto''';
 
##Todas as rotas devem ser colocadas no arquivo '''projeto.conf''' do netkit. Apresentar esse arquivo na '''página WEB do projeto''';
 
#Na sub-rede onde existe um cliente (notebook) acrescentar um servidor '''[[Netkit2#Usando_DHCP | DHCP]]''' (máquina adicional) com os seguintes requisitos:
 
#Na sub-rede onde existe um cliente (notebook) acrescentar um servidor '''[[Netkit2#Usando_DHCP | DHCP]]''' (máquina adicional) com os seguintes requisitos:
Linha 1 771: Linha 1 792:
 
#Estabelecer o serviço '''Apache''' no servidor previsto no domínio com os seguintes requisitos:
 
#Estabelecer o serviço '''Apache''' no servidor previsto no domínio com os seguintes requisitos:
 
##uma página WEB com a descrição integral do projeto;
 
##uma página WEB com a descrição integral do projeto;
##uma página WEB com conteúdo de sua preferência com os seguintes requisitos:
+
##uma segunda página WEB com conteúdo de sua preferência com os seguintes requisitos:
 
###a página deve ser em inglês ou espanhol;
 
###a página deve ser em inglês ou espanhol;
 
###texto com no  mínimo 500 palavras;  
 
###texto com no  mínimo 500 palavras;  
Linha 1 778: Linha 1 799:
 
##Todas as páginas devem devem ser mantidas em um diretório de nome ''/home/aluno/lab/shared/WEB''.
 
##Todas as páginas devem devem ser mantidas em um diretório de nome ''/home/aluno/lab/shared/WEB''.
 
##Elaborar um ''shell script'' para automação do serviço WEB. Sítio para treinamento de [http://www.compileonline.com/execute_bash_online.php shell script].  
 
##Elaborar um ''shell script'' para automação do serviço WEB. Sítio para treinamento de [http://www.compileonline.com/execute_bash_online.php shell script].  
#O '''roteamento global''' deve permitir conectividade entre todas as equipes.  
+
#O '''roteamento global''' deve permitir conectividade entre todas as equipes. Para evitar possíveis erros advindos de filtros do Netkit2, execute os seguintes comandos em todos os seus roteadores (copie e cole): <syntaxhighlight lang=bash>
 +
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
 +
echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter
 +
echo 0 > /proc/sys/net/ipv4/conf/eth1/rp_filter
 +
echo 0 > /proc/sys/net/ipv4/conf/eth2/rp_filter
 +
echo 0 > /proc/sys/net/ipv4/conf/eth3/rp_filter </syntaxhighlight>
  
 
* Exemplo de arquivo '''projeto.conf'''.
 
* Exemplo de arquivo '''projeto.conf'''.
Linha 1 818: Linha 1 844:
 
#O shell script será executado na máquina virtual do apache, e portanto deverá ser copiado para o /home/aluno/shared/lab/config_apache.sh
 
#O shell script será executado na máquina virtual do apache, e portanto deverá ser copiado para o /home/aluno/shared/lab/config_apache.sh
 
##Na máquina virtual do apache deve-se tornar o arquivo do script executável e em seguida executá-lo:<syntaxhighlight lang=bash>
 
##Na máquina virtual do apache deve-se tornar o arquivo do script executável e em seguida executá-lo:<syntaxhighlight lang=bash>
chmod +x /hostlab/shared/lab/config_apache.sh
+
chmod +x /hostlab/shared/config_apache.sh
/hostlab/shared/lab/config_apache.sh  
+
/hostlab/shared/config_apache.sh  
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Linha 1 872: Linha 1 898:
 
</syntaxhighlight>onde Y.Y.Y.Y é uma interface do roteador de borda ligado a Rx ou, caso não esteja diretamente ligado a este, deve ser um endereço de roteador vizinho que tenha rota para o roteador de borda.
 
</syntaxhighlight>onde Y.Y.Y.Y é uma interface do roteador de borda ligado a Rx ou, caso não esteja diretamente ligado a este, deve ser um endereço de roteador vizinho que tenha rota para o roteador de borda.
 
{{Collapse bottom}}
 
{{Collapse bottom}}
 +
-->
  
 
==Listas de Exercícios==
 
==Listas de Exercícios==
Linha 2 094: Linha 2 121:
 
##Explique o significado dos campos das colunas 1, 2, 3 e 8 da última linha da tabela do roteador (R4).
 
##Explique o significado dos campos das colunas 1, 2, 3 e 8 da última linha da tabela do roteador (R4).
 
{{Collapse bottom}}
 
{{Collapse bottom}}
 +
-->

Edição das 10h10min de 9 de fevereiro de 2023

MURAL DE AVISOS E OPORTUNIDADES DA ÁREA DE TELECOMUNICAÇÕES


Informações Gerais

Edições

Material de apoio

Applets do Kurose

Vários aplicativos com representação dinâmica de características das redes de computadores.

Transparências utilizadas durante as aulas

Capítulo 1 - Introdução

Capítulo 2 - Camada de Aplicação

Capítulo 2 - Camada de Aplicação - FTP + EMAIL + P2P

Capítulo 3 - Camada de Transporte

Capítulo 4 - Camada de Rede

Slides de Outras Universidades

Curiosidades


Listas de Exercícios

Lista de exercícios 1 - Introdução
  1. Qual é a diferença entre um hospedeiro e um sistema final? Cite os tipos de sistemas finais. Um servidor web é um sistema final?
  2. O que caracteriza um protocolo? Dê um exemplo de um protocolo.
  3. Por que os padrões são importantes para os protocolos?
  4. O que é um programa cliente? O que é um programa servidor? Um programa servidor requisita e recebe serviços de um programa cliente?
  5. Quais são os dois tipos de serviços de transporte que a Internet provê às suas aplicações? Cite algumas características de cada um desses serviços. (pg.38)
  6. Explique o que é e quais são as vantagens de uma rede de comutação de circuitos em relação a uma rede de comutação de pacotes?
  7. O que é uma rede de acesso?
  8. FTTH, HFC e ADSL são usados para acesso residencial. Para cada uma dessas tecnologias de acesso, cite uma faixa de taxas de transmissão e comente se a largura de banda é compartilhada ou dedicada.
  9. Cite tecnologias de acesso residencial disponíveis na grande Florianópolis. Para cada tipo de acesso, apresente a taxa de downstream, a taxa de upstream e o preço mensal anunciados.
  10. Qual é a taxa de transmissão de LANs Ethernet?
  11. Porque dividimos a arquitetura da Internet (e de redes de comutação de pacotes em geral) em camadas? Por que dizemos que uma camada inferior presta um serviço a camada superior?
  12. Quais são as cinco camadas da pilha de protocolo da Internet? Quais as principais responsabilidades de cada uma dessas camadas?
  13. O que significa o processo de encapsulamento e desencapsulamento de pacotes no contexto da rede organizada em camadas?
  14. O que é uma mensagem de camada de aplicação? Um segmento da camada de transporte? Um datagrama da camada de rede? Um quadro de camada de enlace? Qual a relação entre eles?
  15. Que camadas da pilha de protocolo da Internet um roteador implementa? Que camadas um comutador de enlace implementa? Que camadas um sistema final implementa?
  16. Imagine que você queira enviar, com urgência, 40 terabytes de dados de São José a Manaus. Você tem disponível um enlace dedicado de 100 Mbps para a transferência de dados. Você escolheria transferir os dados pelo enlace ou mandar mídias por Sedex 10? Explique.
  17. Para pensar I: um celular tipo smartphone acessa normalmente quantas redes? Quais tecnologias sao usadas? Elas são de comutação de pacotes ou de circuitos?
Lista de exercícios 2 - Camada de Aplicação
  1. Relacione cinco aplicações da Internet não proprietárias e os protocolos da camada de aplicação que elas usam.
  2. Qual é a diferença entre arquitetura de rede e arquitetura de aplicação?
  3. De que modo um mensageiro instantâneo é um híbrido das arquiteturas cliente-servidor e P2P?
  4. Para uma sessão de comunicação entre um par de processos, qual processo é o cliente e qual é o servidor?
  5. Que informação é usada por um processo que está rodando em um hospedeiro para identificar um processo que está rodando em outro hospedeiro?
  6. Porque o HTTP, FTP, SMTP, POP3 e IMAP rodam sobre TCP e não sobre UDP?
  7. Por que se diz que o FTP envia informações de controle “fora da banda”?
  8. Suponha que Aline envie uma mensagem a Eduardo por meio de uma conta de e-mail da web (como o gmail), e que Eduardo acesse seu e-mail por seu servidor utilizando POP3. Descreva como a mensagem vai do hospedeiro Aline até o hospedeiro de Eduardo. Não se esqueça de relacionar a série de protocolos de camada de aplicação usados para movimentar as mensagens entre os hospedeiros.
  9. Em uma aplicação de compartilhamento de arquivos P2P, você concorda com a afirmação: ”não existe nenhuma noção de lados cliente e servidor de uma sessão de comunicação”? Por que sim ou por que não?
  10. Relacione alguns agentes de usuário de aplicação de rede que você utiliza no dia-a-dia.
  11. Considere um site de comércio eletrônico que quer manter um registro de compras para cada um de seus clientes. Descreva como isso pode ser feito com cookies.
  12. Descreva uma aplicação que requeira “não perda de dados” e seja também altamente sensível ao atraso.
  13. Quais informações básicas estão em um cabeçalho do pacote IP?
  14. Um pacote IP pode ser colocado diretamente na rede física? Ele chegará a seu destino?
  15. Os pacotes ECHO request e ECHO reply são de que protocolo? Eles trafegam dentro de qual pacote?
  16. Para pensar II: Quando você usa o uma aplicação tipo whatsapp para conversação você está usando rede de comutação de circuitos ou de pacote?

ADICIONAIS PARTE 2- HTTP

  1. Cite pelo menos dois clientes http.
  2. O que é o servidor Apache?
  3. O protocolo http deve se executar em todos os roteadores do caminho entre cliente e servidor? Explique.
  4. Se um hospedeiro colocar um pacote de aplicação HTTP diretamente na rede física ele chegará a seu destino?
  5. Considere que um cliente acessa uma página HTML de servidor WEB e nesta página existem dois links para dois objetos JPG que residem no mesmo servidor. Quantos comandos GETS no total deveriam ser realizados pelo cliente? Todos eles serão realizados sobre a mesma conexão TCP?
  6. Em uma página HTML pode existir um link para um objeto que esteja armazenado em outro site? O que o browser deve fazer neste caso?
  7. No pacote http de resposta de um servidor normalmente existem duas partes. Quais são elas?
  8. Imagine que uma página html está sendo mostrada para o usuário cliente. Se o usuário pedir para que a página seja atualizada, o browser vai requisitar o objeto novamente? O servidor vai retornar o objeto mesmo que ele não tenha sido alterado?
  9. O que é um cookie? Considere um site de comércio eletrônico que quer manter um registro de compras para cada um de seus clientes. Descreva como isso pode ser feito com cookies.
  10. Qual é a diferença entre HTTP persistente com pipelining e HTTP persistente sem pipelining. Qual dos dois é utilizado pelo HTTP/1.1?
  11. Descreva como o cache Web pode reduzir o atraso na recepção de um objeto desejado. O cachê Web reduzirá o atraso para todos os objetos requisitados por um usuário ou somente para alguns objetos? Por quê?
  12. Um servidor Web, quando recebe uma requisição necessita saber para qual porta deve responder na máquina requisitante? Se positivo, esta porta seria sempre a mesma?
  13. Por que um servidor Web espera na porta TCP número 80 em geral?
  14. O que é um proxy Web server?
  15. Um browser pode fazer cache local? Qual a diferença entre cache local e cache em um servidor proxy?

ADICIONAIS PARTE 3- DNS

  1. Porque o DNS não é centralizado?
  2. O que são consultas recursivas e interativas em uma consulta DNS?
  3. Quais os três tipos de servidores DNS?
  4. Em um hospedeiro normalmente existe pelo menos um servidor DNS configurado. Que servidor deve estar configurado? Onde ele se localiza normalmente?
  5. Quando um servidor local não consegue resolver um endereço IP olhando em seu cache, para quem ele deve encaminhar a consulta?
  6. Um servidor sempre sabe resolver um nome solicitado? Explique.
  7. É possível que um servidor DNS local seja um servidor com autoridade?
  8. O que é um nome canônico e um apelido no contexto de DNS?
  9. O que é e qual o formato de uma RR?
  10. Explique os seguintes tipos de RR: A, NS, CNAME, MX e PTR.
  11. Em um comando ping www.ifsc.edu.br quantas transações no mínimo serão realizadas até o último ECHO REPLY?
  12. Por que um ping normalmente realiza uma consulta PTR?
  13. Faça um esquema mostrando uma consulta de um cliente a um servidor local mostrando uma consulta interativa entre o servidor raiz e recursiva com um servidor de autoridade.
  14. Cite o nome de servidor DNS bastante utilizado.
  15. Quantos servidores raízes temos no mundo? Qual comando permite que possamos "ver" estes servidores em um hospedeiro?
  16. Foi realizado um comando dig www.ifsc.edu.br tendo sido retornado:
    www.ifsc.edu.br. 240 IN A 200.135.190.95
  17. Em seguida foi realizado um dig ifsc.edu.br MX com resposta:
    ;; ANSWER SECTION:
    ifsc.edu.br. 1327 IN MX 15 zimbra.ifsc.edu.br.
    ;; AUTHORITY SECTION:
    ifsc.edu.br. 2082 IN NS ns1.ifsc.edu.br.
    ifsc.edu.br. 2082 IN NS adns1.pop-sc.rnp.br.
    ifsc.edu.br. 2082 IN NS ns2.ifsc.edu.br.
    ifsc.edu.br. 2082 IN NS adns2.pop-sc.rnp.br.
    ;; ADDITIONAL SECTION:
    zimbra.ifsc.edu.br. 78 IN A 200.135.190.2
  18. O que se pode concluir sobre a resolução do nome baseando-se nestas respostas?
Lista de exercícios 3 - Camada de Transporte
  1. Considere uma conexão TCP entre o hospedeiro A e o hospedeiro B. Suponha que os segmentos TCP que trafegam do hospedeiro A para o hospedeiro B tenham número de porta fonte x e número de porta destino y. Quais são os números de porta fonte e do destino para os segmentos que trafegam do hospedeiro B para o hospedeiro A?
  2. Descreva porque um desenvolvedor de aplicação pode escolher rodar uma aplicação sobre UDP em vez de sobre TCP.
  3. O que são os serviços de multiplexação e demultiplexação implementados pela camada de transporte?
  4. Porque se diz que o UDP é um protocolo não orientado para conexão?
  5. Qual o papel das informações de porta origem e destino contidas nos segmentos TCP e UDP?
  6. Porque é dito que o TCP fornece transferência confiável de dados sobre um canal não confiável?
  7. Cite 3 diferenças entre os serviços oferecidos pelo TCP e UDP.
  8. Para que serve um checksum em um segmento TCP ou UDP? Como ele é formado?
  9. Cite um motivo para um protocolo de transmissão confiável adicionar um número de seqüência em cada pacote transmitido. Justifique o uso dessa informação explicando o problema que ocorreria caso ela não fosse usada.
  10. Para que serve um timeout em um protocolo de transmissão confiável?
  11. O que é uma reconhecimento cumulativo?
    Figura 1 -- Captura 1 - Wireshark
  12. Baseado na Figura 1, responda as seguintes perguntas:
    1. Quais os IP fonte e destino?
    2. Qual o protocolo da camada de transporte utilizado?
    3. Quais as portas fonte e destino.
    4. Qual o conteúdo do campo de tamanho (anote o tamanho) e checksum no pacote (datagrama)?
    5. Quantos bits possui o checksum? Como você calculou?
    6. Qual o significado do campo Data: 74657374650a? Qual é a mensagem contida? Como você chegou a essa conclusão?
      Figura 2 -- Captura 2 - Wireshark
  13. Baseado na Figura 2, responda as seguintes perguntas:
    1. Quais os IP fonte e destino?
    2. Qual o protocolo da camada de transporte utilizado?
    3. Quais as portas fonte e destino.
    4. Qual o conteúdo do campo de tamanho (anote o tamanho) no pacote (datagrama)? O tamanho apresentado significa bits ou bytes?
    5. Qual o significado do campo Data: 74657374650a? Qual é a mensagem contida? Como você chegou a essa conclusão?
      Figura 3 -- Captura 3 - Wireshark
  14. Baseado na Figura 3, responda as seguintes perguntas:
    1. Quais os IP fonte e destino?
    2. Qual o protocolo da camada de transporte utilizado?
    3. Quais as portas fonte e destino.
    4. Qual o número de sequência (normalizado pelo Wireshark) de cada segmento de dados transmitido, e qual o significado do número de reconhecimento em cada um deles?
    5. Como foi reconhecido cada segmento enviado?
    6. Qual o significado do conjunto de mensagens de número (No.) 1 à 3? Explique essas 3 mensagens.
    7. Qual o significado do conjunto de mensagens de número (No.) 17 à 19? Explique essas 3 mensagens.
    8. Qual o significado do conjunto de mensagens de número (No.) 6, 11 e 16? Explique essas 3 mensagens.
    9. Qual é o tamanho "médio" de janela de cado um dos hosts?
    10. Qual a utilizade das mensagens com fundo preto?
Lista de exercícios 4 - Camada de Rede
  1. Quais são as principais características de uma rede de datagramas?
  2. Roteadores possuem endereços IP? Quantos endereços IP um roteador possui?
  3. Para que serve o protocolo ICMP?
  4. Para que serve o campo “Time to Live” (sobrevida) em um datagrama IP?
  5. Quantos hosts podem ser endereçados com um bloco IP 200.23.16.0/20? Como podemos montar 8 sub-redes a partir deste bloco de endereços IP?
  6. Um provedor de serviços ISP possui cerca de 2000 clientes cadastrados atualmente. Porém um levantamento realizado recentemente pelo administrador da rede constatou que nunca mais do que 450 clientes estão on-line ao mesmo tempo. Qual o bloco de endereços IP na forma CIDR (a.b.c.d/x) deve ser contratado pelo ISP, considerando o estudo realizado pelo administrador da rede?
  7. Um administrador precisa montar uma rede experimental conforme mostrada na figura. Na sub-rede 1 ele precisará instalar cerca 25 hosts, e nas sub-redes 2 e 3 ele precisará instalar cerca de 12 hosts. O administrador dispõe do bloco de endereços IP 192.168.10.0/24 para ser utilizado no endereçamento da rede experimental. Faça uma proposta para alocação de endereços IP para cada sub-rede (rede 1, 2 e 3), incluindo também as sub-redes relativas aos enlaces ponto-a-ponto (rede AB, AC e BC). Responda ainda:
    1. Qual o endereço identificador de rede de cada sub-rede (1, 2 e 3)?
    2. Qual o a máscara de rede de cada sub-rede (1, 2 e 3)?
    3. Quais os endereços IP que serão atribuídos a cada interface de rede nos enlaces ponto-a-ponto dos roteadores (enlaces relativos as redes AB, AC e BC)CdrEx.png
  8. Suponha que um administrador de rede tenha recebido o bloco de endereços 200.40.8.0/21 e que deseja dividir este bloco em 8 blocos de endereços iguais, de menor tamanho, para ser alocado a 8 sub-redes administradas por ele.
    1. Determine o tamanho total do bloco de endereços.
    2. Determine o tamanho de cada sub-bloco.
    3. Determine o endereço/máscara de rede de cada sub-rede.
  9. Um provedor de acesso a Internet possui o seguinte bloco de endereços IP: 12.17.192.0/18. Os endereços IP de 12.17.192.1 até 12.17.207.255 já estão alocados para clientes deste provedor. Este provedor precisa atender a quatro novos clientes, um deles necessita de rede com pelo menos 1000 endereços de IP válidos e os outros três necessitam de rede com pelo menos 30 IP válidos. Faça uma proposta para alocação de endereços IP para estes clientes. Os endereços reservados para estes novos clientes devem ser alocados a partir da numeração mais baixa disponível. Procure também responder as questões abaixo:
    1. Qual o total de endereços que dispõe o provedor em questão?
    2. Quantos endereços IP já estão utilizados?
    3. Quantos endereços IP este provedor possui livres para alocar aos novos clientes?
    4. Qual o endereço identificador de cada sub-rede dos novos clientes?
    5. Qual o a máscara de rede de cada sub-rede dos novos clientes?
    6. Qual o endereço de broadcast de cada sub-rede dos novos clientes?
    7. Quantos endereços IP ainda sobrarão ao provedor após atender a estes clientes?
  10. Quantas estações uma rede 223.1.10.0/24 suporta?
  11. Uma rede com bloco de IPs 200.23.16.0/20 deseja montar 8 subredes. Mostre como isso é possível e como ficaria os endereços de cada uma dessas subredes.
  12. Um datagrama enviado para uma estação da mesma rede precisa passar por um roteador?
  13. Suponha que entre o hospedeiro de origem A e o hospedeiro de destino B os datagramas estejam limitados a 1500 bytes (incluindo cabeçalho). Admitindo um cabeçalho IP de 20 bytes, quantos datagramas seriam necessários para enviar um arquivo MP3 de 5 milhões de bytes? Explique como você obteve a resposta.
  14. Descreva e detalhe o processo de obtenção de um endereço IP através do protocolo DHCP. ExercicioConfEstaticaZebra.png
  15. Considere a rede apresetanda na Figura, onde todas as sub-redes apresentam máscara de rede /24 (255.255.255.0), e tendo os dados do Host1 e Roteador 4 apresentados no quadro abaixo, responda:
    root@H1:~# ifconfig 
    eth0      Link encap:Ethernet  HWaddr 7a:a6:f4:ca:51:0e  
              inet addr:200.10.1.1  Bcast:200.10.1.255  Mask:255.255.255.0
    
    root@H1:~# route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         200.10.1.254    0.0.0.0         UG    0      0        0 eth0
    200.10.1.0      0.0.0.0         255.255.255.0   U     0      0        0 eth0
    
    root@R4:~# route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    200.10.1.0      200.10.3.1      255.255.255.0   UG    0      0        0 eth0
    200.10.3.0      0.0.0.0         255.255.255.0   U     0      0        0 eth0
    200.10.5.0      0.0.0.0         255.255.255.0   U     0      0        0 eth1
    200.10.6.0      0.0.0.0         255.255.255.0   U     0      0        0 eth2
    200.10.8.0      200.10.6.1      255.255.255.0   UG    0      0        0 eth2
    
    1. Observando a tabela do hospedeiro (H1) é possível dizer quem é seu roteador default?
    2. Se o hospedeiro (H1) tiver um pacote para entregar para o IP 200.10.1.20 ele utilizará entrega direta ou utilizará seu roteador padrão? Explique o significado da entrega direta e indireta (via roteador).
    3. Se o hospedeiro (H1) tiver um pacote para entregar para o IP 200.10.8.1 ele utilizará entrega direta ou utilizará seu roteador padrão?
    4. Se o roteador (R4) receber um pacote cujo IP de destino é 200.10.1.10 para qual roteador ele entregará tal pacote e por qual interface? Será uma entrega direta ou indireta?
    5. Se o roteador (R4) receber um pacote cujo IP de destino é 200.10.6.1 para qual roteador ele entregará tal pacote e por qual interface? Será uma entrega direta ou indireta?
    6. Se o roteador (R4) receber um pacote cujo IP de destino é 200.10.1.10, cuja carga segmento TCP com destino a porta 80, para qual roteador ele entregará tal pacote e por qual interface? Será uma entrega direta ou indireta?
    7. Se o roteador (R4) receber um pacote cujo IP de destino é 122.10.4.7 para qual roteador ele entregará tal pacote e por qual interface? Explique.
    8. Qual comando que você executaria no roteador (R4) para acrescentar uma rota para a rede SN2? Explique seu comando.
    9. Considerando a pergunta anterior, a rota acrescentada garantiria que se você fizer um ping para um host da rede SN2 você obteria sucesso? Explique todas as possibilidades.
    10. Explique o significado dos campos das colunas 1, 2, 3 e 8 da última linha da tabela do roteador (R4).

-->