Comando ping do Linux
Em sistemas operacionais do tipo Unix, o comando ping envia pacotes ICMP ECHO_REQUEST aos hosts da rede.
Este documento cobre a versão Linux do ping .
Descrição
de ping é uma maneira simples de enviar rede de dados para, e receber dados de rede de, outro computador em uma rede. É freqüentemente usado para testar, no nível mais básico, se outro sistema pode ser acessado através de uma rede e, em caso afirmativo, quanto tempo leva para que esses dados sejam trocados.
O utilitário ping usa o datagrama ECHO_REQUEST obrigatório do protocolo ICMP para obter um ECHO_RESPONSE do ICMP de um host ou gateway . Os datagramas ECHO_REQUEST (“pings”) têm um cabeçalho IP e ICMP , seguido de um tim de estrutura e, em seguida, um número arbitrário de bytes “pad” usados para preencher o pacote.
Sintaxe
ping [-LRUbdfnqrvVaAB] [-c count ] [-m mark ] [-i interval ] [-l preload ] [-p padrão ] [-s tamanho do pacote ] [-t ttl ] [-w deadline ] [-F flowlabel ] [-I interface ] [-M dica ] [ -Nopção ] [-Q tos ] [-S sndbuf ] [-T opção de carimbo de data / hora ] [-W timeout ] [ hop ...] destination
Opções
-uma | Ping audível. | ||||||||||||||||||||||||
-UMA | Ping adaptável. O intervalo entre pacotes se adapta ao tempo de ida e volta, para que efetivamente não mais de um (ou mais, se a pré-carga estiver definida) sondas não respondidas estejam presentes na rede. O intervalo mínimo é de 200 ms para qualquer usuário que não seja o superusuário . Em redes com baixo RTT (tempo de ida e volta), esse modo é essencialmente equivalente ao modo de inundação (consulte -f , abaixo). | ||||||||||||||||||||||||
-b | Permitir ping em um endereço de broadcast . | ||||||||||||||||||||||||
-B | Não permita que o ping altere o endereço de origem das análises. O endereço está vinculado a um selecionado quando o ping é iniciado. | ||||||||||||||||||||||||
-m marca | use mark para marcar os pacotes que saem. Isso é útil por vários motivos no kernel , como o roteamento de políticas para selecionar o processamento de saída específico. | ||||||||||||||||||||||||
-c count | Pare após enviar a contagem de pacotes ECHO_REQUEST. Com a opção de prazo , o ping aguarda a contagem de pacotes ECHO_REPLY, até o tempo limite expirar. | ||||||||||||||||||||||||
-d | Defina a opção SO_DEBUG no soquete que está sendo usado. Esta opção de soquete não é usada pelo kernel do Linux . | ||||||||||||||||||||||||
-f | Ping de inundação. Para cada ECHO_REQUEST enviado, um ponto (” . “) É impresso, enquanto para cada ECHO_REPLY recebido, um backspace é impresso. Isso fornece uma exibição rápida de quantos pacotes estão sendo descartados. Se um intervalo não for fornecido (consulte -i , abaixo), ele define o intervalo como zero e gera pacotes tão rapidamente quanto retornam ou cem vezes por segundo, o que for maior. Somente o superusuário pode usar esta opção com um intervalo de zero. | ||||||||||||||||||||||||
intervalo -i | Aguarde o intervalo de segundos entre o envio de cada pacote. O padrão é esperar um segundo entre cada pacote normalmente ou não esperar no modo flood (veja -f , acima). Somente o superusuário pode definir o intervalo para valores inferiores a 0,2 segundos. | ||||||||||||||||||||||||
-I endereço da interface | Defina o endereço de origem para o endereço de interface especificado. O argumento pode ser um endereço IP numérico ou o nome do dispositivo. Ao executar ping em endereços locais de link IPv6 , essa opção é necessária. | ||||||||||||||||||||||||
-l pré-carga | Se a pré – carga for especificada, o ping enviará muitos pacotes sem aguardar resposta. Somente o superusuário pode selecionar uma pré – carga superior a 3 . | ||||||||||||||||||||||||
-EU | Suprimir o loopback de pacotes multicast . Este sinalizador se aplica apenas se o destino do ping for um endereço multicast. | ||||||||||||||||||||||||
-N nioption | Envie consultas de informações do nó ICMPv6 ( RFC 4620), em vez de solicitações de eco. nioption pode ser um dos seguintes:
| ||||||||||||||||||||||||
-n | Somente saída numérica. Nenhuma tentativa será feita para procurar nomes simbólicos para endereços de host. | ||||||||||||||||||||||||
-p padrão | Você pode especificar até 16 bytes “pad” para preencher o pacote enviado. Isso é útil para diagnosticar problemas dependentes de dados em uma rede. Por exemplo, -p ff fará com que o pacote enviado seja preenchido com todos os itens : ff é 255 em hexadecimal ou 11111111 em binário . | ||||||||||||||||||||||||
-D | Imprima o registro de data e hora ( hora unix + microssegundos) antes de cada linha. | ||||||||||||||||||||||||
-Q tos | Defina os bits relacionados à qualidade de serviço nos datagramas ICMP. Este pode ser um número decimal ou hexadecimal. Tradicionalmente (RFC1349), eles são interpretados como: 0 para reservado (atualmente sendo redefinido como controle de congestionamento), 1 – 4 para TOS (tipo de serviço) e 5 – 7 para precedência. As configurações possíveis para o tipo de serviço são: custo mínimo: 0x02 , confiabilidade: 0x04 , rendimento: 0x08 , atraso baixo: 0x10 . Múltiplos bits TOS não devem ser definidos simultaneamente. As configurações possíveis para precedência especial variam de prioridade ( 0x20 ) a controle de rede (0xe0 ). Você deve ser root (recurso CAP_NET_ADMIN) para usar o valor de precedência Crítica ou superior. Você não pode definir o bit 0x01 (reservado), a menos que o ECN esteja ativado no kernel. Em RFC2474, estes campos são redefinidos como 8 bits Serviços diferenciadas (DS), que consistem de: bits 0 – 1 de dados separados (ECN serão utilizados, aqui), e bits de 2 – 7 de DiffServ Codepoint (DSCP). | ||||||||||||||||||||||||
-q | Saída silenciosa. Nada é exibido, exceto as linhas de resumo no momento da inicialização e quando terminar. | ||||||||||||||||||||||||
-R | Gravar rota. Inclui a opção RECORD_ROUTE no pacote ECHO_REQUEST e exibe o buffer de rota nos pacotes retornados. Observe que o cabeçalho IP é grande o suficiente apenas para nove dessas rotas. Muitos hosts ignoram ou descartam essa opção. | ||||||||||||||||||||||||
-r | Ignore as tabelas de roteamento normais e envie diretamente para um host em uma interface conectada . Se o host não estiver em uma rede conectada diretamente, um erro será retornado. Esta opção pode ser usada para executar ping em um host local por meio de uma interface que não possui rota, desde que a opção -I também seja usada (veja acima). | ||||||||||||||||||||||||
-s tamanho da embalagem | Especifica o número de bytes de dados a serem enviados. O padrão é 56 , que se traduz em 64 bytes de dados ICMP quando combinados com os 8 bytes de dados do cabeçalho ICMP. | ||||||||||||||||||||||||
-S sndbuf | Definir soquete sndbuf . Se não especificado, é selecionado para armazenar em buffer não mais que um pacote. | ||||||||||||||||||||||||
-t ttl | Defina o IP TTL (tempo de vida útil). | ||||||||||||||||||||||||
-T timestamp-option | Defina opções especiais de data e hora do IP. timestamp-opção pode ser tsonly (apenas as datas), tsandaddr (hora e os endereços) ou anfitrião1 tsprespec [ host2 [ host3 [ Host4 ]]] (lúpulo timestamp pré-especificado). | ||||||||||||||||||||||||
-M dica | Selecione a estratégia de descoberta do Path MTU . a dica pode ser do tipo (proibir a fragmentação, mesmo local), querer (fazer a descoberta do PMTU, fragmentar localmente quando o tamanho do pacote for grande) ou não (não definir o sinalizador DF). | ||||||||||||||||||||||||
-VOCÊ | Imprimir latência completa de usuário para usuário ( comportamento de ping herdado ). Normalmente, o ping imprime o tempo de ida e volta da rede, que pode ser diferente por causa de falhas no DNS . | ||||||||||||||||||||||||
-v | Saída detalhada . | ||||||||||||||||||||||||
-V | Exibe o número da versão e sai. | ||||||||||||||||||||||||
-w prazo | Especifique um tempo limite, em segundos, antes da saída do ping, independentemente de quantos pacotes foram enviados ou recebidos. Nesse caso, o ping não para após o envio do pacote de contagem , ele espera o prazo expirar ou até que as sondas de contagem sejam respondidas ou por alguma notificação de erro da rede. | ||||||||||||||||||||||||
-W timeout | Hora de esperar por uma resposta, em segundos. A opção afeta apenas o tempo limite na ausência de respostas, caso contrário, o ping aguarda dois RTTs. |
Notas
Ao usar o ping para isolamento de falhas, ele deve primeiro ser executado no host local , para verificar se a interface de rede local está em funcionamento. Em seguida, hosts e gateways cada vez mais distantes devem ser “pingados”. Os tempos de ida e volta e as estatísticas de perda de pacotes são calculados. Se pacotes duplicados são recebidos, eles não são incluídos no cálculo da perda de pacotes, embora o tempo de ida e volta desses pacotes seja usado no cálculo dos números mínimos / médios / máximos de tempo de ida e volta. Quando o número especificado de pacotes tiver sido enviado (e recebido) ou se o programa for finalizado com um sinal SIGINT , um breve resumo será exibido. Estatísticas de corrente mais curtas podem ser obtidas sem o término do processo com o sinal SIGQUIT .
Se o ping não receber nenhum pacote de resposta, ele sairá com o código 1 . Se uma contagem de pacotes e um prazo final forem especificados e menos pacotes contados forem recebidos quando o prazo chegar, ele também será encerrado com o código 1 . Em outro erro, ele sai com o código 2 . Caso contrário, ele sai com o código 0 . Isso torna possível usar o código de saída para verificar se um host está ativo ou não.
O ping destina-se ao uso em teste, medição e gerenciamento de rede. Devido à carga que pode impor na rede, não é aconselhável usar o ping durante operações normais ou a partir de scripts automatizados.
Detalhes do pacote ICMP
Um cabeçalho IP sem opções é 20 bytes. Um pacote ICMP ECHO_REQUEST contém 8 bytes adicionais no cabeçalho ICMP, seguidos por uma quantidade arbitrária de dados. Quando um tamanho de pacote é fornecido, isso indica o tamanho dessa parte extra de dados (o padrão é 56). Portanto, a quantidade de dados recebidos dentro de um pacote IP do tipo ICMP ECHO_REPLY sempre será 8 bytes a mais que o espaço de dados solicitado (o cabeçalho ICMP).
Se o espaço de dados tiver pelo menos o tamanho de estrutura temporal , o ping usará os bytes iniciais desse espaço para incluir um carimbo de data / hora que ele usa no cálculo dos tempos de ida e volta. Se o espaço para dados for menor, nenhum tempo de ida e volta será fornecido.
Pacotes duplicados e danificados
o ping reportará pacotes duplicados e danificados. Pacotes duplicados nunca devem ocorrer e parecem ser causados por retransmissões inadequadas no nível do link. As duplicatas podem ocorrer em muitas situações e raramente são (se alguma vez) um bom sinal, embora a presença de baixos níveis de duplicatas nem sempre seja motivo de alarme.
Pacotes danificados são sérios motivos de alarme e geralmente indicam hardware quebrado em algum lugar no caminho do pacote de ping (na rede ou nos hosts).
Tentando diferentes padrões de dados
A camada (inter) de rede nunca deve tratar pacotes de maneira diferente, dependendo dos dados contidos na parte de dados. Infelizmente, sabe-se que problemas dependentes de dados se infiltram nas redes e permanecem sem serem detectados por longos períodos de tempo. Em muitos casos, o padrão específico que apresenta problemas é algo que não possui “transições” suficientes, como todos ou todos os zeros, ou um padrão na borda, como quase todos os zeros. Não é necessariamente suficiente especificar um padrão de dados de todos os zeros (por exemplo) na linha de comando, porque o padrão de interesse está no nível do link de dados e o relacionamento entre o que você digita e o que os controladores transmitem pode ser complicado.
Isso significa que, se você tiver um problema dependente de dados, provavelmente precisará fazer muitos testes para encontrá-lo. Se você tiver sorte, poderá encontrar um arquivo que não possa ser enviado pela rede ou que demore muito mais para ser transferido do que outros arquivos de tamanho semelhante. Você pode examinar este arquivo para padrões repetidos que você pode testar usando a opção -p .
Detalhes TTL
O valor TTL (tempo de vida útil) de um pacote IP representa o número máximo de roteadores IP pelos quais o pacote pode passar antes de ser descartado. Na prática, você pode esperar que cada roteador na Internet diminua o campo TTL em exatamente um.
A especificação TCP / IP afirma que o campo TTL para pacotes TCP deve ser definido como 60, mas muitos sistemas usam valores menores (4,3 BSD usa 30, 4,2 usado 15).
O valor máximo possível desse campo é 255, e a maioria dos sistemas Unix define o campo TTL dos pacotes ICMP ECHO_REQUEST como 255. É por isso que você descobrirá que pode executar ping em alguns hosts, mas não alcançá-los com telnet ou ftp .
Em operação normal, o ping imprime o valor ttl do pacote que recebe. Quando um sistema remoto recebe um pacote de ping, ele pode fazer uma das três coisas com o campo TTL em sua resposta:
- Não mude; foi o que os sistemas Berkeley Unix fizeram antes do lançamento do 4.3 BSD Tahoe. Nesse caso, o valor TTL no pacote recebido será 255 menos o número de roteadores no caminho de ida e volta.
- Defina-o como 255; é isso que os atuais sistemas Berkeley Unix fazem. Nesse caso, o valor TTL no pacote recebido será 255 menos o número de roteadores no caminho do sistema remoto para o host de ping.
- Defina-o para outro valor. Algumas máquinas usam o mesmo valor para pacotes ICMP que usam para pacotes TCP, por exemplo, 30 ou 60. Outras podem usar valores completamente curinga.
Notas Adicionais
- Muitos hosts e gateways ignoram a opção RECORD_ROUTE.
- O tamanho máximo do cabeçalho IP é muito pequeno para que opções como RECORD_ROUTE sejam completamente úteis, embora não haja muito o que fazer sobre isso.
- O ping de inundação não é recomendado em geral, e o ping de inundação no endereço de broadcast deve ser feito apenas sob condições muito controladas.
Exemplos
sibile google.com
Faça ping no host google.com para ver se está vivo.
ping google.com -c 1
Faça ping no host google.com uma vez. A saída será semelhante ao seguinte:
PING google.com (204.228.150.3) 56 (84) bytes de dados. 64 bytes de www.google.com (204.228.150.3): icmp_seq = 1 ttl = 63 time = 0.277 ms --- estatísticas de ping do google.com --- 1 pacotes transmitidos, 1 recebido, 0% de perda de pacotes, tempo 0ms rtt min / média / máx / mdev = 0,267 / 0,267 / 0,267 / 0,000 ms
Comandos relacionados
host – Converta um nome de host em um endereço IP e vice-versa.
ifconfig – exibe ou modifica a configuração das interfaces de rede.
netstat – Imprime informações sobre conexões de rede, tabelas de roteamento, estatísticas de interface, conexões mascaradas e associações multicast.
rpcinfo – Relatar informações sobre chamadas de procedimento remoto.
traceroute – Rastreie a rota que os pacotes seguem para um host remoto.