Características de TCP/IP
O TCP/IP tem características que permitem que o protocolo opere conforme os requisitos de implementação padronizados determinam. Essas características podem ser combinadas com opções de desenvolvimento que resultam em baixo desempenho. O impacto que essas características de TCP/IP têm em um aplicativo depende se o aplicativo é transacional ou de streaming.
Os aplicativos transacionais são afetados pela sobrecarga necessária para o estabelecimento e o encerramento da conexão. Por exemplo, cada vez que uma conexão é estabelecida em uma rede Ethernet, três pacotes de aproximadamente 60 bytes cada devem ser enviados e aproximadamente um RTT é necessário para a troca. Quando ocorre o encerramento de uma conexão, quatro pacotes são trocados. Isso é para cada conexão; um aplicativo que abre e fecha conexões geralmente incorre nessa sobrecarga em cada ocorrência.
Outro aspecto do TCP/IP é o início lento, que ocorre sempre que uma conexão é estabelecida. O início lento é um limite artificial no número de segmentos de dados que podem ser enviados antes que a confirmação desses segmentos seja recebida. O início lento foi projetado para limitar o congestionamento da rede. Quando uma conexão por Ethernet é estabelecida, independentemente do tamanho da janela do receptor, uma transmissão de 4 KB pode levar até 3-4 RTT devido ao início lento.
Uma otimização de TCP/IP chamada algoritmo Nagle também pode limitar a velocidade de transferência de dados em uma conexão. O Algoritmo Nagle foi projetado para reduzir a sobrecarga de protocolo para aplicativos que enviam pequenas quantidades de dados, como Telnet, que envia um único caractere por vez. Em vez de enviar imediatamente um pacote com muitos cabeçalhos e poucos dados, a pilha aguarda mais dados do aplicativo, ou uma confirmação, antes de continuar.
As confirmações atrasadas, comumente conhecidas como ACK atrasadas, também são projetadas em TCP/IP para permitir um retorno mais eficiente de confirmações quando os dados de retorno são recebidos do aplicativo do lado receptor. Infelizmente, se esses dados não estiverem próximos e o lado de envio estiver aguardando uma confirmação, poderão ocorrer atrasos de aproximadamente 200 milissegundos por envio.
Quando uma conexão TCP é fechada, os recursos de conexão no nó que iniciou o fechamento são colocados em um estado de espera, chamado TIME-WAIT, para proteger contra dados corrompidos se os pacotes duplicados permanecerem na rede. Isso garante que ambas as extremidades sejam concluídas com a conexão. Isso pode causar esgotamento dos recursos necessários por conexão, como RAM e portas, quando aplicativos abrem e fecham conexões com frequência.
Além de serem afetados pelo ACK atrasado e outros esquemas de prevenção de congestionamento, os aplicativos de streaming também podem ser afetados por um tamanho de janela de recebimento padrão muito pequeno na extremidade receptora.
Tópicos relacionados