Ping / Trace Route

1

Cada vez mais vejo programadores desenvolvendo aplicativos baseados na web, baseados no que chamo de mentalidade "ping-then-do". Um exemplo seria o aplicativo que pinga o servidor de email antes de enviar o email. Em um debate bastante acalorado em outro fórum, fiz esta declaração: "Se você vai escrever programas que usam a internet, você deve pelo menos ter uma idéia básica dos fundamentos. O desejo de" ping-then-do "me diz que muitos que são, não fazem. "

Neste fórum e no Stack Overflow, vejo várias perguntas sobre a rota ping / trace e pergunto por quê? Se é aceitável ter uma discussão sobre isso aqui, gostaria de ouvir o que os outros pensam. Se não, presumo que será fechado rapidamente.

Um esclarecimento - quero deixar claro que estou falando de tráfego de internet, não de redes privadas.

    
por dbasnett 03.04.2010 / 14:42

5 respostas

8

Na minha experiência, muitos programadores não entendem o que o ping é e o que não é. Muitas vezes encontrei aqueles que pensam que, se conseguirem fazer ping em alguma coisa, podem usar o serviço X em execução nessa coisa. E há também aqueles que pensam que, se não conseguem fazer o ping, não podem usá-lo. Ambas as suposições são falsas.

Por isso, não podemos restringir os aplicativos de rede apenas àqueles que compreendem totalmente a rede do que podemos restringir os aplicativos de banco de dados àqueles que compreendem totalmente os bancos de dados. Se o fizéssemos, veríamos muito menos aplicativos e programadores encontrariam muito menos momentos de aprendizado.

    
por 03.04.2010 / 15:02
5

Não estou convencido de que isso não pertence à meta, mas é uma manhã lenta, então qual é o problema?

O

ping, particularmente, é uma daquelas ferramentas que tem uma baixa barreira de entrada e fornece um alto grau de utilidade para um pequeno esforço. É também uma das primeiras ferramentas de diagnóstico que alguém aprende na rede. Isso significa que muitas pessoas de diferentes níveis de habilidade têm exposição a ela.

Os mecanismos subjacentes são muito bem não expostos diretamente ao usuário final do ping. O novo usuário pode dizer instantaneamente se um host está ativo ou não. Pelo menos, é o que eles pensam que veem. Como um usuário experiente, você sabe que nem sempre é o caso. Qual é o problema com o uso do ping como sua única ferramenta de diagnóstico.

Não é um indicador de que algo está em alta ou em baixa. É um indicador do tempo de resposta. A falta de uma resposta não tem relação com o fato de um host receber ou não tráfego, mas é assim que é usado, porque a maioria dos hosts responde a pacotes ICMP. Ainda tenho usuários relativamente bem informados que juram que os servidores remotos estão inativos se não responderem ao ICMP.

O resultado é que, enquanto for usado por usuários que ignoram seu propósito, haverá perguntas. O bônus é que essas perguntas nos dão a oportunidade de melhorar o conhecimento das pessoas perguntando.

Quanto ao traceroute, é uma ferramenta muito complexa que parece muito simples. "Se eu tracerou este IP, eu vejo todos os computadores entre ele e eu", como se a internet fosse uma série de tubos, como um metrô, onde você poderia ver as paradas entre você e seu destino.

Como você sabe, a internet não funciona assim. Rotas mudam o tempo todo. Não há garantia de que dois pacotes percorrerão o mesmo caminho (ou até mesmo que a resposta do ICMP percorrerá o mesmo caminho que a origem). Isso não significa que o traceroute não seja útil, mas requer um nível mais alto de conhecimento para interpretar.

Mais uma vez, quando as pessoas fazem perguntas traceroute, devemos ver isso como uma oportunidade para educar, em vez de uma desculpa para abusar delas.

    
por 03.04.2010 / 15:09
0

A manipulação de erros é a capacidade mais subestimada na programação e a menos testada também. Se um trecho de código faz um "ping" ou "traceroute", ele deve ter boas razões para fazê-lo. Por exemplo. além disso ao sentir "não consigo acessar o servidor de e-mail", o código pode elaborar e gravar um despejo ping e traceroute nos logs. Isso pode ser muito útil se sua topologia de rede tiver bugs, mas apenas às 4 da manhã.

Detecte a falha do serviço detalhadamente primeiro e depois faça o diagnóstico. Sugerir que tudo está bem, ao julgar que o diagnóstico do host seria insensato.

Um ponto no ping-then-do pode ser o fato de que a maioria dos protocolos baseados em TCP tem tempos de espera muito longos e os programadores tentam poupar os usuários da espera. Fazer pings reais ainda está errado aqui, no entanto. Detectar falha do servidor de email em um processo separado, reconfigurar para usar o servidor de backup. Há soluções limpas para cada situação de falha sem usar ping.

    
por 03.04.2010 / 16:08
0

O que me levou a começar isso foi que eu fui votado por simplesmente perguntar por que alguém estava fazendo uma rota de rastreamento para o Google.

Havia um cara que eu conhecia em um lugar que você conheceria se eu te contasse. Nós estávamos juntos muitas vezes na janela de manutenção em 30 de agosto e ele iria encontrar pessoas com padrões notáveis de ping, em seguida, baixar. Ele adorava bloquear o ICMP nessas portas por alguns minutos. Isso foi há 15 anos e tenho certeza de que as coisas não acontecem mais. Oh as histórias que eu pude contar. Ficamos surpresos com a rapidez com que o backbone da internet cresceu.

Minha opinião muito contida é que um aplicativo nunca deve pingar, em seguida, fazer alguma coisa, a menos que o aplicativo seja alguma forma de ferramenta de monitoramento de rede usada pelos administradores de rede.

Sou o administrador de rede da minha rede doméstica e tenho três links WIFI de longa distância do pop do meu provedor, por isso, às vezes, tenho um serviço instável. Eu não faço ping no Yahoo quando tenho problemas, e os aplicativos que escrevo também não.

Existem programadores por aí que, mesmo quando explicados, ainda pensam que o ping-then-do é bom. Eu fui e voltei com um cara em um fórum. Ele postou código mostrando por que, e eu postei seu código de volta fixo, ele estava enviando e-mail como me recordo. Isso continuou por duas ou três vezes e sua última resposta foi que a mensagem de erro da falha de ping foi melhor do que a mensagem de erro da falha de envio de email. Você tem que amar isso.

Se alguém tiver um exemplo de quando o ping-then-do é uma boa ideia, poste-o aqui.

    
por 03.04.2010 / 20:00
0

hmm se o seu hacker acendendo um processo em uma máquina remota não é uma coisa boa, você precisa coletar outras informações primeiro. Se você hackear um site importante / seguro e eles deixarem o icmp (provavelmente não), então eles terão ids / ips em execução e se você acender essa coisa cedo demais ... tr

    
por 03.04.2010 / 21:28