O PING é realmente um cliente.
O comando ping também usa uma parte do protocolo ICMP, ou seja, resposta de eco (mensagem tipo ICMP 0) e solicitação de eco (tipo de mensagem ICMP 8).
Muitos profissionais e software de monitoramento de rede usam o processamento de mensagens ICMP bem-sucedidas de solicitação / resposta de eco como um indicador de que um sistema está ativo / inativo. No entanto, esta é uma convenção e não estritamente obrigatória. Por exemplo, posso definir no Nagios que monitorarei meus servidores Linux com a porta SSH TCP / 22 em vez de usar PINGs.
O conceito como uma conexão estabelecida não existe, por si só, como nas conexões TCP. O ICMP não é um protocolo orientado por conexão.
Como afirmado anteriormente, o conceito de port também não existe - o kernel do Linux processa um pacote ICMP e lança uma resposta a ele de acordo, esquecendo-se da ação (ignorando outros mecanismos como limitação de taxa, por exemplo). / p>
Ping também está disponível para o usuário com privilégios especiais, ou tem que ser um binário setuid, já que usa soquetes RAW para fabricar um pacote ICMP.
Você também pode definir se os kernels respondem ou não a uma mensagem de solicitação de eco ICMP com uma configuração sysctl / proc.
Para desativar a resposta aos pings do ICMP, faça o seguinte:
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
Ou para ativá-lo novamente:
echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_all
Quanto à parte do kernel responsável por manipular mensagens ICMP, ela é encontrada em icmp.c
nas origens do kernel Linux, como em link
Quanto ao pacote ICMP, veja esta imagem:
Quanto a mais definições do kernel:
linux / icmp.h
#define ICMP_ECHOREPLY 0 /* Echo Reply */
#define ICMP_ECHO 8 /* Echo Request */