Certamente que já se deparou com uma situação em que a Internet no seu computador se interrompe subitamente. Este comportamento pode ser observado quando se utilizam modems ADSL, Wifi de longa distância, GSM e outras tecnologias semelhantes não fiáveis. Pode descobrir rapidamente se o seu computador tem Internet utilizando o utilitário ping.
No entanto, o âmbito da sua aplicação é muito mais vasto: é utilizado pelos administradores de rede para verificar a disponibilidade de um nó remoto na rede, é utilizado em vários guiões e em muitos outros locais. Neste artigo, vamos analisar o comando ping no Linux, falaremos sobre como usar o utilitário, como ele funciona, veremos suas opções e recursos.
O utilitário ping é uma ferramenta simples de resolução de problemas de rede. Ele permite verificar se um host remoto está disponível ou não e é isso. Para isso, o utilitário verifica se o host pode responder a solicitações de rede usando o protocolo ICMP. Espero não precisar de vos dizer que todos os dados na rede são transmitidos sob a forma de pequenos pacotes. O programa transmite um pequeno pacote de dados ICMP e espera receber um pacote de resposta; se isso acontecer, considera-se que o anfitrião remoto está contactável. O ICMP ou Internet Control Message Protocol é um complemento do protocolo IP utilizado para transmitir mensagens de serviço e de erro.
O protocolo ICMP só pode transmitir dois tipos de pacotes - mensagens de comunicação de erros e mensagens de pedido. Por sua vez, as mensagens de pedido dividem-se em:
Mensagem de pedido de eco;
Mensagem de resposta de eco.
De seguida, vamos perceber o que faz o comando ping
. Depois de enviar um pedido de ping
para um host remoto, o utilitário define um identificador exclusivo para cada pacote, bem como o TTL e a hora em que o pacote foi enviado. Se o host estiver acessível, ele envia uma resposta; com base no tempo de envio, o utilitário pode calcular o tempo de ida e volta do pacote. Em seguida, o próximo pacote é enviado. No final, é calculado o número total de pacotes enviados e recebidos, a percentagem de perda e outros dados.
Agora resta-nos um pouco de prática. Mas antes de entrarmos na prática, vamos ver a sintaxe do comando e suas opções. A sintaxe é bastante simples:
$ ping [options] host_address
O formato do comando ping
é muito simples. Pode passar um endereço ip ou um nome de domínio como endereço do anfitrião. As opções configuram o comportamento do utilitário. Vamos considerar as principais:
-4
- usa apenas ipv4 (padrão);
-6
- usa apenas ipv6;
-A
- modo adaptativo, o tempo entre o envio de um pacote é adaptado ao tempo de transmissão e receção do pacote, mas não inferior a 200 milissegundos;
-b
- permitir o ping do
endereço de difusão;
-c
- número de pacotes a enviar;
-D
- tempo de saída como carimbo de data/hora UNIX
;
-f
- modo de inundação, neste modo os pacotes são transmitidos sem atraso, ele pode ser usado para ataques DoS em nós individuais. O número de pontos que o utilitário produz indica o número de pacotes perdidos;
-i
- o intervalo em segundos entre o envio de pacotes;
-I
- usa esta interface de rede para enviar pacotes;
-l
- modo de sobrecarga, são enviados muitos pacotes e o sistema não monitoriza os pacotes de resposta;
-n
- não obter domínios para endereços ip;
-r
- ignora as tabelas de roteamento e envia o pacote para a interface especificada;
-s
- tamanho de um pacote;
-t
- define o TTL manualmente;
-v
- saída mais detalhada.
Agora que já cobrimos os parâmetros básicos do comando ping
e sua sintaxe, é hora de praticar, a seguir falaremos sobre como executar o ping em um host específico no Linux.
Para verificar o desempenho da rede é muito utilizado o ping de
algum site que esteja sempre disponível, como o google.com
ou até mesmo o mais simples e curto ya.ru.
Só precisa de passar este endereço ao utilitário nos parâmetros, ele próprio encontrará o ip e fará tudo o que for necessário:
$ ping ya.ru
Cada pacote recebeu um identificador único icmp_seq
, o número de nós até ao nó alvo ttl e o tempo gasto para entregar o pacote time
. Para parar o ping
, prima o atalho de teclado Ctrl+C. No final, o utilitário apresenta estatísticas gerais:
packets transmitted
(pacotes transmitidos) - pacotes enviados;
received
- pacotes recebidos;
perda de pacotes
- percentagem de pacotes perdidos;
tempo
- tempo total de trabalho;
rtt min/avg/max/mdev
- tempo mínimo/tempomédio/tempo máximo/desvio
quadrático.
Se o comando ping
não for interrompido, os pacotes podem ser enviados durante muito tempo, o que cria uma carga adicional no servidor e, por conseguinte, não é desejável. É possível limitar o número de pacotes enviados imediatamente na chamada do comando usando a opção -c
:
$ ping -c 3 ya.ru
Tal como fazemos ping
para um domínio, pode especificar diretamente o endereço IP. Isto permite-lhe verificar se existe uma rede quando os servidores DNS estão mal configurados. Por exemplo:
$ ping -c 3 8.8.8.8
O próximo tipo de envio de mensagens ping
é o ping
flood. Com a ajuda destes pacotes, pode efetuar testes de carga do canal ou mesmo desligar a ligação à Internet de uma das máquinas. Mas estas funções só podem ser utilizadas com direitos de superutilizador. Para organizar uma inundação de ping, especifique a opção -f
:
$ ping -f losst.ru
Por defeito, no modo normal, cada pacote seguinte é enviado quando é recebida uma resposta ao anterior. Mas pode definir o intervalo entre o envio de pacotes -i
:
$ ping -i 0.2 losst.ru
Aqui o programa ping
executa uma chamada inundação configurável, especificando a intensidade com que deseja enviar os pacotes. Com a opção -D
pode ver o Unix Timestamp de cada mensagem:
$ ping -D losst.ru
Vimos o que é o comando ping
no Linux, como usá-lo, parâmetros básicos e métodos de aplicação. Esta ferramenta muito simples pode ser usada para testar problemas de rede e corrigi-los. Neste aspeto, o utilitário pode tornar-se indispensável.