Redes de Computadores
Aula Prática 2
Nesta aula, você aprenderá a utilizar alguns utilitários de rede que podem ajudá-lo a identificar problemas na rede ou nos programas que estiver desenvolvendo ao longo do curso.
Utilitários de Rede
No Windows existem alguns utilitários de rede disponíveis através da janela DOS. Os utilitários que serão vistos nesta aula são programas que usam a linha de comando e são baseados em programas originados do Unix, com a mesma função. Os utilitários mostrados são idênticos aos do Unix/Linux com excessão do traceroute que no windows tem o nome de tracert devido a limitaçào antiga de 8 caracteres para nomes de programas do DOS.
O utilitário ping
O utilitário ping (analogia com o jogo de ping-pong - na verdade, o nome é um acrônimo para Packet Internet Groper, que poderia ser traduzido como "procurador de pacotes da Internet") serve para verificar a resposta de um outro servidor na rede até a camada de rede. O ping envia pacotes ICMP (Internet Control Message Protocol) requisitando uma resposta do servidor remoto. A resposta do servidor normalmente é o mesmo pacote enviado. Ou seja, a máquina remota simplesmente devolve os dados que ela recebeu. O objetivo é testar se além da rede estar funcionando corretamente até a camada de rede, a mesma não está fazendo nenhuma tradução nos bytes enviados.
O modo de usar o ping no Windows é (gerado pelo próprio ping!):
Uso: ping [-t] [-a] [-n num] [-l tamanho] [-f] [-i TTL] [-v TOS]
[-r num] [-s num] [[-j lista_hosts] | [-k lista_hosts]]
[-w tempo_limite] lista_destino
Opções:
-t Dispara contra o host especificado até ser interrompido.
Para ver estatísticas e continuar, pressione CTRL-Break;
para terminar, pressione CRTL-C.
-a Resolve endereços para nomes de host.
-n num Número de requisições de eco a enviar. O valor padrão é 4.
-l tamanho Envia o tamanho do buffer.
-f Ativa o sinalizador de não-fragmentação no pacote.
-i TTL Define o tempo de vida.
-v TOS Define o tipo de serviço.
-r num Rota dos pacotes para <num> saltos.
-s num Data e hora para <num> saltos.
-j lista_hosts Rota ampliada de origens definida em <lista_hosts>.
-k lista_hosts Rota restrita de origens definida em <lista_hosts>.
-w tempo_limite Tempo limite em milissegundos a aguardar para cada resposta.
Essa sintaxe varia um pouco no Unix/Linux.
O tamanho do pacote, por exemplo, é definido com o flag -s, ao invés de -l. O número de requisições é definido com o flag -c, ao invés de -n.
Veja abaixo um exemplo da saída de um ping para o endereço www.fabrai.br:
C:\WINDOWS>ping
www.fabrai.br
Disparando contra www.fabrai.br [201.17.147.55] com 32 bytes de dados:
Resposta de 201.17.147.55: bytes=32 tempo=98ms TTL=51
Resposta de 201.17.147.55: bytes=32 tempo=94ms TTL=51
Resposta de 201.17.147.55: bytes=32 tempo=102ms TTL=51
Resposta de 201.17.147.55: bytes=32 tempo=106ms TTL=51
Estatísticas do Ping para 201.17.147.55:
Pacotes: Enviados = 4, Recebidos = 4, Perdidos = 0 (0% de perda),
Aproximar um número redondo de vezes em milissegundos:
Mínimo = 94ms, Máximo = 106ms, Média = 100ms
O ping mostra uma série de informações interessantes, como por exemplo, o endereço IP de destino, a quantidade de bytes enviados, o tempo de resposta de cada pacote e o TTL (Time To Live ou Tempo de Vida) do pacote. O ping default do windows sempre manda 4 pacotes, no unix, ao contrário o ping funciona indefinidamente até o usuário cancelar com control-C.
Como você está numa rede segura, com endereços não válidos, não irá conseguir utilizar o ping apontando para computadores na Internet. Assim vá até o site
http://www.subnetonline.com/pages/network-tools/online-ping-ipv4.php
O ping, nesse caso, partirá do servidor www.subnetonline.com
Agora, use o comando ping para pingar os diversos servidores abaixo:
1. Google: www.google.com
2. Universo On Line: www.uol.com.br
3. Subnet Online: www.subnetonline.com
Qual dos sites abaixo apresentou menor tempo de resposta? Por que?
O (TTL) Time To Live é um campo do pacote IP e é utilizado para limitar o número de roteadores por onde um determinado pacote pode passar. Cada roteador por onde um determinado pacote IP trafega decrementa o número do campo TTL antes de passá-lo para frente. Se o valor do campo TTL chegar a zero, o roteador não envia mais o pacote IP, e sim um outro pacote ICMP para a origem avisando que o pacote IP original teve o seu TTL=0 e por isso não pôde ser mais transmitido.
Esse mecanismo serve para evitar que em uma rede mal configurada e com algum loop de endereçamento, a quantidade de pacotes trafegada estoure a capacidade da rede por causa de retransmissões entre os mesmos roteadores. Por exemplo, se do ponto A os pacotes IP são roteados para o ponto B, e do ponto B (por causa de um erro) são roteados de volta para o ponto A, um pacote IP poderia ficar indo e voltando indefinidamente se não possuísse o mecanismo do TTL.
O utilitário traceroute
O utilitário traceroute serve para nos mostrar por onde um pacote IP trafega quando é enviado. Esse utilitário é tão útil quanto o ping e no windows está disponível com o nome de tracert.
A sintaxe do tracert no windows é:
Uso: tracert [-d] [-h nmax_saltos] [-j lst_hosts] [-w tempo_limite] destino
Opções:
-d Não resolver endereços para nomes de hosts.
-h nmax_saltos Número máximo de saltos para a procura do destino.
-j lst_hosts Rota ampliada de origens usada com a lista lst_hosts.
-w tempo_limite Tempo de espera em milissegundos para cada resposta.
Não existe nenhum mecanismo disponível nos roteadores para informar o trajeto de um pacote IP pela Internet. Mas sem usar nenhum artifício adicional, o autor do traceroute conseguiu fazer este programa de forma muito criativa. Ele aproveitou o campo TTL do pacote IP para transmitir pacotes com TTL a partir de 1 até alcançar o destino. Assim, cada vez que um pacote "morre" no caminho até o destino, o traceroute é avisado e assim consegue traçar a rota.
Veja um exemplo de saída de um traceroute no Unix/Linux, partindo dos site da Rede Rio, para o endereço www.sdsc.edu:
$>
traceroute www.google.com
traceroute:
Warning: www.google.com has multiple addresses; using 64.233.163.103
traceroute
to www.l.google.com (64.233.163.103), 30 hops max, 40 byte packets
1 giga-bgp-cbpf.rederio.br (200.20.94.58) 0.951
ms 0.608 ms 0.557 ms
2 embratel-G4-0-gacc02.rjo.embratel.net.br
(200.179.69.29) 0.620 ms 0.635 ms 9.604 ms
3 ebt-T0-5-5-0-21-tacc01.rjoen.embratel.net.br (200.244.163.229)
1.437 ms 1.225 ms 1.250 ms
4 peer-T0-0-4-0-tacc01.rjoen.embratel.net.br
(201.73.51.10) 14.523 ms 14.199 ms 8.702 ms
5 209.85.250.242 (209.85.250.242) 6.901 ms
209.85.250.248 (209.85.250.248) 6.692 ms 42.002 ms
6 72.14.233.93 (72.14.233.93) 9.222 ms
7.004 ms 130.829 ms
7 64.233.175.58 (64.233.175.58) 12.911 ms
7.495 ms 117.822 ms
8 bs-in-f103.google.com (64.233.163.103) 7.673
ms 7.754 ms 7.117 ms
Rastreamento completo.
A saída do traceroute indica para cada HOP (ponto de roteamento do pacote IP), o tempo de três pacotes enviados e o endereço do roteador correspondente. Montando a sequência de 1 até o final, podemos ver por onde o pacote IP foi roteado até o destino.
O traceroute funciona enviando sucessivos pacotes IP de ping com o valor do TTL iniciando em 1 e aumentando até o ping ser respondido pelo destino. Isso faz com que o pacote IP "morra" cada vez mais longe da origem. Para cada vez que o TTL chega a zero (o pacote "morre"), o roteador onde isso ocorreu envia um pacote ICMP para a origem. Desta forma a origem tem como saber qual é o endereço do roteador onde o pacote IP morreu e consequentemente a rota dele até o destino!
Utilizando o site http://www.subnetonline.com/pages/network-tools/online-traceroute.php execute traceroute para cada um dos endereços abaixo e veja qual é a rota traçada.
1. Google: www.google.com
2. Rede Rio Computadores: guanabara.rederio.br
3.
4. Subnet Online: www.subnetonline.com
Agora faça o mesmo traceroute a partir de http://guanabara.rederio.br/cgi-bin/nph-traceroute
Você observou diferenças nos resultados? A que se devem as diferenças? Qual o traceroute com menos HOPs e com mais HOPs em cada um dos testes? Você acha que um TTL máximo de 255 atende à necessidade da maioria das redes?
O site www.traceroute.org disponibiliza vários links para sites espalhados pelo a partir dos quais é possível fazer o traceroute. Tente executar o traceroute a partir de alguns desses sites (alguns podem não estar funcionando!) para a fabrai (www.fabrai.br).
Veja abaixo um exemplo de saída de traceroute em uma rede mal configurada ou com problemas de rota. Os pacotes ficam trafegando entre os IPs 200.192.56.163 e 200.192.56.161. O traceroute tem um limite de 30 rotas por default. Se qualquer rota ultrapassar este limite, o programa termina, mas isso pode ser alterado (observação: o problema abaixo .
traceroute
to 200.190.226.221 (200.190.226.221), 30 hops max, 40 byte packets
1
ithaca.i2.com.br (200.238.196.17) 0.892 ms 0.88 ms 0.836 ms
2
i2-gw.pop-mg.rnp.br (200.17.183.49) 9.694 ms 9.805 ms 72.695
ms
3
arrozdoce.pop-mg.com.br (200.236.165.199) 47.173 ms 57.568 ms
9.666 ms
4 casadinho-a3.pop-mg.rnp.br (200.17.183.209) 35.299 ms 29.25 ms 14.784 ms
5 pop-mg-rnp-br-S3-7-acc01.bhe.embratel.net.br (200.251.254.73) 30.479 ms 47.494 ms 32.554 ms
6 ebt-F5-0-dist01.bhe.embratel.net.br (200.255.153.66) 46.537 ms 47.471 ms 48.432 ms
7
netstream-S3-0-dist01.bhe.embratel.net.br (200.251.12.50) 1201.36
ms 226.436 ms netstream-S3-1-dist01.bhe.embratel.net.br
(200.251.12.54) 293.001 ms
8
200.192.56.163 (200.192.56.163) 294.807 ms 1316.43 ms 171.37
ms
9
200.192.56.161 (200.192.56.161) 157.437 ms 66.189 ms 82.82 ms
10
200.192.56.163 (200.192.56.163) 1263.75 ms 879.158 ms 180.572
ms
11
200.192.56.161 (200.192.56.161) 147.899 ms 80.226 ms 148.109
ms
12
200.192.56.163 (200.192.56.163) 190.791 ms 1760.4 ms 152.392
ms
13
200.192.56.161 (200.192.56.161) 97.871 ms 130.071 ms 216.73
ms
14
200.192.56.163 (200.192.56.163) 193.109 ms 109.728 ms 132.562
ms
15
200.192.56.161 (200.192.56.161) 119.146 ms 132.605 ms 104.369
ms
16
200.192.56.163 (200.192.56.163) 239.958 ms 139.003 ms 125.818
ms
17
200.192.56.161 (200.192.56.161) 77.857 ms 107.275 ms 163.703
ms
18
200.192.56.163 (200.192.56.163) 170.308 ms 96.406 ms 90.269
ms
19
200.192.56.161 (200.192.56.161) 154.676 ms 61.096 ms 179.464
ms
20 200.192.56.163
(200.192.56.163) 196.048 ms 150.234 ms 144.485 ms
21
200.192.56.161 (200.192.56.161) 111.255 ms 75.791 ms 108.033
ms
22
200.192.56.163 (200.192.56.163) 98.99 ms 294.196 ms 298.766
ms
23
200.192.56.161 (200.192.56.161) 148.568 ms 147.442 ms 119.248
ms
24
200.192.56.163 (200.192.56.163) 233.132 ms 232.526 ms 213.243
ms
25
200.192.56.161 (200.192.56.161) 101.576 ms 101.769 ms 147.615
ms
26
200.192.56.163 (200.192.56.163) 148.876 ms 189.746 ms 259.251
ms
27
200.192.56.161 (200.192.56.161) 74.61 ms 130.222 ms 1652.72
ms
28
200.192.56.163 (200.192.56.163) 233.248 ms 161.242 ms 146.573
ms
29
200.192.56.161 (200.192.56.161) 143.745 ms 131.513 ms 122.557
ms
30 200.192.56.163 (200.192.56.163) 144.07 ms 165.208 ms 182.307 ms
O utilitário nslookup
O utilitário nslookup serve para traduzir nomes de domínio para os números IP correspondentes. Este utilitário consulta os servidores de DNS (Domain Name Service) espalhados na Internet para resolver uma consulta e descobrir o endereço.
O nslookup ao contrário dos outros utilitários vistos até agora, oferece um prompt para o usuário digitar nomes de domínios para consulta. Veja abaixo um exemplo de execução do nslookup:
C:\>nslookup
Servidor padrao: teste.com
Address:
200.70.201.33
> server
4.2.2.1
Servidor
padrÒo: vnsc-pri.sys.gtei.net
Address:
4.2.2.1
>
www.fabrai.br
Servidor:
vnsc-pri.sys.gtei.net
Address: 4.2.2.1
Não é resposta de autorização:
Nome = www.fabrai.br
Address: 201.17.147.55
> set
type=mx
>
mg.gov.br.
Servidor: vnsc-pri.sys.gtei.net
Address: 4.2.2.1
Não é resposta de autorização:
mg.gov.br MX preference = 1, mail exchanger = asmail.prodemge.gov.br
>
O que foi digitado pelo usuário está
Pode-se usar o comando help para ter acesso aos demais comandos do nslookup. Veja a saída de um help do nslookup no unix:
> help
$Id:
nslookup.help,v 8.4 1996/10/25 18:09:41 vixie Exp $
Commands:
(identifiers are shown in uppercase, [] means optional)
NAME
- print info about the host/domain NAME using default server
NAME1
NAME2 - as above, but use NAME2 as server
help or
? - print info on common commands; see
nslookup(1) for details
set
OPTION - set an option
all - print options, current
server and host
[no]debug - print debugging information
[no]d2 - print exhaustive debugging information
[no]defname - append domain name to each query
[no]recurse - ask for recursive answer to query
[no]vc - always use a virtual circuit
domain=NAME - set default domain name to NAME
srchlist=N1[/N2/.../N6] - set domain to N1 and search list to N1,N2, etc.
root=NAME - set root server to NAME
retry=X - set number of retries to X
timeout=X - set initial time-out interval to X seconds
querytype=X - set query type, e.g.,
A,ANYÇNAME,HINFO,MX,PX,NS,PTR,SOA,TXT,WKS,SRV,NAPT
R
port=X - set port number to send query on
type=X - synonym for querytype
class=X - set query class to one of IN (Internet),
CHAOS, HESIOD or ANY
server
NAME - set default server to NAME, using current
default server
lserver
NAME - set default server to NAME, using initial server
finger
[USER] - finger the optional USER at the current default host
root
- set current default server to the root
ls [opt]
DOMAIN [> FILE] - list addresses in DOMAIN (optional: output to FILE)
-a - list canonical
names and aliases
-h - list HINFO
(CPU type and operating system)
-s - list
well-known services
-d - list all
records
-t TYPE - list records of the given type (e.g.,
AÇNAME,MX, etc.)
view
FILE - sort an 'ls' output file and view it
with more
exit
- exit the program, ^D also exits
>
Descubra os endereços IP das máquinas que podem receber e-mail das seguintes empresas, usando o site http://www.kloth.net/services/nslookup.php:
1. Vivo - vivo.com.br
2. Transmeta (nos USA) - transmeta.com
3. British Telecom da Espanha - bt.es
O utilitário netstat
O netstat serve para mostrar as conexões ativas atualmente
com a máquina
Exibir estatísticas de protocolo e conexões de rede TCP/IP atuais.
NETSTAT [-a] [-e] [-n] [-s] [-p proto] [-r] [intervalo]
-a Exibe todas as conexões e portas de escuta.
-e Exibe estatísticas Ethernet. Isso pode ser combinado à
opção -s.
-n Exibe endereços e números de porta em formato numérico.
-p proto Exibe conexões para o protocolo especificado por proto; proto
pode ser tcp ou udp. Se usado com a opção -s para exibir
estatísticas por protocolo, proto pode ser tcp, udp ou ip.
-r Exibe o conteúdo da tabela de roteamento.
-s Exibe estatísticas por protocolo. Por padrão, as estatísticas
são mostradas para TCP, UDP e IP; a opção -p pode ser usada
para especificar um subconjunto do padrão.
intervalo Exibe novamente uma estatística selecionada, fazendo pausas de
intervalos de segundos entre cada tela. Pressione CTRL+C para
interromper a nova exibição das estatísticas. Caso omitido,
netstat imprimirá as informações de configuração uma vez.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
O comando netstat pode ser usado no ambiente Linux (e na maioria dos Unix) da forma descrita abaixo (pagina de manual - man page da distribuição Linux Fedora).
netstat
* NOME
* SINOPSE
* DESCRIÇÃO
*
o (sem opções)
o -r, --route
o -i, --interface iface
o -M, --masquerade
o -s, --statistics
* OPÇÕES
*
o -v, --verbose
o -n, --numeric
o -A, --af família
o -c, --continuous
* SAÍDA
*
o Conexões Internet Ativas (TCP, UDP, RAW)
o Proto
o Recv-Q
o Send-Q
o Endereço Local
o Endereço Remoto
o Estado
o Usuário
o Temporizador
o UNIX domain sockets Ativos
o Proto
o CntRef
o Flags
o Tipos
o Estados
o Path
o Sockets IPX ativos
o Sockets NET/ROM ativos
o Sockets AX.25 ativos
NOME
netstat - Mostra conexões de rede, tabelas de roteamento, estatísticas de interface e conexões mascaradas.
SINOPSE
netstat [-venaoc] [--tcp|-t] [--udp|-u] [--raw|-w] [--unix|-x] [--inet|--ip] [--ax25] [--ipx] [--netrom]
netstat [-veenc] [--inet] [--ipx] [--netrom] [--ddp] [--ax25] {--route|-r}
netstat [-veenac] {--interfaces|-i} [iface]
netstat [-enc] {--masquerade|-M}
netstat {--statistics|-s}
netstat {-V|--version} {-h|--help}
DESCRIÇÃO
netstat mostra informações do subsistema de rede do Linux.
(sem opções)
Você pode ver o estado das conexões de rede através da listagem dos sockets abertos. Esta é a operação padrão: se você não especificar nenhuma família de endereços, os sockets ativos de todas as famílias de endereços configuradas serão mostrados. Com -e você obterá informações adicionais (userid). Com a chave -v você poderá fazer com que o netstat reclame sobre famílias de endereços conhecidas que não sejam suportadas pelo kernel. A opção -o mostra algumas informações adicionais sobre temporizadores de rede. -a mostra todos os sockets, incluindo sockets de servidores. A família de endereços inet mostrará sockets raw, udp e tcp.
-r, --route
Com a opção -r, --route você obterá as tabelas de roteamento do kernel no mesmo formato usado por route -e. netstat -er usará o formato de apresentação do comando route. Por favor veja route(8) para maiores detalhes.
-i, --interface iface
Se você usar a opção -i, --interfaces , uma tabela de todas (ou da iface especificada) as interfaces de rede será mostrada. A saída usa o formato ifconfig -e , e é descrita em ifconfig(8). netstat -ei mostrará uma tabela ou uma entrada de interface como ifconfig mostra. Com a chave -a , você pode incluir interfaces que não estejam configuradas (i.e. não tem a flag U=UP configurada).
-M, --masquerade
Uma lista de todas as sessões mascaradas também pode ser
vista. Com a chave -e você pode incluir mais algumas informações sobre
numeração sequencial e deltas , causados por reescritas de dados
-s, --statistics
Mostra estatísticas sobre o subsistema de rede do kernel do Linux, que são lidas a partir de /proc/net/snmp.
OPÇÕES
-v, --verbose
Informa ao usuário o que está ocorrendo, sendo detalhado. Especialmente mostra algumas informações úteis sobre famílias de endereços não configuradas.
-n, --numeric
Mostra endereços numéricos, sem tentar resolver os nomes da máquina, porta ou usuário.
-A, --af família
Usa um método diferente para configurar as famílias de endereços. família é uma lista de palavras-chave de famílias de endereços separadas por vírgulas (',') como inet, unix, ipx, ax25, netrom e ddp. Tem o mesmo efeito de usar as opções longas --inet, --unix, --ipx, --ax25, --netrom e --ddp.
-c, --continuous
Isto fará com que netstat mostre a tabela selecionada a cada segundo, continuamente na tela até que você o interrompa.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Use o netstat para mostrar todas as conexões e portas de escuta da sua máquina (LISTENING). A saída é mostrada em 4 colunas. Na primeira está o protocolo, na segunda o endereço da conexão na porta local. A terceira coluna mostra o endereço na máquina remota (o endereço da máquina e a porta TCP da conexão) e a quarta coluna mostra o estado da conexão (ESTABLISHED, LISTENING, CLOSE_WAIT, etc).
Use a opção -r para mostrar o conteúdo da tabela de roteamento da sua estação. Essa tabela mostra para qual endereço cada pacote deve ser enviado em função do seu endereço IP. Desta forma, a máquina garante que o pacote será entregue para a máquina de destino corretamente.
Execute os seguintes comandos, com o
utilitário netstat. Caso não consiga executá-los em sua máquina Windows, baixe
o utilitário Putty.exe a partir do link http://www.lnaffah.com/PUTTY.EX_
Renomeie o arquivo com a extensão EXE após baixá-lo. Execute-o e faça acesso ao servidor 10.39.20.1, com o usuário redes e a senha redes.
a)
netstat –s
b)
netstat –nr
c) netstat –a
Explique
o que você viu em cada um deles.
Baseado em exercícios elaborados pelo Prof. Lindenberg Naffah Ferreira e em exercícios elaborados pelo Prof. Rodrigo Otávio R. Antunes