Visual basic
Além do TCP e do UDP, temos o ICMP (Internet Control Message Protocol), um protocolo de controle, que opera no nível 3 do modelo OSI (junto com o protocolo IP). Ao contrário do TCP e UDP, o ICMP não é usado para a transmissão de dados, mas nem por isso deixa de desempenhar diversas funções importantes. A mais trivial delas é o ping, que usamos para verificar se uma determinada máquina está online, como em:
$ ping -c 3 guiadohardware.net
PING guiadohardware.net (64.246.6.25) 56(84) bytes of data.
64 bytes from gdhs.guiadohardware.net (64.246.6.25): icmp_seq=1 ttl=53 time=8.72 ms
64 bytes from gdhs.guiadohardware.net (64.246.6.25): icmp_seq=2 ttl=53 time=8.62 ms
64 bytes from gdhs.guiadohardware.net (64.246.6.25): icmp_seq=3 ttl=53 time=8.37 ms
--- guiadohardware.net ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms rtt min/avg/max/mdev = 8.373/8.576/8.728/0.183 ms
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