ICMP
$ ping -c 3 guiadohardware.net
PING
guiadohardware.net (64.246.6.25) 56(84) bytes of data. O "-c" indica o número de repetições, neste caso 3. Sem ele, o ping fica enviando pacotes indefinidamente (no Linux), até que você aborte o programa pressionando Ctrl+C. Assim como outros comandos básicos, o ping também está disponível no Windows, através do prompt do MS-DOS. Normalmente, os pings para qualquer servidor na Internet (com exceção dos servidores do seu provedor de acesso, ou outros servidores muito próximos), voltam com pelo menos 100 milessegundos de atraso. Quanto mais distante geograficamente estiver o servidor, ou quanto mais saturado estiverem os roteadores e links até ele, maior será o tempo de resposta. Um ping muito alto faz com que o carregamento de páginas seja mais demorado (pois o ping determina o tempo necessário para cada requisição do navegador chegar até o servidor) e atrapalha principalmente quem joga online, ou usa programas de administração remota, como o SSH. No meu caso, consegui pings de apenas 8 ms até o servidor do Guia do Hardware, pois "trapaceei", acessando via SSH um outro servidor ligado ao mesmo backbone que ele e rodando o ping a partir dele :). A resposta a pings pode ser desativada na configuração do sistema. No Linux, você pode usar o comando abaixo: # echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all É possível também desativar a resposta a pings na configuração do firewall, de forma que, o fato de um micro da internet, ou mesmo dentro da sua rede local não responder a pings não significa muita coisa. Se ele responder, significa que está online; se não responder, significa que pode estar online também, porém configurado para não responder aos seus chamados :P. Outra função importante do ICMP é o controle do TTL (time to live) de cada pacote TCP ou UDP. Os pacotes tem vida curta e sua única função é carregar os dados até o destino. Eles são transmitidos de um roteador a outro e, uma vez que chegam ao destino, são desmontados e destruídos. Mas, o que acontece em casos onde não existe uma rota possível até o destino, seja por que a máquina está desligada, por erro no endereçamento, ou por um problema em algum dos links? Existem duas possibilidades. A primeira é um roteador próximo perceber que a máquina está fora do ar e destruir o pacote. Neste caso, ele responde ao emissor com um pacote ICMP "Destination Unreachable", avisando do ocorrido. Caso isso não aconteça, o pacote fica circulando pela rede, passando de um roteador a outro, sem que consiga chegar ao destino final. O TTL existe para evitar que estes pacotes fiquem em loop eterno, sendo retransmitidos indefinidamente e assim consumindo banda de forma desnecessária. Graças a ele, os pacotes têm "vida útil". O pacote é criado com um TTL de 64 hops (o default nas versões atuais do Linux). Cada vez que o pacote passa por um roteador, o número é reduzido em um. Se o número chegar a zero, o roteador destrói o pacote e avisa o emissor enviando um pacote ICMP "Time Exceeded". No Linux, o TTL padrão é configurável através do arquivo "/proc/sys/net/ipv4/ip_default_ttl". Você pode brincar com isso alterando o valor padrão por um número mais baixo, como em: # echo 8 > /proc/sys/net/ipv4/ip_default_ttl Com um valor tão baixo, os pacotes gerados pela sua máquina terão vida curta, e não conseguirão atingir hosts muito distantes. Você vai continuar conseguindo acessar a página do seu provedor, por exemplo, mas não conseguirá acessar servidores geograficamente distantes. Para retornar o valor padrão, use o comando: # echo 64 > /proc/sys/net/ipv4/ip_default_ttl Os pacotes ICMP "Time Exceeded" são usados pelo comando "traceroute" (no Linux) para criar um mapa dos caminho percorrido pelos pacotes até chegarem a um determinado endereço. Ele começa enviando um pacote com um TTL de apenas 1 hop, o que faz com que ele seja descartado logo pelo primeiro roteador. Ao receber a mensagem de erro, o traceroute envia um segundo pacote, desta vez com TTL de 2 hops, que é descartado no roteador seguinte. Ele continua, enviando vários pacotes, aumentando o TTL em 1 hop a cada tentativa. Isso permite mapear cada roteador por onde o pacote passa até chegar ao destino, como em: $ traceroute kurumin.com.br
1 10.62.0.1
(10.62.0.1) 7.812 ms 6.262 ms 9.966 ms
Neste exemplo, o pacote começa passando pelos links da Net (Virtua), passa em seguida por vários roteadores da Embratel, passando por São Paulo e Miami (já nos EUA), para então passar por roteadores da Alter.net e Savvis, até chegar ao destino final. O Windows inclui o comando "tracert", que atua de forma similar, porém enviando um ping para cada host. O resultado acaba sendo similar, com exceção de casos em que o servidor é configurado para não responder a pings. Existem ainda vários exemplos de programas gráficos, como o Neotrace (para Windows), que você encontra em qualquer site de downloads e o Xtraceroute (para Linux). Eles exibem as mesmas informações, porém de uma forma bem mais agradável. Este é um exemplo do Neotrace mostrando uma conexão especialmente ruim com um servidor hospedado no exterior, a partir de um link ADSL da Brasil Telecom. Veja que o problema começa num roteador congestionado, da própria operadora (com tempo de resposta de mais de 1200 ms!) e continua numa seqüência de links lentos da wcg.net:
Na internet, os roteadores são espertos o suficiente para conhecerem os roteadores vizinhos e escolher a melhor rota para cada destino. Sempre que um roteador fica congestionado, os demais passam a evitá-lo, escolhendo rotas alternativas. Esta comunicação é feita através de pacotes ICMP "Redirect", que avisam o emissor que uma rota mais rápida está disponível e os pacotes seguintes devem ser encaminhados através dela. Durante as transferências de dados, os pacotes ICMP são usados também para regular a velocidade da transmissão, fazendo com que o servidor envie pacotes na maior velocidade possível permitida pelo link, sem entretanto sobrecarregar o link do cliente. Sempre que um dos roteadores pelo caminho, percebe que o link está saturado, envia um pacote ICMP "Source Quench", que faz o servidor reduzir a velocidade da transmissão. Sem isso, os pacotes excedentes seriam descartados, causando um grande desperdício de banda.
» Próximo: ARP Você está lendo o livro Redes e Servidores Linux 2ed. (publicado em 2006). Se se está em busca de um livro atualizado sobre servidores, leia o Servidores Linux, Guia Prático, que oferece informações atualizadas:
Autor: Carlos E. Morimoto
Páginas: 736 Formato: 23 x 16 cm Editora: GDH Press e Sul Editores ISBN: 978-85-99593-13-4 Lançado em: Agosto de 2008 » R$ 76,00 + frete (Preço nas livrarias: R$ 96) » Compre o seu Descrição: O livro Redes e Servidores Linux - Guia Prático foi nosso primeiro best-seller, vendendo um total de 8.000 exemplares em suas duas edições. O processo de atualização do livro acabou dando origem a dois livros separados. O primeiro deles é o livro Redes - Guia Prático, que aborda detalhes sobre a implantação e configuração de redes, abordando detalhes sobre os padrões de rede, configuração no Windows e Linux, configuração de redes wireless e outros temas. O livro Servidores Linux, Guia Prático é o segundo livro da série, que complementa o primeiro, oferecendo uma visão aprofundada sobre a configuração de servidores Linux. No livro você aprenderá a configurar tanto servidores de rede local quanto servidores dedicados, incluindo a configuração do Squid, Samba, Apache, SSH, LTSP, Postfix, Iptables, Bind, Quota e outros serviços. O livro inclui também capítulos sobre virtualização e sobre hardware para servidores, que complementam as informações abordadas nos demais. Veja também nossos livros Hardware, o Guia Definitivo, Redes, Guia Prático, Smartphones, Guia Prático e Linux, Guia Prático, nossos outros lançamentos. |
|