Anúncio do UDP - até onde eu sei - requer um único pacote para cima e um para baixo. Nenhuma conexão persistente é negociada ou estabelecida. O servidor não precisa se lembrar de qual ip: porta o anúncio veio, apenas para o breve momento em que decide o que responder.
O anúncio HTTP, no entanto, funciona em uma conexão TCP. Isso significa que a conexão precisa ser negociada, usada e depois demolida. Todas essas etapas exigem mais de dois pacotes: - Negociação: um SYN para cima, um SYN-ACK para baixo e um ACK para cima. - uso. Se tivermos sorte, a solicitação HTTP se encaixa em um único pacote upstream. O servidor, em seguida, responde com um pacote ACK, em seguida, envia sua resposta em um pacote separado. O cliente também responde com um pacote ACK. Naturalmente, como não é o cliente que dita como o fluxo TCP é dividido em pacotes, mas no sistema operacional, tanto a solicitação quanto a resposta podem ser fragmentadas em vários pacotes, cada um exigindo um ACK em resposta. Além disso, outras complicações, como saturações de MTU, podem forçar o servidor e o cliente a reenviar esses pacotes fragmentados em tamanhos menores. - Derrubar a conexão também leva três pacotes: FIN, FIN-ACK e ACK.
Assim, os anúncios HTTP exigem 10 pacotes no mínimo, mas potencialmente mais do que isso, além de alguns aguardarem se a rede decidir descartar um pacote. Durante todo esse tempo, o servidor (e o cliente também, mas isso não importa realmente para o cliente, não é o único que tem que lidar com mais de mil anúncios por segundo) tem que manter os detalhes da conexão na RAM . Para a quantidade de anúncios que um único cliente faz, a diferença é insignificante (até mesmo a navegação leve gera mais tráfego), mas no lado do servidor, soma-se a quantias em que uma diminuição de 5 vezes significa muito.