Pular para o conteúdo principal

O TCP foi projetado para suportar conexões ponta a ponta, ou seja, um host se comunicando diretamente com outro host. Claro, havia pontes e roteadores no meio, mas esses dispositivos não alteravam o cabeçalho TCP ou a carga útil. No entanto, isso não é mais o caso. Agora temos coisas como tradutores de endereços de rede, firewalls, sistemas de prevenção de intrusão e aceleradores de rede. Todos esses dispositivos podem modificar o cabeçalho TCP, enviar confirmações ou reinicializações ou simplesmente descartar o pacote. Para piorar a situação, esses dispositivos estão em cada extremidade da rede e, às vezes, também no meio.

Imagine o caso de um host A na rede B com uma conexão com o host Y na rede Z. Na frente da rede B há um acelerador WAN que aumenta a taxa de transferência falsificando reconhecimentos do host Y. Isso permite que o host A envie dados o mais rápido possível. O acelerador cuidará de todo o buffer e retransmissões. Infelizmente, o sistema de prevenção de intrusão na frente da rede Z está descartando um pacote inocente, mas de aparência suspeita, do host A. O host Y nunca o vê, portanto não o reconhece. O acelerador WAN na frente da rede B retransmite, mas é claro que o pacote é descartado novamente. O acelerador eventualmente expira e envia uma reinicialização de volta para o host A e o host Y.

O que o administrador do sistema do host A vê quando tenta descobrir o que está acontecendo após uma reclamação do usuário? Ele vê que os pacotes saem do host A e são reconhecidos pelo host Y, mas não há resposta da camada de aplicação do host Y e, em seguida, o host Y reinicia a conexão, sem nada que indique qualquer problema ou o motivo pelo qual o host Y reiniciou a conexão. O que o administrador do sistema do host Y vê? Ele vê que o host A simplesmente parou de enviar pacotes e, em seguida, enviou uma reinicialização, novamente sem nada que indique qualquer problema ou o motivo pelo qual o host A reinicializou a conexão.

A suposição de que o host A está se comunicando diretamente com o host Y é incorreta e faz com que cada administrador culpe o outro sistema pela falha na conexão.

Para descobrir o que está acontecendo, você precisa prestar atenção aos valores dos campos “desinteressantes” nos dados de rastreamento do cabeçalho IP, campos como “Tipo de serviço”, ID, Sinalizadores e “Tempo de vida” (TTL). Alterações nesses campos, por exemplo, pacotes com dados têm um TTL de 47 e pacotes sem dados têm um TTL de 127, podem indicar que os pacotes são originários de duas fontes diferentes.

Comparar os traços do host A e do host Y pode ajudar a esclarecer o problema. Além de poder ver pacotes em um traço que não estão no outro, as alterações em todos os campos de cabeçalho IP sem interesse ou na porta TCP ou nos números de sequência indicarão com 100% de certeza que esses hosts não estão se comunicando diretamente entre si.

Pode não ser possível desligar o acelerador de rede ou o sistema de prevenção de invasões (e talvez não seja uma boa ideia), mas saber que eles estão lá e saber o que estão fazendo aumenta suas chances de compreender e corrigir os problemas quando eles ocorrerem.

© 2024 Stratus Technologies.