Mudanças entre as edições de "Curso Técnico Integrado de Telecomunicações - Redes de Computadores (RCO)"
Linha 92: | Linha 92: | ||
− | #Analisando os dados obtidos do seguinte exemplo < | + | #Analisando os dados obtidos do seguinte exemplo <syntaxhighlight lang=bash>ifconfig |
eth0 Link encap:Ethernet Endereço de HW 64:51:06:1a:f3:da | 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 | inet end.: 172.18.18.14 Bcast:172.18.63.255 Masc:255.255.192.0 | ||
Linha 136: | Linha 136: | ||
Consultar as páginas ''man'' do ping para verificar as possibilidades de uso deste aplicativo. | Consultar as páginas ''man'' do ping para verificar as possibilidades de uso deste aplicativo. | ||
− | #Exemplo 1: < | + | #Exemplo 1: <syntaxhighlight lang=bash> |
PING 200.135.37.65 (200.135.37.65) 56(84) bytes of data. | 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=1 ttl=62 time=0.925 ms | ||
Linha 154: | Linha 154: | ||
##máquina de um colega do laboratório; | ##máquina de um colega do laboratório; | ||
##servidor e roteador da rede da escola; | ##servidor e roteador da rede da escola; | ||
− | ##servidores externos: < | + | ##servidores externos: <syntaxhighlight lang=bash> |
www.ifsc.edu.br | www.ifsc.edu.br | ||
www.uol.com.br | www.uol.com.br | ||
Linha 163: | Linha 163: | ||
##-s packetsize | ##-s packetsize | ||
##-t ttl (para um site distante inicie com 1 e vá incrementando, observe as mensagens) | ##-t ttl (para um site distante inicie com 1 e vá incrementando, observe as mensagens) | ||
− | #Observe que também é possível realizar ping em endereços no formato IPv6, por exemplo: < | + | #Observe que também é possível realizar ping em endereços no formato IPv6, por exemplo: <syntaxhighlight lang=bash> ping6 www.sj.ifsc.edu.br </syntaxhighlight> |
#Tente o ping6 para outros sites. | #Tente o ping6 para outros sites. | ||
Linha 171: | Linha 171: | ||
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. | 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. | ||
− | #Exemplo: < | + | #Exemplo: <syntaxhighlight lang=bash> |
sudo traceroute -I 200.135.37.65 | sudo traceroute -I 200.135.37.65 | ||
traceroute to 200.135.37.65 (200.135.37.65), 30 hops max, 60 byte packets | traceroute to 200.135.37.65 (200.135.37.65), 30 hops max, 60 byte packets | ||
Linha 185: | Linha 185: | ||
#Explique as linhas com o caracter *. | #Explique as linhas com o caracter *. | ||
#Fazendo uso das ferramentas desse laboratório, refaça o diagrama da rede do campus apontando claramente os novos endereços IPs associados aos roteadores. | #Fazendo uso das ferramentas desse laboratório, refaça o diagrama da rede do campus apontando claramente os novos endereços IPs associados aos roteadores. | ||
− | #Observe que também é possível realizar traceroute em endereços no formato IPv6, por exemplo: < | + | #Observe que também é possível realizar traceroute em endereços no formato IPv6, por exemplo: <syntaxhighlight lang=bash> sudo traceroute -I6 ipv6.br </syntaxhighlight> |
#Tente o traceroute no IPv6 para outros sites. | #Tente o traceroute no IPv6 para outros sites. | ||
Linha 238: | Linha 238: | ||
#O botão ''Start'' da interface '''eth0''' deve ser selecionado. Na Figura 4, no Wireshark foi selecionada a interface wlan; | #O botão ''Start'' da interface '''eth0''' deve ser selecionado. Na Figura 4, no Wireshark foi selecionada a interface wlan; | ||
#Como nada está acontecendo na rede, a janela apresenta o conteúdo vazio; | #Como nada está acontecendo na rede, a janela apresenta o conteúdo vazio; | ||
− | #Execute um comando ping (endereço na saída da nossa rede - ver aula anterior):< | + | #Execute um comando ping (endereço na saída da nossa rede - ver aula anterior):<syntaxhighlight lang=bash> |
ping 200.237.201.153</syntaxhighlight> | ping 200.237.201.153</syntaxhighlight> | ||
#Ao voltar para a janela do Wireshark, houve a captura de todos os pacotes envolvidos no process; | #Ao voltar para a janela do Wireshark, houve a captura de todos os pacotes envolvidos no process; | ||
Linha 309: | Linha 309: | ||
##Como endereço de destino (DEST) e fonte (FONTE) utilize o último campo do endereço IP de sua máquina e do colega para qual a mensagem se destina. Por exemplo, a máquina do professor possui o IP 192.168.1.1 e, portanto, seu endereço seria 01. | ##Como endereço de destino (DEST) e fonte (FONTE) utilize o último campo do endereço IP de sua máquina e do colega para qual a mensagem se destina. Por exemplo, a máquina do professor possui o IP 192.168.1.1 e, portanto, seu endereço seria 01. | ||
##Um desafio matemático, por exemplo: 2+2. | ##Um desafio matemático, por exemplo: 2+2. | ||
− | #Envie essa mensagem através do comando '''ping''' com a ''flag'' ''pattern''. Um exemplo de mensagem é: < | + | #Envie essa mensagem através do comando '''ping''' com a ''flag'' ''pattern''. Um exemplo de mensagem é: <syntaxhighlight lang=bash> ping -p FFFF02001001322B322B03FFFF 192.168.1.10 </syntaxhighlight> |
##Verifique com Wireshark se a mensagem é para o seu grupo e decifre a mensagem. | ##Verifique com Wireshark se a mensagem é para o seu grupo e decifre a mensagem. | ||
#Ao receber uma ou mais mensagens de colegas no wireshark, interprete-a verificando quem é o emitente e realizando a operação aritmética solicitada. | #Ao receber uma ou mais mensagens de colegas no wireshark, interprete-a verificando quem é o emitente e realizando a operação aritmética solicitada. | ||
Linha 396: | Linha 396: | ||
#* No WireShark, compare o resultado das execuções desses comandos com o resultado anteriormente visto no navegador. Qual a diferença em ambos os casos? | #* No WireShark, compare o resultado das execuções desses comandos com o resultado anteriormente visto no navegador. Qual a diferença em ambos os casos? | ||
#* Identifique os componentes do sistema de comunicação de dados nesse acesso direto (quem é cliente, quem é servidor) | #* Identifique os componentes do sistema de comunicação de dados nesse acesso direto (quem é cliente, quem é servidor) | ||
− | #* Refaça um pedido em que o recurso é inexistente no servidor (ex: página html com nome inexistente, GET /~odilson/RED29004//Nada.html HTTP/1.0). Observe a resposta. Qual o código (número) de resposta recebido? < | + | #* Refaça um pedido em que o recurso é inexistente no servidor (ex: página html com nome inexistente, GET /~odilson/RED29004//Nada.html HTTP/1.0). Observe a resposta. Qual o código (número) de resposta recebido? <syntaxhighlight lang=bash> telnet tele.sj.ifsc.edu.br 80 |
GET /~odilson/RED29004//Nada.html HTTP/1.0 </syntaxhighlight> | GET /~odilson/RED29004//Nada.html HTTP/1.0 </syntaxhighlight> | ||
#* Refaça um pedido para o recurso ''default'' e veja o código de resposta:<syntaxhighlight lang=bash> telnet tele.sj.ifsc.edu.br 80 | #* Refaça um pedido para o recurso ''default'' e veja o código de resposta:<syntaxhighlight lang=bash> telnet tele.sj.ifsc.edu.br 80 | ||
Linha 501: | Linha 501: | ||
===PARTE 1 - Colocando o servidor Apache no ar no Netkit=== | ===PARTE 1 - Colocando o servidor Apache no ar no Netkit=== | ||
− | #Inicialmente vamos colocar um Máquina Virtual (VM) Netkit conectada com uma bridge para que possamos acessá-la de qualquer lugar do laboratório. Utilize o editor de texto Gedit e salve as definições do laboratório abaixo em um arquivo '''/home/aluno/lab.conf''':< | + | #Inicialmente vamos colocar um Máquina Virtual (VM) Netkit conectada com uma bridge para que possamos acessá-la de qualquer lugar do laboratório. Utilize o editor de texto Gedit e salve as definições do laboratório abaixo em um arquivo '''/home/aluno/lab.conf''':<syntaxhighlight lang=bash> |
pc1[type]=generic | pc1[type]=generic | ||
pc1[eth0]=uplink:bridge=eth0:ip=dhcp | pc1[eth0]=uplink:bridge=eth0:ip=dhcp | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | #Rode o '''netKit''' em seu computador. Em um terminal digite: < | + | #Rode o '''netKit''' em seu computador. Em um terminal digite: <syntaxhighlight lang=bash> mkdir .netkit |
netkit2 & </syntaxhighlight> | netkit2 & </syntaxhighlight> | ||
#Caso surja uma mensagem recomendando atualizar o Netkit, faça-o através do menu: '''<General> <Update>'''. Aguarde a finalização do processo. | #Caso surja uma mensagem recomendando atualizar o Netkit, faça-o através do menu: '''<General> <Update>'''. Aguarde a finalização do processo. | ||
Linha 513: | Linha 513: | ||
#Identifique o IP da VM usando o comando '''ifconfig'''. Esse será, doravante, seu '''''endereço_IP'''''. | #Identifique o IP da VM usando o comando '''ifconfig'''. Esse será, doravante, seu '''''endereço_IP'''''. | ||
#*<span style="color: blue;">Dica: para copiar textos para o Netkit, copie normalmente o texto, por exemplo, da Wiki, com o < Ctrl > + < C > e cole clicando sobre a rodinha (''scroll'') do mouse. | #*<span style="color: blue;">Dica: para copiar textos para o Netkit, copie normalmente o texto, por exemplo, da Wiki, com o < Ctrl > + < C > e cole clicando sobre a rodinha (''scroll'') do mouse. | ||
− | #Teste a conectividade entre a máquina virtual e a máquina hospedeira com o comando ping. Na VM execute: < | + | #Teste a conectividade entre a máquina virtual e a máquina hospedeira com o comando ping. Na VM execute: <syntaxhighlight lang=bash> |
ping 192.168.1.1 </syntaxhighlight> | ping 192.168.1.1 </syntaxhighlight> | ||
− | #Coloque o servidor apache em execução. Este servidor escutará na porta 80 por requisições de páginas (objetos HTTP). Execute no terminal da VM: < | + | #Coloque o servidor apache em execução. Este servidor escutará na porta 80 por requisições de páginas (objetos HTTP). Execute no terminal da VM: <syntaxhighlight lang=bash> /etc/init.d/apache2 start </syntaxhighlight> |
#Inicie o Wireshark em sua máquina. | #Inicie o Wireshark em sua máquina. | ||
− | #Abra o Firefox na sua máquina (hospedeira) e coloque como endereço: < | + | #Abra o Firefox na sua máquina (hospedeira) e coloque como endereço: <syntaxhighlight lang=bash> http://endereco_IP </syntaxhighlight> |
#Pronto. Você está acessando a página ''default'' do Apache da VM. | #Pronto. Você está acessando a página ''default'' do Apache da VM. | ||
− | #Você pode verificar o arquivo de definição da página ''default'' na VM com o comando: < | + | #Você pode verificar o arquivo de definição da página ''default'' na VM com o comando: <syntaxhighlight lang=bash> cat /var/www/index.html </syntaxhighlight> |
#Com sua experiência com o Wireshark filtre as mensagens trocadas entre o servidor da VM e seu navegador. | #Com sua experiência com o Wireshark filtre as mensagens trocadas entre o servidor da VM e seu navegador. | ||
##Localize os comandos GET e a resposta do servidor. | ##Localize os comandos GET e a resposta do servidor. | ||
Linha 531: | Linha 531: | ||
Nesta parte do experimento vamos editar um código HTML e disponibilizá-la em um diretório especial por você criado. Observe que vamos editar a página no hospedeiro e salvá-la em um diretório compartilhado entre a máquina hospedeira e a MV. | Nesta parte do experimento vamos editar um código HTML e disponibilizá-la em um diretório especial por você criado. Observe que vamos editar a página no hospedeiro e salvá-la em um diretório compartilhado entre a máquina hospedeira e a MV. | ||
− | #Usando o Gedit, salve o código html abaixo como no arquivo '''/home/aluno/lab/shared/index.html''' da sua máquina hospedeira.< | + | #Usando o Gedit, salve o código html abaixo como no arquivo '''/home/aluno/lab/shared/index.html''' da sua máquina hospedeira.<syntaxhighlight lang=bash> |
<!DOCTYPE html> | <!DOCTYPE html> | ||
<html> | <html> | ||
Linha 542: | Linha 542: | ||
</body> | </body> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | #Crie a adapte para o seu caso um [https://pt.wikipedia.org/wiki/Shell_script Shell Script] com o conteúdo exemplo abaixo. Com o Gedit crie um arquivo e salve como '''/home/aluno/lab/shared/config_apache.sh''' < | + | #Crie a adapte para o seu caso um [https://pt.wikipedia.org/wiki/Shell_script Shell Script] com o conteúdo exemplo abaixo. Com o Gedit crie um arquivo e salve como '''/home/aluno/lab/shared/config_apache.sh''' <syntaxhighlight lang=bash> |
#!/bin/bash | #!/bin/bash | ||
mkdir /var/www/ET | mkdir /var/www/ET | ||
Linha 549: | Linha 549: | ||
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: < | + | #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> |
− | #O shell script será executado na máquina virtual do apache, portanto, abra o terminal da mesma no Netkit e digite: < | + | #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 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | #Agora você deve ser capaz de acessar a página recém criada através do seu navegador no hospedeiro usando o endereço: < | + | #Agora você deve ser capaz de acessar a página recém criada através do seu navegador no hospedeiro usando o endereço: <syntaxhighlight lang=bash> http://endereco_IP/ET </syntaxhighlight> |
#Personalize a página HTML acrescentando novas frases de sua preferência. Para isso repita os passos: 1, 3 e 4. | #Personalize a página HTML acrescentando novas frases de sua preferência. Para isso repita os passos: 1, 3 e 4. | ||
#Avise o professor para que ele mostre no telão sua página através do Epoptes. | #Avise o professor para que ele mostre no telão sua página através do Epoptes. | ||
Linha 579: | Linha 579: | ||
O comando ping pode ser usado tanto com um endereço IP como com um nome de host. Em última instância, ele sempre enviará pacotes para um endereço IP. No caso de ser usado o endereço de host, ele tentará resolver (mapear) este nome em um endereço IP usando um servidor DNS (local). Ele gera uma pergunta para o servidor (ou para os servidores, caso exista mais de um configurado). Esta experiência mostra como verificar os servidores instalados e, através de uma captura de pacote mostra a estrutura dos cabeçalhos DNS. | O comando ping pode ser usado tanto com um endereço IP como com um nome de host. Em última instância, ele sempre enviará pacotes para um endereço IP. No caso de ser usado o endereço de host, ele tentará resolver (mapear) este nome em um endereço IP usando um servidor DNS (local). Ele gera uma pergunta para o servidor (ou para os servidores, caso exista mais de um configurado). Esta experiência mostra como verificar os servidores instalados e, através de uma captura de pacote mostra a estrutura dos cabeçalhos DNS. | ||
− | #Inicialmente consulte e anote quem são os servidores DNS instados na sua máquina. É para estes servidores que serão conduzidas as perguntas DNS. Use a ferramenta nm-tool ou acesso ao arquivo de configuração do sistema:< | + | #Inicialmente consulte e anote quem são os servidores DNS instados na sua máquina. É para estes servidores que serão conduzidas as perguntas DNS. Use a ferramenta nm-tool ou acesso ao arquivo de configuração do sistema:<syntaxhighlight lang=bash> |
cat /etc/resolv.conf</syntaxhighlight> | cat /etc/resolv.conf</syntaxhighlight> | ||
#Prepare o wireshark para capturar pacotes. | #Prepare o wireshark para capturar pacotes. | ||
− | #Execute o ping para um endereço de host conhecido < | + | #Execute o ping para um endereço de host conhecido <syntaxhighlight lang=bash> |
ping www.ifsc.edu.br</syntaxhighlight> | ping www.ifsc.edu.br</syntaxhighlight> | ||
− | #Pare a captura de pacotes no Wireshark e coloque um filtro de display para mostrar apenas mensagens DNS e de ICMP< | + | #Pare a captura de pacotes no Wireshark e coloque um filtro de display para mostrar apenas mensagens DNS e de ICMP<syntaxhighlight lang=bash> |
dns || icmp </syntaxhighlight> | dns || icmp </syntaxhighlight> | ||
#Observe os pacotes capturados. Em particular foque no pacote de pergunta que deve ser similar ao mostrado abaixo e deve estar direcionado a um dos servidores DNS. Nos ''flags'' do header do pacote DNS é possível observar que é um QUERY (pergunta) a ser resolvido de forma recursiva. A pergunta propriamente dita está no campo QUERIES, onde é colocado o nome a ser resolvido e o tipo do registro solicitado (tipo A) que indica resolução de nome. | #Observe os pacotes capturados. Em particular foque no pacote de pergunta que deve ser similar ao mostrado abaixo e deve estar direcionado a um dos servidores DNS. Nos ''flags'' do header do pacote DNS é possível observar que é um QUERY (pergunta) a ser resolvido de forma recursiva. A pergunta propriamente dita está no campo QUERIES, onde é colocado o nome a ser resolvido e o tipo do registro solicitado (tipo A) que indica resolução de nome. | ||
Linha 627: | Linha 627: | ||
# Outra informação útil guardada por servidores DNS é a tradução de endereço IP para nome de domínio. Isso é chamado de tradução reversa (ou DNS reverso). Usando os programas de diagnóstico já vistos, isso pode ser feito assim: <syntaxhighlight lang=bash> | # Outra informação útil guardada por servidores DNS é a tradução de endereço IP para nome de domínio. Isso é chamado de tradução reversa (ou DNS reverso). Usando os programas de diagnóstico já vistos, isso pode ser feito assim: <syntaxhighlight lang=bash> | ||
dig -x 200.135.37.65 | dig -x 200.135.37.65 | ||
− | </syntaxhighlight> ... o ''dig'' tem um resultado um pouco mais carregado que os outros utilitários (''host'' e ''nslookup''), porém neste caso é mais prático. Veja o resultado da consulta logo após a linha '';; ANSWER SECTION:''. Experimente fazer a resolução reversa para cada um dos IP obtidos nas consultas realizadas no primeiro exercício desta atividade. Pode-se também usar a variante do ''dig'' para respostas curtas: < | + | </syntaxhighlight> ... o ''dig'' tem um resultado um pouco mais carregado que os outros utilitários (''host'' e ''nslookup''), porém neste caso é mais prático. Veja o resultado da consulta logo após a linha '';; ANSWER SECTION:''. Experimente fazer a resolução reversa para cada um dos IP obtidos nas consultas realizadas no primeiro exercício desta atividade. Pode-se também usar a variante do ''dig'' para respostas curtas: <syntaxhighlight lang=bash> |
dig -x 200.135.37.65 +short | dig -x 200.135.37.65 +short | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Linha 646: | Linha 646: | ||
host -v -t a www.sj.ifsc.edu.br. j.root-servers.net. | host -v -t a www.sj.ifsc.edu.br. j.root-servers.net. | ||
</syntaxhighlight>... e observe a seção '';; AUTHORITY SECTION:''. Ele contém a listagem de servidores DNS que podem atender sua consulta. | </syntaxhighlight>... e observe a seção '';; AUTHORITY SECTION:''. Ele contém a listagem de servidores DNS que podem atender sua consulta. | ||
− | ## Continue fazendo as consultas aos servidores DNS listados, até conseguir traduzir o nome requisitado. Por exemplo: < | + | ## Continue fazendo as consultas aos servidores DNS listados, até conseguir traduzir o nome requisitado. Por exemplo: <syntaxhighlight lang=bash> |
host -v -t a www.sj.ifsc.edu.br. b.dns.br </syntaxhighlight> | host -v -t a www.sj.ifsc.edu.br. b.dns.br </syntaxhighlight> | ||
## Quantos servidores DNS foram necessários consultar no total? | ## Quantos servidores DNS foram necessários consultar no total? | ||
Linha 652: | Linha 652: | ||
===Algumas consultas AAAA=== | ===Algumas consultas AAAA=== | ||
Vamos expandir um pouco nossos horizontes e fazer algumas consultas envolvendo IPv6. | Vamos expandir um pouco nossos horizontes e fazer algumas consultas envolvendo IPv6. | ||
− | #No terminal de sua máquina faça uma consulta e responda: qual o endereço IPv6 dos hosts? Por exemplo: < | + | #No terminal de sua máquina faça uma consulta e responda: qual o endereço IPv6 dos hosts? Por exemplo: <syntaxhighlight lang=bash> |
dig AAAA google.com | dig AAAA google.com | ||
host -t AAAA google.com </syntaxhighlight> | host -t AAAA google.com </syntaxhighlight> | ||
Linha 660: | Linha 660: | ||
##ipv6.br | ##ipv6.br | ||
##www.microsoft.com | ##www.microsoft.com | ||
− | #Agora vamos fazer a consulta reversa. Qual é o nome de host dos seguintes endereços? Por exemplo: < | + | #Agora vamos fazer a consulta reversa. Qual é o nome de host dos seguintes endereços? Por exemplo: <syntaxhighlight lang=bash> |
dig -x 2001:12ff::10 | dig -x 2001:12ff::10 | ||
dig -x 2001:12ff::10 +short | dig -x 2001:12ff::10 +short | ||
Linha 693: | Linha 693: | ||
===Exemplos de arquivos de um ''Second Level Domain'' fictício=== | ===Exemplos de arquivos de um ''Second Level Domain'' fictício=== | ||
*Exemplo de arquivos de configuração de um servidor [https://www.isc.org/downloads/bind/ BIND] | *Exemplo de arquivos de configuração de um servidor [https://www.isc.org/downloads/bind/ BIND] | ||
− | /etc/bind/db.redes < | + | /etc/bind/db.redes <syntaxhighlight lang=bash> |
$TTL 86400 | $TTL 86400 | ||
@ IN SOA ns.redes.edu.br. root ( | @ IN SOA ns.redes.edu.br. root ( | ||
Linha 715: | Linha 715: | ||
mail A 192.168.1.109 </syntaxhighlight> | mail A 192.168.1.109 </syntaxhighlight> | ||
− | /etc/bind/db.2.168.192 (Zona reversa) < | + | /etc/bind/db.2.168.192 (Zona reversa) <syntaxhighlight lang=bash> |
$TTL 86400 | $TTL 86400 | ||
@ IN SOA ns.redes.edu.br. root ( | @ IN SOA ns.redes.edu.br. root ( | ||
Linha 748: | Linha 748: | ||
#*Cada equipe deve identificar os IPs ('''IP_DEST''') das máquinas de seus pares. | #*Cada equipe deve identificar os IPs ('''IP_DEST''') das máquinas de seus pares. | ||
#Cada equipe deve abrir uma Janela de terminal. | #Cada equipe deve abrir uma Janela de terminal. | ||
− | #Cada equipe deve preparar o '''Wireshark''', interfaces '''any''', para escuta das portas no protocolo UDP usando um filtro:< | + | #Cada equipe deve preparar o '''Wireshark''', interfaces '''any''', para escuta das portas no protocolo UDP usando um filtro:<syntaxhighlight lang=bash> |
udp.port==5000</syntaxhighlight> | udp.port==5000</syntaxhighlight> | ||
− | #A equipe da escuta na porta 5000 executa no terminal: < | + | #A equipe da escuta na porta 5000 executa no terminal: <syntaxhighlight lang=bash> |
netcat -u -l -p 5000 </syntaxhighlight> | netcat -u -l -p 5000 </syntaxhighlight> | ||
− | #A equipe que irá transmitir para a porta 5000 executa no terminal: < | + | #A equipe que irá transmitir para a porta 5000 executa no terminal: <syntaxhighlight lang=bash> |
netcat -u IP_DEST 5000 </syntaxhighlight> | netcat -u IP_DEST 5000 </syntaxhighlight> | ||
#A equipe transmissora de mensagem escreve no terminal e transmite uma mensagem de até 20 caracteres. | #A equipe transmissora de mensagem escreve no terminal e transmite uma mensagem de até 20 caracteres. | ||
Linha 794: | Linha 794: | ||
==Configuração do Laboratório== | ==Configuração do Laboratório== | ||
O roteiro será executado sobre máquinas virtuais, através do uso do [[Netkit2 | Netkit2]]. Copie o texto abaixo e crie um arquivo com nome TCP.conf. Salve-o na pasta /home/aluno. | O roteiro será executado sobre máquinas virtuais, através do uso do [[Netkit2 | Netkit2]]. Copie o texto abaixo e crie um arquivo com nome TCP.conf. Salve-o na pasta /home/aluno. | ||
− | < | + | <syntaxhighlight lang=bash> |
PC1[type]=generic | PC1[type]=generic | ||
PC2[type]=generic | PC2[type]=generic | ||
Linha 807: | Linha 807: | ||
===Verificando o estabelecimento, troca de dados e finalização da conexão=== | ===Verificando o estabelecimento, troca de dados e finalização da conexão=== | ||
− | #Executar a configuração do laboratório no Netkit. Abra o NetKit2 e abra o arquivo de configuração: < | + | #Executar a configuração do laboratório no Netkit. Abra o NetKit2 e abra o arquivo de configuração: <syntaxhighlight lang=bash> |
File > Load and Run </syntaxhighlight> | File > Load and Run </syntaxhighlight> | ||
#*Perceba que abrirá uma janela com três abas inferiores, representando três máquina virtuais criadas pelo Netkit, denominadas: PC1, PC2 e PC3. Cada uma dessas abas é o terminal de configuração da respectiva máquina virtual. | #*Perceba que abrirá uma janela com três abas inferiores, representando três máquina virtuais criadas pelo Netkit, denominadas: PC1, PC2 e PC3. Cada uma dessas abas é o terminal de configuração da respectiva máquina virtual. | ||
− | #Executar no PC2 um servidor TCP aguardando na porta 5555 na forma: < | + | #Executar no PC2 um servidor TCP aguardando na porta 5555 na forma: <syntaxhighlight lang=bash> netcat -l 5555 </syntaxhighlight> |
#*Obs.: para copiar texto para as máquinas do NetKit, pode-se copiar normalmente o texto e em seguida, no terminal do NetKit apropriado, clique na "rodinha" do mouse. | #*Obs.: para copiar texto para as máquinas do NetKit, pode-se copiar normalmente o texto e em seguida, no terminal do NetKit apropriado, clique na "rodinha" do mouse. | ||
#*Em uma comunicação TCP um processo é servidor (aguarda pedido de conexão) e um processo é o cliente, que gera um pedido de conexão | #*Em uma comunicação TCP um processo é servidor (aguarda pedido de conexão) e um processo é o cliente, que gera um pedido de conexão | ||
− | #Executar no PC3 o tcpdump com foco na porta tcp 5555 e para salvar pacotes em arquivo: < | + | #Executar no PC3 o tcpdump com foco na porta tcp 5555 e para salvar pacotes em arquivo: <syntaxhighlight lang=bash> tcpdump -i eth0 tcp port 5555 -s 1024 -U -w /hostlab/shared/pc3.cap </syntaxhighlight> |
#*Obs: para copiar algum texto para uma das máquinas virtuais do Netkit2, utilize o seguinte procedimento: 1. Copie o texto, 2. No terminal da máquina desejada clique na rodinha do mouse. | #*Obs: para copiar algum texto para uma das máquinas virtuais do Netkit2, utilize o seguinte procedimento: 1. Copie o texto, 2. No terminal da máquina desejada clique na rodinha do mouse. | ||
− | #Executar no PC1 um cliente TCP que solicita uma conexão ao servidor: < | + | #Executar no PC1 um cliente TCP que solicita uma conexão ao servidor: <syntaxhighlight lang=bash> netcat 10.0.0.2 5555 </syntaxhighlight> |
#Enviar uma pequena mensagem de 5 caracteres, e no final teclar ENTER e depois CTRL-D | #Enviar uma pequena mensagem de 5 caracteres, e no final teclar ENTER e depois CTRL-D | ||
#*O CTRL-D encerra a conexão no netcat | #*O CTRL-D encerra a conexão no netcat | ||
Linha 855: | Linha 855: | ||
==Configuração do Laboratório== | ==Configuração do Laboratório== | ||
O roteiro será executado sobre máquinas virtuais, através do uso do [[Netkit2 | Netkit2]]. Copie o texto abaixo, abra o editor Gedit, cole o texto e salve o arquivo em /home/aluno/TCP.conf. | O roteiro será executado sobre máquinas virtuais, através do uso do [[Netkit2 | Netkit2]]. Copie o texto abaixo, abra o editor Gedit, cole o texto e salve o arquivo em /home/aluno/TCP.conf. | ||
− | < | + | <syntaxhighlight lang=bash> |
PC1[type]=generic | PC1[type]=generic | ||
PC2[type]=generic | PC2[type]=generic | ||
Linha 867: | Linha 867: | ||
===PARTE 1 - Transmissão sem erros: Verificação de Número de Sequência, Reconhecimentos e Controle de Fluxo=== | ===PARTE 1 - Transmissão sem erros: Verificação de Número de Sequência, Reconhecimentos e Controle de Fluxo=== | ||
− | #Executar a configuração do laboratório no Netkit. Abra o NetKit2 e abra o arquivo de configuração: < | + | #Executar a configuração do laboratório no Netkit. Abra o NetKit2 e abra o arquivo de configuração: <syntaxhighlight lang=bash> |
File > Load and Run </syntaxhighlight> | File > Load and Run </syntaxhighlight> | ||
#*Perceba que abrirá uma janela com três abas inferiores, representando três máquina virtuais criadas pelo Netkit, denominadas: PC1, PC2 e PC3. Cada uma dessas abas é o terminal de configuração da respectiva máquina virtual. | #*Perceba que abrirá uma janela com três abas inferiores, representando três máquina virtuais criadas pelo Netkit, denominadas: PC1, PC2 e PC3. Cada uma dessas abas é o terminal de configuração da respectiva máquina virtual. | ||
− | #Utilize o editor de texto '''gedit''' da máquina real, inclua o texto abaixo, e salve como '''/home/aluno/lab/shared/arq.tx''' < | + | #Utilize o editor de texto '''gedit''' da máquina real, inclua o texto abaixo, e salve como '''/home/aluno/lab/shared/arq.tx''' <syntaxhighlight lang=bash> |
ABCDEFGHIJKLMNOPQRSTUVXZW1234 </syntaxhighlight> | ABCDEFGHIJKLMNOPQRSTUVXZW1234 </syntaxhighlight> | ||
− | #Execute o tcpdump no PC3 < | + | #Execute o tcpdump no PC3 <syntaxhighlight lang=bash> |
tcpdump -i eth0 tcp port 5555 -s 1024 -U -w /hostlab/shared/pc3.cap </syntaxhighlight> | tcpdump -i eth0 tcp port 5555 -s 1024 -U -w /hostlab/shared/pc3.cap </syntaxhighlight> | ||
− | #Execute o processo servidor no PC2 e prepare o mesmo para limitar a sua capacidade de recepção em cerca de 20 bytes (tamanho do buffer). Isto permitirá ver a quebra do arquivo de 30 bytes em alguns segmentos TCP.< | + | #Execute o processo servidor no PC2 e prepare o mesmo para limitar a sua capacidade de recepção em cerca de 20 bytes (tamanho do buffer). Isto permitirá ver a quebra do arquivo de 30 bytes em alguns segmentos TCP.<syntaxhighlight lang=bash> |
sysctl -w net.ipv4.tcp_rmem='20 20 20' | sysctl -w net.ipv4.tcp_rmem='20 20 20' | ||
netcat -l 5555 > arq.rx </syntaxhighlight> | netcat -l 5555 > arq.rx </syntaxhighlight> | ||
− | #Envie o arquivo arq.tx a partir do PC1 < | + | #Envie o arquivo arq.tx a partir do PC1 <syntaxhighlight lang=bash> |
netcat 10.0.0.2 5555 < /hostlab/shared/arq.tx </syntaxhighlight> | netcat 10.0.0.2 5555 < /hostlab/shared/arq.tx </syntaxhighlight> | ||
#No PC3 faça CTRL-C, para parar a captura de pacotes. | #No PC3 faça CTRL-C, para parar a captura de pacotes. | ||
Linha 893: | Linha 893: | ||
===PARTE 2 - Transmissão com erros: retransmissões=== | ===PARTE 2 - Transmissão com erros: retransmissões=== | ||
− | #Repetir todo a parte 1 mas substituir o item 4 por: < | + | #Repetir todo a parte 1 mas substituir o item 4 por: <syntaxhighlight lang=bash> |
sysctl -w net.ipv4.tcp_rmem='20 20 20' | sysctl -w net.ipv4.tcp_rmem='20 20 20' | ||
tc qdisc add dev eth0 root netem loss 50% | tc qdisc add dev eth0 root netem loss 50% | ||
Linha 912: | Linha 912: | ||
*No experimento, o arquivo de um aluno será transmitido para outro e vice-versa. | *No experimento, o arquivo de um aluno será transmitido para outro e vice-versa. | ||
− | #Em um terminal, crie um diretório de trabalho e entre no mesmo < | + | #Em um terminal, crie um diretório de trabalho e entre no mesmo <syntaxhighlight lang=bash> |
mkdir teste | mkdir teste | ||
cd teste </syntaxhighlight> | cd teste </syntaxhighlight> | ||
#Com o '''gedit''' construa um arquivo de cerca de 2000 bytes. Coloque neste arquivo o seu poema ou letra de canção preferida. Salve o arquivo com nome '''/home/aluno/teste/arq.tx'''. | #Com o '''gedit''' construa um arquivo de cerca de 2000 bytes. Coloque neste arquivo o seu poema ou letra de canção preferida. Salve o arquivo com nome '''/home/aluno/teste/arq.tx'''. | ||
#Escolha um colega para transferir o arquivo. Negocie quem será o servidor. | #Escolha um colega para transferir o arquivo. Negocie quem será o servidor. | ||
− | #O servidor deve fazer < | + | #O servidor deve fazer <syntaxhighlight lang=bash> |
netcat -l 5555 < arq.tx > arq.rx </syntaxhighlight> | netcat -l 5555 < arq.tx > arq.rx </syntaxhighlight> | ||
#*O arq.rx conterá os dados recebidos. | #*O arq.rx conterá os dados recebidos. | ||
− | #O cliente deve fazer, <span style="color: red;">lembre-se de adequar o IP_SERVIDOR< | + | #O cliente deve fazer, <span style="color: red;">lembre-se de adequar o IP_SERVIDOR<syntaxhighlight lang=bash> |
netcat IP_SERVIDOR 5555 < arq.tx > arq.rx </syntaxhighlight> | netcat IP_SERVIDOR 5555 < arq.tx > arq.rx </syntaxhighlight> | ||
#Abra o arquivo recebido do colega (arq.rx) com o '''gedit''' e confira o conteúdo. | #Abra o arquivo recebido do colega (arq.rx) com o '''gedit''' e confira o conteúdo. | ||
Linha 944: | Linha 944: | ||
[[Arquivo:TCP_Rede_Controle_de_Fluxo.png |thumb | 200px| Figura 1 - Rede ara testes]] | [[Arquivo:TCP_Rede_Controle_de_Fluxo.png |thumb | 200px| Figura 1 - Rede ara testes]] | ||
− | #Copie o texto abaixo e crie um arquivo com o '''Gedit''', salve-o como /home/aluno/TCP.conf.< | + | #Copie o texto abaixo e crie um arquivo com o '''Gedit''', salve-o como /home/aluno/TCP.conf.<syntaxhighlight lang=bash> |
# Definição das máquinas | # Definição das máquinas | ||
R1[type]=router | R1[type]=router | ||
Linha 965: | Linha 965: | ||
PC3[eth0]=lan1:ip=10.0.1.3/24:rate=10000 </syntaxhighlight> | PC3[eth0]=lan1:ip=10.0.1.3/24:rate=10000 </syntaxhighlight> | ||
#Execute o NetKit2. | #Execute o NetKit2. | ||
− | #Carregue o arquivo de configuração: < | + | #Carregue o arquivo de configuração: <syntaxhighlight lang=bash> |
File > Load and Run </syntaxhighlight> | File > Load and Run </syntaxhighlight> | ||
#*Perceba que abrirá uma janela com quatro abas inferiores, representando um roteador e três máquina virtuais criadas pelo Netkit, denominadas: R1, PC1, PC2 e PC3. Cada uma dessas abas é o terminal de configuração do respectivo equipamento. | #*Perceba que abrirá uma janela com quatro abas inferiores, representando um roteador e três máquina virtuais criadas pelo Netkit, denominadas: R1, PC1, PC2 e PC3. Cada uma dessas abas é o terminal de configuração do respectivo equipamento. | ||
#*Ao clicar no menu '''File - Graph''', pode-se ter uma visão da rede a ser simulada e conferir se é equivalente ao diagrama proposto. | #*Ao clicar no menu '''File - Graph''', pode-se ter uma visão da rede a ser simulada e conferir se é equivalente ao diagrama proposto. | ||
− | #Execute no PC3 o tcpdump para salvar a troca de dados entre o PC1 e o PC2 num arquivo: < | + | #Execute no PC3 o tcpdump para salvar a troca de dados entre o PC1 e o PC2 num arquivo: <syntaxhighlight lang=bash> |
tcpdump -i eth0 -w /hostlab/shared/pc3.cap </syntaxhighlight> | tcpdump -i eth0 -w /hostlab/shared/pc3.cap </syntaxhighlight> | ||
#*Para copiar comando para os terminais das máquinas virtuais: copie o texto desejado, no Netkit selecione o terminal da máquina desejada e clique sobre a "rodinha" do mouse que o texto será colado. | #*Para copiar comando para os terminais das máquinas virtuais: copie o texto desejado, no Netkit selecione o terminal da máquina desejada e clique sobre a "rodinha" do mouse que o texto será colado. | ||
− | #No PC1 (servidor) execute: < | + | #No PC1 (servidor) execute: <syntaxhighlight lang=bash> |
iperf -s -p 2000 & iperf -s -p 2001 & iperf -s -p 2002 & </syntaxhighlight> | iperf -s -p 2000 & iperf -s -p 2001 & iperf -s -p 2002 & </syntaxhighlight> | ||
− | #No PC2 (cliente) execute (copie a três linhas e cole no terminal adequado e em seguida tecle <Enter>): < | + | #No PC2 (cliente) execute (copie a três linhas e cole no terminal adequado e em seguida tecle <Enter>): <syntaxhighlight lang=bash> |
iperf -c 10.0.0.1 -f m -i 1 -t 90 -p 2000 -l 1300 & \ | iperf -c 10.0.0.1 -f m -i 1 -t 90 -p 2000 -l 1300 & \ | ||
(sleep 20; iperf -c 10.0.0.1 -f m -i 1 -t 70 -p 2001 -l 1300) & \ | (sleep 20; iperf -c 10.0.0.1 -f m -i 1 -t 70 -p 2001 -l 1300) & \ | ||
Linha 981: | Linha 981: | ||
#Pare os processos nos três PCs utilizando CTRL-C. | #Pare os processos nos três PCs utilizando CTRL-C. | ||
#Abra o Wireshark. | #Abra o Wireshark. | ||
− | #Abra o arquivo < | + | #Abra o arquivo <syntaxhighlight lang=bash> |
File > Open > /home/aluno/lab/shared/pc3.cap </syntaxhighlight> | File > Open > /home/aluno/lab/shared/pc3.cap </syntaxhighlight> | ||
#No wireshark acesse '''Statistics''' >> '''IO Graph''' e, na tela que abrir, ajuste TODOS os parâmetros para obter um gráfico similar ao apresentado na Figura 2. | #No wireshark acesse '''Statistics''' >> '''IO Graph''' e, na tela que abrir, ajuste TODOS os parâmetros para obter um gráfico similar ao apresentado na Figura 2. | ||
Linha 998: | Linha 998: | ||
=====Incluindo UDP===== | =====Incluindo UDP===== | ||
Agora vamos dificultar a vida do TCP incluindo um tráfego UDP. O gráfico gerado deverá apresentar a competição pelo meio de transmissão entre os diversos fluxos de dados. | Agora vamos dificultar a vida do TCP incluindo um tráfego UDP. O gráfico gerado deverá apresentar a competição pelo meio de transmissão entre os diversos fluxos de dados. | ||
− | #Deslique o NetKit2, para limpar todos os processos e ''buffers'': < | + | #Deslique o NetKit2, para limpar todos os processos e ''buffers'': <syntaxhighlight lang=bash> |
File > Quit </syntaxhighlight> | File > Quit </syntaxhighlight> | ||
− | #Copie o texto abaixo e crie um arquivo, salve-o como /home/aluno/TCPxUDP.conf: < | + | #Copie o texto abaixo e crie um arquivo, salve-o como /home/aluno/TCPxUDP.conf: <syntaxhighlight lang=bash> |
# Definição das máquinas | # Definição das máquinas | ||
R1[type]=router | R1[type]=router | ||
Linha 1 024: | Linha 1 024: | ||
PC4[eth0]=lan1:ip=10.0.1.4/24:rate=10000 </syntaxhighlight> | PC4[eth0]=lan1:ip=10.0.1.4/24:rate=10000 </syntaxhighlight> | ||
#Execute o NetKit2 e carregue o arquivo de configuração. | #Execute o NetKit2 e carregue o arquivo de configuração. | ||
− | #No PC4 execute: < | + | #No PC4 execute: <syntaxhighlight lang=bash> |
tcpdump -i eth0 -w /hostlab/shared/pc4.cap </syntaxhighlight> | tcpdump -i eth0 -w /hostlab/shared/pc4.cap </syntaxhighlight> | ||
− | #No PC1 execute: < | + | #No PC1 execute: <syntaxhighlight lang=bash> |
iperf -s -u -p 2000 & iperf -s -p 2001 & </syntaxhighlight> | iperf -s -u -p 2000 & iperf -s -p 2001 & </syntaxhighlight> | ||
#A próxima etapa deve ser executada "simultaneamente" nos PC2 e PC3. | #A próxima etapa deve ser executada "simultaneamente" nos PC2 e PC3. | ||
− | ##Para isso copie o texto abaixo e cole no terminal do PC2, ainda NÃO tecle <Enter>: < | + | ##Para isso copie o texto abaixo e cole no terminal do PC2, ainda NÃO tecle <Enter>: <syntaxhighlight lang=bash> |
iperf -u -c 10.0.0.1 -f m -i 1 -t 60 -p 2000 -l 1300 -b 10000000 </syntaxhighlight> | iperf -u -c 10.0.0.1 -f m -i 1 -t 60 -p 2000 -l 1300 -b 10000000 </syntaxhighlight> | ||
− | ##Copie o texto abaixo e cole no terminal do PC3, ainda NÃO tecle <Enter>: < | + | ##Copie o texto abaixo e cole no terminal do PC3, ainda NÃO tecle <Enter>: <syntaxhighlight lang=bash> |
iperf -c 10.0.0.1 -f m -i 1 -t 90 -p 2001 -l 1300 </syntaxhighlight> | iperf -c 10.0.0.1 -f m -i 1 -t 90 -p 2001 -l 1300 </syntaxhighlight> | ||
##Tecle <Enter> no PC3 e PC2, NESSA ORDEM, "simultaneamente". | ##Tecle <Enter> no PC3 e PC2, NESSA ORDEM, "simultaneamente". | ||
Linha 1 051: | Linha 1 051: | ||
==== Experimento 1 ==== | ==== Experimento 1 ==== | ||
<span style="color: red;">Antes de qualquer experimento deve-se desabilitar algumas funcionalidades do kernel do LINUX, para que os experimentos reflitam a teoria. Caso sua interface de rede não seja a '''eth0''' adapte o comando, caso reiniciar a máquina repita-o:</span> | <span style="color: red;">Antes de qualquer experimento deve-se desabilitar algumas funcionalidades do kernel do LINUX, para que os experimentos reflitam a teoria. Caso sua interface de rede não seja a '''eth0''' adapte o comando, caso reiniciar a máquina repita-o:</span> | ||
− | < | + | <syntaxhighlight lang=bash>sudo ethtool --offload eth0 gso off tso off sg off gro off </syntaxhighlight> |
O que aconteceria se um arquivo fosse transferido de um computador a outro com ambos protocolos? | O que aconteceria se um arquivo fosse transferido de um computador a outro com ambos protocolos? | ||
Linha 1 061: | Linha 1 061: | ||
# Escolha um colega para fazer o experimento em que o arquivo será transferido de um computador para o outro. NÃO pode ser na própria máquina. Um será o '''receptor''' e outro o '''transmissor'''. | # Escolha um colega para fazer o experimento em que o arquivo será transferido de um computador para o outro. NÃO pode ser na própria máquina. Um será o '''receptor''' e outro o '''transmissor'''. | ||
=====A primeira transferência será feita usando o protocolo TCP da seguinte forma===== | =====A primeira transferência será feita usando o protocolo TCP da seguinte forma===== | ||
− | #Execute o WireShark e deixe-o capturando pacotes '''somente''' durante a transferência do arquivo. Como o o comportamento padrão do wireshark é redefinir o número de sequência para sempre iniciar em um e isso pode atrapalhar nossos experimentos, vamos '''desabilitar/desativar''' essa funcionalidade: < | + | #Execute o WireShark e deixe-o capturando pacotes '''somente''' durante a transferência do arquivo. Como o o comportamento padrão do wireshark é redefinir o número de sequência para sempre iniciar em um e isso pode atrapalhar nossos experimentos, vamos '''desabilitar/desativar''' essa funcionalidade: <syntaxhighlight lang=bash> |
Edit >> Preferences >> Protocols >> TCP >> Relative sequence numbers </syntaxhighlight> | Edit >> Preferences >> Protocols >> TCP >> Relative sequence numbers </syntaxhighlight> | ||
#No computador '''receptor''' execute o '''netcat''' ('''nc''') (utilize '''man nc''' para saber os detalhes das ''flags'' utilizadas) que abrirá uma conexão TCP na porta, por exemplo, 5555 e salvará os dados transferidos em '''arquivo''': <syntaxhighlight lang=bash> | #No computador '''receptor''' execute o '''netcat''' ('''nc''') (utilize '''man nc''' para saber os detalhes das ''flags'' utilizadas) que abrirá uma conexão TCP na porta, por exemplo, 5555 e salvará os dados transferidos em '''arquivo''': <syntaxhighlight lang=bash> | ||
Linha 1 070: | Linha 1 070: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
#Quando completar a transferência, pare o Wireshark. | #Quando completar a transferência, pare o Wireshark. | ||
− | #Verifique o tamanho do arquivo recebido. Ele é igual ao arquivo original? E quanto tempo levou para transmiti-lo? No terminal digite: < | + | #Verifique o tamanho do arquivo recebido. Ele é igual ao arquivo original? E quanto tempo levou para transmiti-lo? No terminal digite: <syntaxhighlight lang=bash> |
ls -l </syntaxhighlight> | ls -l </syntaxhighlight> | ||
#Analisando a captura de pacotes do WireShark responda: | #Analisando a captura de pacotes do WireShark responda: | ||
Linha 1 091: | Linha 1 091: | ||
wget http://tele.sj.ifsc.edu.br/~odilson/RED29004/transmissor | wget http://tele.sj.ifsc.edu.br/~odilson/RED29004/transmissor | ||
chmod +x transmissor </syntaxhighlight> | chmod +x transmissor </syntaxhighlight> | ||
− | #Inicie a transferência do arquivo ('''adeque o ip_do_receptor para o número IP do colega'''): < | + | #Inicie a transferência do arquivo ('''adeque o ip_do_receptor para o número IP do colega'''): <syntaxhighlight lang=bash> |
./transmissor ip_do_receptor 5555 < jogo.exe | ./transmissor ip_do_receptor 5555 < jogo.exe | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Linha 1 157: | Linha 1 157: | ||
Network >> Start | Network >> Start | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | #Observar os endereços de hardware (ou MAC) e IP de cada dispositivo na rede. < | + | #Observar os endereços de hardware (ou MAC) e IP de cada dispositivo na rede. <syntaxhighlight lang=bash> |
ifconfig </syntaxhighlight> | ifconfig </syntaxhighlight> | ||
#Observar e interpretar a tabela de roteamento nos hospedeiros pc1 e pc4. Identificar os default gateways em cada pc.<syntaxhighlight lang=bash> | #Observar e interpretar a tabela de roteamento nos hospedeiros pc1 e pc4. Identificar os default gateways em cada pc.<syntaxhighlight lang=bash> | ||
Linha 1 172: | Linha 1 172: | ||
#Observar e "provar" que pacotes indo de PC1 para PC4 são encaminhados ao roteador e, em seguida, entregues ao destino, ou seja, entrega indireta. | #Observar e "provar" que pacotes indo de PC1 para PC4 são encaminhados ao roteador e, em seguida, entregues ao destino, ou seja, entrega indireta. | ||
#*Use o ping, tcpdump e seu diagrama de rede como apoio. | #*Use o ping, tcpdump e seu diagrama de rede como apoio. | ||
− | #*Coloque o tcpdump capturando e mostrando pacotes em todas as interfaces do roteador (R1).< | + | #*Coloque o tcpdump capturando e mostrando pacotes em todas as interfaces do roteador (R1).<syntaxhighlight lang=bash> |
tshark -i eth0 -Tfields -e eth.addr -e ip.addr</syntaxhighlight> | tshark -i eth0 -Tfields -e eth.addr -e ip.addr</syntaxhighlight> | ||
#*Num primeiro momento em R1:<syntaxhighlight lang=bash> | #*Num primeiro momento em R1:<syntaxhighlight lang=bash> | ||
Linha 1 222: | Linha 1 222: | ||
## SN7 : 200.10.7.0/24 | ## SN7 : 200.10.7.0/24 | ||
## SN8 : 200.10.8.0/24 | ## SN8 : 200.10.8.0/24 | ||
− | #Abaixo o arquivo de configuração para o NetKit. Copie e salve como '''/home/aluno/roteamento.conf'''.< | + | #Abaixo o arquivo de configuração para o NetKit. Copie e salve como '''/home/aluno/roteamento.conf'''.<syntaxhighlight lang=bash> |
H1[type]=generic | H1[type]=generic | ||
Linha 1 251: | Linha 1 251: | ||
##O ping entre interfaces/equipamentos de sub-redes distintas não funcionam, por quê? | ##O ping entre interfaces/equipamentos de sub-redes distintas não funcionam, por quê? | ||
#Usando como apoio os comandos de inserção de rota insira as rotas default em H1 e H2: | #Usando como apoio os comandos de inserção de rota insira as rotas default em H1 e H2: | ||
− | ##H1: < | + | ##H1: <syntaxhighlight lang=bash> route add default gw 200.10.1.254 </syntaxhighlight> |
− | ##H2: < | + | ##H2: <syntaxhighlight lang=bash> route add default gw 200.10.8.254 </syntaxhighlight> |
#Habilitar o roteamento e instalar rotas em cada roteador para que pacotes vindos de H1 para H2 passem por R1, R3 e R2. O retorno deve ser via R2 e R1. | #Habilitar o roteamento e instalar rotas em cada roteador para que pacotes vindos de H1 para H2 passem por R1, R3 e R2. O retorno deve ser via R2 e R1. | ||
− | ##R1: < | + | ##R1: <syntaxhighlight lang=bash> |
echo 1 > /proc/sys/net/ipv4/ip_forward | echo 1 > /proc/sys/net/ipv4/ip_forward | ||
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter | echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter | ||
Linha 1 261: | Linha 1 261: | ||
echo 0 > /proc/sys/net/ipv4/conf/eth2/rp_filter | echo 0 > /proc/sys/net/ipv4/conf/eth2/rp_filter | ||
route add -net 200.10.8.0/24 gw 200.10.2.2 </syntaxhighlight> | route add -net 200.10.8.0/24 gw 200.10.2.2 </syntaxhighlight> | ||
− | ##R2: < | + | ##R2: <syntaxhighlight lang=bash> |
echo 1 > /proc/sys/net/ipv4/ip_forward | echo 1 > /proc/sys/net/ipv4/ip_forward | ||
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter | echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter | ||
Linha 1 268: | Linha 1 268: | ||
echo 0 > /proc/sys/net/ipv4/conf/eth2/rp_filter | echo 0 > /proc/sys/net/ipv4/conf/eth2/rp_filter | ||
route add -net 200.10.1.0/24 gw 200.10.4.1 </syntaxhighlight> | route add -net 200.10.1.0/24 gw 200.10.4.1 </syntaxhighlight> | ||
− | ##R3: < | + | ##R3: <syntaxhighlight lang=bash> |
echo 1 > /proc/sys/net/ipv4/ip_forward | echo 1 > /proc/sys/net/ipv4/ip_forward | ||
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter | echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter | ||
Linha 1 372: | Linha 1 372: | ||
##Demostre para o professor o perfeito funcionamento de sua rede. | ##Demostre para o professor o perfeito funcionamento de sua rede. | ||
*O arquivo de configuração do Netkit abaixo, é a definição para o perfeito funcionamento da simulação da rede apresentada na Figura 2. [[Arquivo:DynamicRoutingTriangle.png |thumb | 400px| Figura 2 - Rede exemplo]] | *O arquivo de configuração do Netkit abaixo, é a definição para o perfeito funcionamento da simulação da rede apresentada na Figura 2. [[Arquivo:DynamicRoutingTriangle.png |thumb | 400px| Figura 2 - Rede exemplo]] | ||
− | < | + | <syntaxhighlight lang=bash> |
# Hosts definitions | # Hosts definitions | ||
pc1[type]=generic | pc1[type]=generic | ||
Linha 1 456: | Linha 1 456: | ||
[[Arquivo:Diagrama_rede_IPv6.jpg]] | [[Arquivo:Diagrama_rede_IPv6.jpg]] | ||
− | #Crie em seu computador um arquivo com nome '''/home/aluno/IPv6.conf''', com o seguinte conteúdo: < | + | #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 | #Ligacao das maquinas nos dominios de colisao | ||
#Duas pequenas redes interligadas pelo backbone | #Duas pequenas redes interligadas pelo backbone | ||
Linha 1 495: | Linha 1 495: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
#Tenha certeza que o Netkit2 estja atualizado: General >> Update. | #Tenha certeza que o Netkit2 estja atualizado: General >> Update. | ||
− | #Rode o NetKit em seu computador. Em um terminal digite: < | + | #Rode o NetKit em seu computador. Em um terminal digite: <syntaxhighlight lang=bash> |
netkit2 & </syntaxhighlight> | netkit2 & </syntaxhighlight> | ||
#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'''. | #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. | #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. | #Ao clicar no menu '''File''' - '''Graph''', pode-se ter uma visão da rede a ser simulada e conferir se é equivalente ao diagrama proposto. | ||
− | #Faça um '''ping6''' entre o '''pc1''' ao '''pc3''': < | + | #Faça um '''ping6''' entre o '''pc1''' ao '''pc3''': <syntaxhighlight lang=bash> |
ping6 -c4 2001:bcc:1f0:1::103 </syntaxhighlight> | ping6 -c4 2001:bcc:1f0:1::103 </syntaxhighlight> | ||
#Faça um '''ping6''' entre o '''pc1''' e '''pc2'''. | #Faça um '''ping6''' entre o '''pc1''' e '''pc2'''. | ||
− | #No '''pc4''' use o seguinte comando para adicionar o endereço IPv6 à interface de rede: < | + | #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> | ip addr add 2001:bcc:1f0:1::104/64 dev eth0 </syntaxhighlight> | ||
− | #No '''pc4''', acrescente o ''default gateway'' com o seguinte comando: < | + | #No '''pc4''', acrescente o ''default gateway'' com o seguinte comando: <syntaxhighlight lang=bash> |
ip -6 route add default via 2001:bcc:1f0:1::1 dev eth0 </syntaxhighlight> | ip -6 route add default via 2001:bcc:1f0:1::1 dev eth0 </syntaxhighlight> | ||
− | #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''': < | + | #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> |
ip addr show dev eth0 </syntaxhighlight> | ip addr show dev eth0 </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: < | + | #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> |
ip -6 route add 2001:bcc:1f0:1::/64 via 2001:db8:dead:1::2 dev eth0 </syntaxhighlight> | ip -6 route add 2001:bcc:1f0:1::/64 via 2001:db8:dead:1::2 dev eth0 </syntaxhighlight> | ||
#Confira as rotas estabelecidas em todos os ''hosts'' com o comando abaixo. | #Confira as rotas estabelecidas em todos os ''hosts'' com o comando abaixo. | ||
− | ##São coerentes com os dados apresentados no diagrama acima?< | + | ##São coerentes com os dados apresentados no diagrama acima?<syntaxhighlight lang=bash> |
ip -6 route show </syntaxhighlight> | ip -6 route show </syntaxhighlight> | ||
#Use os comandos '''traceroute6 2001:bcc:1f0:1::103''' e '''traceroute6 2001:bcc:1f0:1::104''' a partir do computador '''pc1'''. | #Use os comandos '''traceroute6 2001:bcc:1f0:1::103''' e '''traceroute6 2001:bcc:1f0:1::104''' a partir do computador '''pc1'''. | ||
#Anote as rotas. | #Anote as rotas. | ||
− | #Deixe um '''ping6''' entre o '''pc1''' ao '''pc3''' rodando: < | + | #Deixe um '''ping6''' entre o '''pc1''' ao '''pc3''' rodando: <syntaxhighlight lang=bash> |
ping6 2001:bcc:1f0:1::103 </syntaxhighlight> | ping6 2001:bcc:1f0:1::103 </syntaxhighlight> | ||
#Rode o wireshark no '''r1''' com os procedimentos: | #Rode o wireshark no '''r1''' com os procedimentos: | ||
##Clique sobre a aba do '''r1'''. | ##Clique sobre a aba do '''r1'''. | ||
##Menu: Wireshark >> any | ##Menu: Wireshark >> any | ||
− | #Analisando a captura do Wireshark, você verá os pacotes relativos ao ping6 e também pacotes parecidos com: < | + | #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 |
2001:db8:dead:1::1 fe80::4cd6:19ff:fedc:2b52 ICMPv6 78 Neighbor Advertisement 2001:db8:dead:1::1 (rtr, sol) </syntaxhighlight> | 2001:db8:dead:1::1 fe80::4cd6:19ff:fedc:2b52 ICMPv6 78 Neighbor Advertisement 2001:db8:dead:1::1 (rtr, sol) </syntaxhighlight> | ||
#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. | #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. | ||
Linha 1 553: | Linha 1 553: | ||
##Link-layer address | ##Link-layer address | ||
##*Indica o endereço MAC da interface do dispositivo em questão. | ##*Indica o endereço MAC da interface do dispositivo em questão. | ||
− | #Em todos os ''hosts'' rode o comando < | + | #Em todos os ''hosts'' rode o comando <syntaxhighlight lang=bash> ip -6 neighbor show </syntaxhighlight> |
##Qual é a funcionalidade desse comando? | ##Qual é a funcionalidade desse comando? | ||
##Qual é o significado do conteúdo dessa tabela? | ##Qual é o significado do conteúdo dessa tabela? | ||
Linha 1 581: | Linha 1 581: | ||
[[Arquivo:RCO-Animacao_HUB.gif | thumb | 400px| Figura 2 - Funcionamento de um Hub]] | [[Arquivo:RCO-Animacao_HUB.gif | thumb | 400px| Figura 2 - Funcionamento de um Hub]] | ||
− | #Contruir um arquivo '''\home\aluno\hub.conf''' com a seguinte configuração < | + | #Contruir um arquivo '''\home\aluno\hub.conf''' com a seguinte configuração <syntaxhighlight lang=bash> |
pc1[type]=generic | pc1[type]=generic | ||
pc2[type]=generic | pc2[type]=generic | ||
Linha 1 594: | Linha 1 594: | ||
#Carregar e executar a configuração no Netkit. | #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 | #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 | ||
− | #Copiar o arquivo para a Máquina Virtual, no terminal da máquina real digite:< | + | #Copiar o arquivo para a Máquina Virtual, no terminal da máquina real digite:<syntaxhighlight lang=bash> |
cp /home/aluno/sendraw.py /home/aluno/lab/shared </syntaxhighlight> | cp /home/aluno/sendraw.py /home/aluno/lab/shared </syntaxhighlight> | ||
#Identificar o endereço de Hardware (MAC) do PC2. Use o '''ifconfig'''. Note que NÃO existe endereço IPv4 configurado. | #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:< | + | #Executar o tcpdump no PC2:<syntaxhighlight lang=bash> |
tcpdump -i eth0 -e -X -vvv -s 50</syntaxhighlight> | tcpdump -i eth0 -e -X -vvv -s 50</syntaxhighlight> | ||
− | #Executar o tcpdump no PC3:< | + | #Executar o tcpdump no PC3:<syntaxhighlight lang=bash> |
tcpdump -i eth0 -e -X -vvv -s 50</syntaxhighlight> | tcpdump -i eth0 -e -X -vvv -s 50</syntaxhighlight> | ||
− | #Executar o tcpdump no PC4:< | + | #Executar o tcpdump no PC4:<syntaxhighlight lang=bash> |
tcpdump -i eth0 -e -X -vvv -s 50</syntaxhighlight> | tcpdump -i eth0 -e -X -vvv -s 50</syntaxhighlight> | ||
− | #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:< | + | #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> |
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> | 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> | ||
#O que explica o comportamento de broadcast para esse caso? | #O que explica o comportamento de broadcast para esse caso? | ||
Linha 1 612: | Linha 1 612: | ||
[[Arquivo:RCO-Animacao_SWITCH.gif | thumb | 370px| Figura 2 - Funcionamento de um Switch]] | [[Arquivo:RCO-Animacao_SWITCH.gif | thumb | 370px| Figura 2 - Funcionamento de um Switch]] | ||
− | #Construir um arquivo '''/home/aluno/switch.conf''' com a seguinte configuração: < | + | #Construir um arquivo '''/home/aluno/switch.conf''' com a seguinte configuração: <syntaxhighlight lang=bash> |
switchA[type]=switch | switchA[type]=switch | ||
Linha 1 632: | Linha 1 632: | ||
#Carregar e executar a configuração no Netkit. | #Carregar e executar a configuração no Netkit. | ||
#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. | #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. | ||
− | #Copiar o arquivo para a Máquina Virtual< | + | #Copiar o arquivo para a Máquina Virtual<syntaxhighlight lang=bash> |
cp /home/aluno/sendraw.py /home/aluno/lab/shared/ </syntaxhighlight> | cp /home/aluno/sendraw.py /home/aluno/lab/shared/ </syntaxhighlight> | ||
#Identificar o endereço de Hardware (MAC) do PC2. Use o ifconfig. Note que NÃO existe endereço IPv4 configurado | #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, PC3 e PC4 com o comando:< | + | #Executar o tcpdump no PC2, PC3 e PC4 com o comando:<syntaxhighlight lang=bash> |
tcpdump -i eth0 -e -X -vvv -s 50</syntaxhighlight> | tcpdump -i eth0 -e -X -vvv -s 50</syntaxhighlight> | ||
− | #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:< | + | #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> |
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> | 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> | ||
− | #No PC1 enviar uma mensagem em broadcast (endereço FF:FF:FF:FF:FF:FF)< | + | #No PC1 enviar uma mensagem em broadcast (endereço FF:FF:FF:FF:FF:FF)<syntaxhighlight lang=bash> |
python /hostlab/shared/sendraw.py -d FF:FF:FF:FF:FF:FF -i Mensagem_Broadcast </syntaxhighlight> | 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;"> | <blockquote style="background: lime; border: 1px solid black; padding: 1em;"> | ||
Linha 1 654: | Linha 1 654: | ||
##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]] | #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]] | ||
− | #Confira o cache do arp no PC1 fazendo:< | + | #Confira o cache do arp no PC1 fazendo:<syntaxhighlight lang=bash> |
arp -a</syntaxhighlight> | arp -a</syntaxhighlight> | ||
− | #Confira o cache do arp no PC2 fazendo:< | + | #Confira o cache do arp no PC2 fazendo:<syntaxhighlight lang=bash> |
arp -a</syntaxhighlight> | arp -a</syntaxhighlight> | ||
#Faça um ping do PC1 no PC3. | #Faça um ping do PC1 no PC3. | ||
− | #Confira novamente o cache do arp no PC1 fazendo:< | + | #Confira novamente o cache do arp no PC1 fazendo:<syntaxhighlight lang=bash> |
arp -a</syntaxhighlight> | arp -a</syntaxhighlight> | ||
Linha 1 704: | Linha 1 704: | ||
##Wireless. Discutir a funcionalidade. | ##Wireless. Discutir a funcionalidade. | ||
#Reconfigure o roteador sem fio para alugar os endereços 192.168.X.20-60, onde X é igual ao último dígito do número IP de sua máquina. Por exemplo, para a máquina 192.168.1.7, X=7. | #Reconfigure o roteador sem fio para alugar os endereços 192.168.X.20-60, onde X é igual ao último dígito do número IP de sua máquina. Por exemplo, para a máquina 192.168.1.7, X=7. | ||
− | #Para verificar o funcionamento, num terminal da máquina (real) execute o comando abaixo. Caso tudo esteja funcionando corretamente, sua máquina configurará uma nova interface de rede com o número IP fornecido por seu roteador ou um roteador de um colega. < | + | #Para verificar o funcionamento, num terminal da máquina (real) execute o comando abaixo. Caso tudo esteja funcionando corretamente, sua máquina configurará uma nova interface de rede com o número IP fornecido por seu roteador ou um roteador de um colega. <syntaxhighlight lang=bash> sudo dhclient eth0:0 </syntaxhighlight> |
#Reconfigure o WiFi de seu roteador: | #Reconfigure o WiFi de seu roteador: | ||
##Troque o SSID (''Service Set IDentifier'') de seu roteador, colocando seu primeiro nome como nome de rede. | ##Troque o SSID (''Service Set IDentifier'') de seu roteador, colocando seu primeiro nome como nome de rede. | ||
Linha 1 757: | Linha 1 757: | ||
**No roteiro do '''Laboratório 16''' também é apresentado um arquivo de configuração de uma rede plenamente funcional para o Netkit, utilize-o como exemplo para entendimento das configurações requisitadas. | **No roteiro do '''Laboratório 16''' também é apresentado um arquivo de configuração de uma rede plenamente funcional para o Netkit, utilize-o como exemplo para entendimento das configurações requisitadas. | ||
**O arquivo deverá ser adaptado para a topologia de cada equipe. | **O arquivo deverá ser adaptado para a topologia de cada equipe. | ||
− | < | + | <syntaxhighlight lang=bash> |
H1[type]=generic | H1[type]=generic | ||
H2[type]=generic | H2[type]=generic | ||
Linha 1 791: | Linha 1 791: | ||
#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:< | + | ##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/lab/config_apache.sh | ||
/hostlab/shared/lab/config_apache.sh | /hostlab/shared/lab/config_apache.sh | ||
Linha 1 800: | Linha 1 800: | ||
#Editar o arquivo com gedit com nome ''config_apache.sh''. Qualquer comando executado no terminal pode ser colocado com exata sintaxe no ''shell script'', e vários comandos podem ser colocados em várias linhas. | #Editar o arquivo com gedit com nome ''config_apache.sh''. Qualquer comando executado no terminal pode ser colocado com exata sintaxe no ''shell script'', e vários comandos podem ser colocados em várias linhas. | ||
#Construir o arquivo da forma: | #Construir o arquivo da forma: | ||
− | < | + | <syntaxhighlight lang=bash> |
#!/bin/bash | #!/bin/bash | ||
#comentario: copiar um arquivo | #comentario: copiar um arquivo | ||
Linha 1 839: | Linha 1 839: | ||
#Iniciar na máquina real uma VirtualBox com Ubuntu e Interface Gráfica; | #Iniciar na máquina real uma VirtualBox com Ubuntu e Interface Gráfica; | ||
− | #Abrir um terminal e verificar a rota para o default gateway usando:< | + | #Abrir um terminal e verificar a rota para o default gateway usando:<syntaxhighlight lang=bash>route -n </syntaxhighlight> |
− | #Adicionar uma rota para a sua rede: < | + | #Adicionar uma rota para a sua rede: <syntaxhighlight lang=bash> sudo route add -net 10.X.0.0/16 gw 192.168.1.XX </syntaxhighlight> onde 192.168.1.XX é o endereço externo do roteador de borda do domínio onde está o servidor APACHE. |
− | #Para garantir a rota reversa vamos colocar rotas ''default'' também nos roteadores dos domínios (roteadores no netkit). Para tanto coloque no projeto.conf esta informação de rota para cada roteador que não está na borda: < | + | #Para garantir a rota reversa vamos colocar rotas ''default'' também nos roteadores dos domínios (roteadores no netkit). Para tanto coloque no projeto.conf esta informação de rota para cada roteador que não está na borda: <syntaxhighlight lang=bash> Rx[route]=default:gateway=Y.Y.Y.Y |
ou | ou | ||
Rx[default_gateway]=Y.Y.Y.Y | Rx[default_gateway]=Y.Y.Y.Y | ||
Linha 2 038: | Linha 2 038: | ||
#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. | #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. | ||
#Descreva e detalhe o processo de obtenção de um endereço IP através do protocolo DHCP. [[Image:ExercicioConfEstaticaZebra.png]] | #Descreva e detalhe o processo de obtenção de um endereço IP através do protocolo DHCP. [[Image:ExercicioConfEstaticaZebra.png]] | ||
− | #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: < | + | #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: <syntaxhighlight lang=bash> |
root@H1:~# ifconfig | root@H1:~# ifconfig | ||
eth0 Link encap:Ethernet HWaddr 7a:a6:f4:ca:51:0e | eth0 Link encap:Ethernet HWaddr 7a:a6:f4:ca:51:0e |
Edição das 08h29min de 5 de setembro de 2018
MURAL DE AVISOS E OPORTUNIDADES DA ÁREA DE TELECOMUNICAÇÕES
Informações Gerais
Edições
- RCO60803 2018-1 - Prof. Odilson Tadeu Valle / Prof. Eraldo Silveira e Silva
- RCO60803 2017-2 - Prof. Odilson Tadeu Valle / Prof. Eraldo Silveira e Silva
- RCO60803 2017-1 - Prof. Juliano de Souza / Prof. Eraldo Silveira e Silva
- RCO60803 2016-2 - Prof. Juliano de Souza / Prof. Luciano Barreto
- RCO60803 2016-1 - Prof. Fernando Rodrigues Santos / Prof. Juliano de Souza
- RCO60803 2015-2 - Prof. Simara Sonaglio
- RCO60803 2015-1 - Prof. Arliones Hoeller / Prof. Túlio Ribeiro
- RCO60803 2014-2 - Prof. Arliones Hoeller / Prof. Tomás Grimm / Prof. José Clair
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 2 - Camada de Aplicação
Capítulo 2 - Camada de Aplicação - FTP + EMAIL + P2P
Capítulo 3 - Camada de Transporte
Slides de Outras Universidades
- TCP Error Control- EECS - LASSONDE
- TCP- Flow and Error Control - LASSONDE
- Congestion Control - LASSONDE
- Slides/Aula Faculty of Engineering, Kasetsart University
Curiosidades
- Monitoramento do tráfego RNP - PoP-SC
- Monitoramento do tráfego RNP - Nacional
- Rede Clara Internacional
- Futura infraestrutura de rede da RNP
- Animated map shows the undersea cables that power the internet
- Submarine Cable Map 2018
- History of the Internet - legendado
- Warriors of the Net - legendado
- Browser Wars - legendado
- Browser Wars - dublado
- Localização geográfica de IPs
- IPv6 no Brasil
- Laboratório de IPv6 - Livro didático contendo vários roteiros para entendimento do IPv6
- Estatísticas Google sobre IPv6
Laboratórios
Laboratório 1 - Ferramentas de Rede e Conceitos Básicos |
---|
Objetivos
Conceitos introdutórios para uso do laboratórioEstrutura do LaboratórioEndereçamento MAC x Endereçamento IP A rede do laboratório em uso segue o modelo apresentado no diagrama da Figura 1 (endereçamento pode ser diferente). Os Laboratórios de Redes de Computadores estão equipados com N+1 (N = número de computadores para alunos) computadores conectados em rede e com acesso a Internet. A rede local do laboratório tem endereço IP 192.168.1.0/24. A máscara de rede /24 indica que o último byte do endereço é utilizado para identificar cada máquina, por exemplo 192.168.1.1, 192.168.1.2, etc. Roteiro de atividadesParte 1: Observando interfaces do sistema com ifconfigO 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.
Parte 2: Testando a conectividade com o pingAplicativo 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.
Parte 3: Verificando rotas com o tracerouteO 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.
O exemplo mostra a rota dos pacotes entre um computador do Lab. Redes (192.168.1.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).
Referências adcionais
|
Laboratório 2 - Wireshark e encapsulamento |
---|
Objetivos
WireShark2005 KUROSE, J.F & ROSS, K. W. Todos os direitos reservados
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 2 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. 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.
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:
Roteiro de atividadesEtapa 1
Etapa 2
Etapa 3 - Desafios
|
Laboratório 3 - Conceituando protocolos |
---|
Objetivos
IntroduçãoO 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. Um protocolo de camada de aplicação define:
Neste experimento será proposto a construção de um protocolo de aplicação para prestar serviços na área de operações matemáticas. Na implementação deste serviço todos grupos serão clientes, solicitando respostas a desafios matemáticos, e servidores, enviando respostas as solicitações, de serviço. Deve ser observado que para não se tornar complexo será usado o transporte de informação através do ICMP (usando o ping). O ping possui uma facilidade para transportar bytes de dados (flag -p). A observação destes dados será feita usando o wireshark (captura de pacotes). Pode-se dizer que o programa ping juntamente com o wireshark e a própria interpretação de pacotes pelo grupo constituem a camada de aplicação. A camada de transporte foi de certa forma subsituída pelo ICMP que na prática é posicionado na camada de rede (por ser um protocolo auxiliar no funcionamento da camada IP).
|
Laboratório 4 - Desvendando o HTTP com Wireshark - BÁSICO |
---|
Sobre este Laboratório
Fonte base
Objetivos
PARTE 1 - Interação Básica GET/Resposta do HTTPVamos iniciar a nossa exploração do HTTP baixando um arquivo em HTML simples - bastante pequeno, que não contém objetos incluídos. Faça o seguinte:
O exemplo da figura 1 mostra na janela de listagem de pacotes duas mensagens HTTP capturadas:
Responda às seguintes perguntas e imprima as mensagens GET e a resposta e indique em que parte da mensagem você encontrou a informação que responde às questões.
PARTE 2 - Interação Básica GET/Resposta do HTTP usando TELNET e REQUISIÇÃO MANUALPara esta etapa temos que recordar que o browser é responsável por:
Mas será que podemos "emular" o comportamento do browser usando uma outra ferramenta? Por exemplo, o telnet permite abrir uma conexão na porta 80. O que for teclado após a conexão será enviado para o servidor pela conexão estabelecida. Aproveitando o comportamento acima, vamos montar na MÃO o pacote de aplicação (que o browser gera) e receber a página do servidor como resposta. Claro que agora não teremos a facilidade do browser em mostrar a página para nós. O que veremos é um código HTML, que é um formato de documentos WEB.
Esta característica é a "persistência" do http versão 1.1, que permite reutilizar a mesma conexão para adquirir múltiplos recursos. |
Laboratório 5 - Desvendando o HTTP com Wireshark - AVANÇADO |
---|
Objetivos
Fonte base
PARTE 1 - A Interação HTTP GET Condicional/RespostaA maioria dos navegadores web tem um cache (seção 2.2.6 do livro) e, desta forma, realizam GET condicional quando baixam um objeto HTTP. Execute os seguintes passos:
Responda às seguintes questões:
PARTE 2 -Documentos HTML com Objetos IncluídosAgora que vimos como o Wireshark mostra o tráfego capturado para arquivos em HTML grandes, nós podemos observar o que acontece quando o seu browser baixa um arquivo com objetos incluídos, no nosso exemplo, imagens que estão armazenadas em outros servidores. Faça o seguinte:
Responda às seguintes questões:
PARTE 3 -Segurança com HTTPSPara finalizar, vamos capturar sequências de mensagens HTTPS, somente a título de comparação. Execute os seguintes procedimentos:
Responda:
|
Laboratório 6 - Servidor Apache e Construção de Página HTML |
---|
Objetivos
Fonte base
Máquinas Virtuais UML / Netkit2Conceitos de máquinas virtuais Para esta aula de laboratório estaremos usando o netkit2 do Prof. Sobral, uma extensão do netkit da Universidade Roma Tre. Trata-se de uma ferramenta que que permite criar máquinas virtuais leves sobre o linux. Estas máquinas podem ser ligadas em rede. Neste laboratório conectaremos uma máquina virtual na REDE do Laboratório através de uma bridge. O Servidor ApacheNeste laboratório vamos criar uma página html e hospedá-la em um máquina virtual com o Web Server Apache. Para maiores informações consulte Visão Geral do Apache . PARTE 1 - Colocando o servidor Apache no ar no Netkit
PARTE 2 - Colocando no ar a sua página HTMLNesta parte do experimento vamos editar um código HTML e disponibilizá-la em um diretório especial por você criado. Observe que vamos editar a página no hospedeiro e salvá-la em um diretório compartilhado entre a máquina hospedeira e a MV.
|
Laboratório 7 - Serviço de Nomes (DNS) |
---|
ObjetivosO Domain Name System (DNS) traduz nomes de hosts em endereços Internet Protocol (IP), preenchendo uma lacuna crítica na infraestrutura da Internet. Neste laboratório, observaremos mais de perto:
Lembre-se de que o papel do cliente no DNS é relativamente simples - um cliente envia uma consulta ao seu DNS, e obtém uma resposta. Muito pode acontecer “por baixo dos panos”, de forma invisível aos clientes DNS, enquanto os servidores DNS, organizados hierarquicamente, comunicam-se entre si para, ou recursivamente ou iterativamente, resolver uma consulta DNS de um cliente. Do ponto de vista do cliente DNS, contudo, o protocolo é bastante simples - uma consulta é feita ao seu servidor DNS e uma resposta é recebida deste servidor. Fonte BasePARTE 1: Consulta simples ao DNS gerada a partir de um comando pingO comando ping pode ser usado tanto com um endereço IP como com um nome de host. Em última instância, ele sempre enviará pacotes para um endereço IP. No caso de ser usado o endereço de host, ele tentará resolver (mapear) este nome em um endereço IP usando um servidor DNS (local). Ele gera uma pergunta para o servidor (ou para os servidores, caso exista mais de um configurado). Esta experiência mostra como verificar os servidores instalados e, através de uma captura de pacote mostra a estrutura dos cabeçalhos DNS.
PARTE 2 - Consultas DNS por meio de ferramentas especializadas
Algumas consultas AAAAVamos expandir um pouco nossos horizontes e fazer algumas consultas envolvendo IPv6.
Analisando o protocolo via WiresharkAgora 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.
Com base nisso identifique o seguinte:
Exemplos de arquivos de um Second Level Domain fictício
$TTL 86400
@ IN SOA ns.redes.edu.br. root (
2016090900 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
;
@ IN NS ns.redes.edu.br.
@ IN MX 10 mail.redes.edu.br.
$ORIGIN redes.edu.br.
ns A 192.168.1.101
www A 192.168.1.102
www A 192.168.1.103
www A 192.168.1.104
www A 192.168.1.105
www A 192.168.1.106
www A 192.168.1.107
ftp A 192.168.1.108
mail A 192.168.1.109
$TTL 86400
@ IN SOA ns.redes.edu.br. root (
2016090900 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
;
IN NS ns.redes.edu.br.
101 IN PTR ns.redes.edu.br.
102 IN PTR www.redes.edu.br.
108 IN PTR ftp.redes.edu.br.
109 IN PTR mail.redes.edu.br.
|
Laboratório 8 - Desvendando o UDP - Básico |
---|
Objetivos
Fonte BaseParte 1 - Fluxo único UDP
Parte 2 - Experimento com UDP - MUX e DEMUX
DESAFIO (para casa?): capture e anote byte a byte o conteúdo de um pequeno pacote UDP (e dados IP) e calcule o CHECKSUM do mesmo (pesquise no google como fazer). |
Laboratório 9 - Desvendando o TCP - Básico |
---|
Objetivos
Fonte BaseConfiguração do LaboratórioO roteiro será executado sobre máquinas virtuais, através do uso do Netkit2. Copie o texto abaixo e crie um arquivo com nome TCP.conf. Salve-o na pasta /home/aluno. PC1[type]=generic
PC2[type]=generic
PC3[type]=generic
PC1[eth0]=lan0:ip=10.0.0.1/24
PC2[eth0]=lan0:ip=10.0.0.2/24
PC3[eth0]=lan0:ip=10.0.0.3/24
Verificando o estabelecimento, troca de dados e finalização da conexão
|
Laboratório 10 - Desvendando o TCP - Número de Sequência, Controle de Erros e Funcionamento Full-Duplex |
---|
Objetivos
Fonte BaseConfiguração do LaboratórioO roteiro será executado sobre máquinas virtuais, através do uso do Netkit2. Copie o texto abaixo, abra o editor Gedit, cole o texto e salve o arquivo em /home/aluno/TCP.conf. PC1[type]=generic
PC2[type]=generic
PC3[type]=generic
PC1[eth0]=lan0:ip=10.0.0.1/24
PC2[eth0]=lan0:ip=10.0.0.2/24
PC3[eth0]=lan0:ip=10.0.0.3/24
PARTE 1 - Transmissão sem erros: Verificação de Número de Sequência, Reconhecimentos e Controle de Fluxo
Perguntas
Arquivo CAP deste experimentoPARTE 2 - Transmissão com erros: retransmissões
Perguntas:
arquivo cap deste experimentoPARTE 3 - Testando a capacidade do TCP de enviar dados de forma duplex
Perguntas:
|
Laboratório 11 - Controle de congestionamento e equidade do TCP |
---|
Objetivos
Fonte BaseRoteiro
Incluindo UDPAgora vamos dificultar a vida do TCP incluindo um tráfego UDP. O gráfico gerado deverá apresentar a competição pelo meio de transmissão entre os diversos fluxos de dados.
|
Laboratório 12 - TCP x UDP |
---|
Objetivos
Experimento 1Antes de qualquer experimento deve-se desabilitar algumas funcionalidades do kernel do LINUX, para que os experimentos reflitam a teoria. Caso sua interface de rede não seja a eth0 adapte o comando, caso reiniciar a máquina repita-o: sudo ethtool --offload eth0 gso off tso off sg off gro off
O que aconteceria se um arquivo fosse transferido de um computador a outro com ambos protocolos?
A primeira transferência será feita usando o protocolo TCP da seguinte forma
A segunda transferência será feita usando o protocolo UDP
|
Laboratório 13 - Interligação de duas redes locais via um roteador |
---|
Objetivos
Fonte BaseProcedimento
Configuração básica de interface de rede
Referências adicionais
|
Laboratório 14 - Roteamento Estático em Redes |
---|
Objetivo
Fonte BasePARTE 1 - Rede com 3 roteadores
PARTE 2 - Desafio: Rede com 4 roteadoresConfigure a rede abaixo (no netkit) de forma que pacotes vindos de H1 para H2 passem por R1, R3, R4 e R2. O retorno deve ser por R2, R4 e R1. Cada rede SN está em uma rede ethernet separada. Chame oprofessor e mostre que os roteamentos estão sendo realizados devidamente com o apoio do tcpdump e tracerotue.
PARTE 3 - Criando loop para verificar o campo TTLCrie um conjunto de rotas que façam que um pacote vindo de H1 para H2 entre em um loop entre R1, R3, R2, R1. Envie um pacote único com o ping de H1 para H2. Rastreie com o tcpdump o pacote em loop e verifique o momento em que o pacote sai de circulação. Links de Referência |
Laboratório 15 - Sub-redes |
---|
Objetivos
Fonte BaseExercícios
|
Laboratório 16 - Sub-redes e Roteamento Estático em Redes |
---|
Objetivos
Fonte BásicaRoteiro
# Hosts definitions
pc1[type]=generic
pc2[type]=generic
pc3[type]=generic
# Hosts' interfaces to local routers
pc1[eth0]=link0:ip=192.168.0.1/24
pc2[eth0]=link1:ip=192.168.1.1/24
pc3[eth0]=link2:ip=192.168.2.1/24
# Default gateways definitions
pc1[default_gateway]=192.168.0.254
pc2[default_gateway]=192.168.1.254
pc3[default_gateway]=192.168.2.254
# Routers definitions
r1[type]=gateway
r2[type]=gateway
r3[type]=gateway
# Routers' interfaces to local networks
r1[eth0]=link0:ip=192.168.0.254/24
r2[eth0]=link1:ip=192.168.1.254/24
r3[eth0]=link2:ip=192.168.2.254/24
# Network "backbone" links
r1[eth1]=backbone0:ip=10.0.0.1/30
r1[eth2]=backbone1:ip=10.0.1.1/30
r2[eth1]=backbone0:ip=10.0.0.2/30
r2[eth2]=backbone2:ip=10.0.2.1/30
r3[eth1]=backbone1:ip=10.0.1.2/30
r3[eth2]=backbone2:ip=10.0.2.2/30
# Routes definition
r1[route]=192.168.2.0/24:gateway=10.0.1.2
r1[route]=192.168.1.0/24:gateway=10.0.0.2
r1[route]=10.0.2.0/30:gateway=10.0.0.2
r2[route]=192.168.0.0/24:gateway=10.0.0.1
r2[route]=192.168.2.0/24:gateway=10.0.2.2
r2[route]=10.0.1.0/30:gateway=10.0.2.2
r3[route]=192.168.0.0/24:gateway=10.0.1.1
r3[route]=192.168.1.0/24:gateway=10.0.2.1
r3[route]=10.0.0.0/30:gateway=10.0.2.1
Referencia
|
Laboratório 17 - IPv6: Endereços e Neighbor Discovery |
---|
Fonte BaseFontes Extras
Objetivos do laboratório:
Introdução teóricaObs.: texto copiado literalmente de: Laboratório de IPv6. 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.
Roteiro de atividades: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.
|
Laboratório 18 - Tecnologia de Enlace Ethernet |
---|
Objetivos
Fonte BaseAnimação Pearson/KurosePARTE 1Neste 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.
PARTE 2 - Explorando o SWITCH e o endereço de Broadcast Ethernet
PARTE 3 - Explorando o ARPO 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.
|
Laboratório 19 - Configurando uma Rede Doméstica |
---|
Objetivos
Fonte BaseAnalisando o roteador
Montando uma rede básica
|
Projeto Final
Descrição do Projeto |
---|
Objetivos
A arquitetura da rede é mostrada na Figura abaixo. Especificações do Projeto
H1[type]=generic
H2[type]=generic
R1[type]=gateway
R2[type]=gateway
R3[type]=gateway
H1[eth0]=SR2:ip=10.9.2.2/24
H1[default_gateway]=10.9.2.1
H2[eth0]=SR4:ip=10.9.4.2/24
H2[default_gateway]=10.9.4.1
R1[eth0]=uplink:bridge=eth0:ip=192.168.1.190/24
R1[eth1]=SR1:ip=10.9.1.1/24
R1[eth2]=SR5:ip=10.9.5.1/24
R1[route]=10.9.2.0/24:gateway=10.9.1.2
R1[route]=10.9.4.0/24:gateway=10.9.5.2
R2[eth0]=SR1:ip=10.9.1.2/24
R2[eth1]=SR2:ip=10.9.2.1/24
R2[eth2]=SR3:ip=10.9.3.1/24
R2[default_gateway]=10.9.1.1
R3[eth0]=SR3:ip=10.9.3.2/24
R3[eth1]=SR4:ip=10.9.4.1/24
R3[eth2]=SR5:ip=10.9.5.2/24
R3[default_gateway]=10.9.5.1
#!/bin/bash
#comentario: copiar um arquivo
cp /home/aluno/teste.txt /var/www
#renomeando o arquivo copiado teste.txt para index.html
mv /var/www/teste.txt /var/www/index.html
#iniciando um serviço
/etc/init.d/ssh start
Copiar o script para o /home/aluno/lab/shared e apartir do Apache fazer: Dar direito de execução do script: chmod 777 /hostlab/shared/config_apache.sh
/hostlab/shared/config_apache.sh
Note que como todas as máquinas virtuais do netkit são em modo de comando (não tem interface gráfica) então o uso de browsers para teste do acesso a páginas html fica limitado. Entretanto, para teste rápido é possível usar o comando lynx: lynx IP_SERVIDOR_APACHE Note que o servidor deve ter conectividade IP (faça ping antes para testar);
Um problema que nos deparamos ao usar o netkit para acesso de páginas hospedadas em suas Máquinas Virtuais é o fato de não termos a interface gráfica. Uma interface gráfica é necessária para um browser do tipo Firefox. Uma alternativa é o uso de browser em modo texo do tipo "lynx". Para testes rápidos pode ser interessante mas para visualizarmos em plenitude a página não é a melhor solução. Para contornar este problema vamos usar uma máquina VirtualBox que estará conectada na rede do laboratório. Faremos o default gateway desta máquina apontar para o roteador de borda do domínio da equipe garantindo que a mesma conduza todo o tráfego indireto para este roteador. Para garantir que exista rota reversa vamos colocar em cada roteador do domínio uma rota default gateway para o roteador de borda. Vamos elaborar passo a passo estes procedimentos:
|
Listas de Exercícios
Lista de exercícios 1 - Introdução |
---|
|
Lista de exercícios 2 - Camada de Aplicação |
---|
ADICIONAIS PARTE 2- HTTP
ADICIONAIS PARTE 3- DNS
|
Lista de exercícios 3 - Camada de Transporte |
---|
|