Para mais detalhes sobre como funcionam as conexões TCP e as confirmações, veja a resposta do Diogo
Quando você visita um site, algo assim acontece:
-
Uma conexão é feita com seu servidor DNS (caso ainda não tenha sido feito) do qual seu computador já conhece o endereço IP (ou através de algum mecanismo automático que solicita essa informação do seu ISP), enviando pacotes para conectar e reconhecer que a conexão foi feita. Após a conexão ter sido feita, seu site solicita o endereço IP do site que você visita, de modo que ele saiba qual computador entrar em contato para obter o site. Isso significa que ele envia um pacote contendo o nome do domínio para obter essa resposta. Mais tarde, também envia um pacote para fechar a conexão.
-
Uma conexão é feita com o servidor da web que hospeda o site que você deseja visitar, isso novamente envia um pacote para conectar e reconhecer a conexão. Depois disso, faz uma solicitação para a página que você deseja visitar, novamente enviando um pacote. Então ele responde e você recebe o HTML da página da web que indica a estrutura da página (não o layout).
-
Como você só tem a estrutura, ainda precisa buscar o resto. Assim, solicitações adicionais (uma questão de SU é como 40 solicitações) são feitas para obter scripts, estilos e mídias, como imagens e coisas do gênero. E como alguns deles podem não estar no mesmo servidor da web que você visita, a resolução adicional do DNS pode ocorrer, trazendo você de volta à etapa 1.
-
Além de tudo, observe que todos os pacotes recebidos são confirmados pela adição de outra fonte de dados carregada, para poupar pacotes, geralmente vários pacotes são reconhecidos de uma só vez. Assim, quando você recebe algo que você irá enviar para o servidor que você recebeu, então ele sabe que o que ele enviou não se perdeu em algum lugar. Dessa forma, o servidor não precisa tentar enviá-lo novamente.
O resultado é que você não pode baixar algo sem antes conectar e fazer upload de algumas solicitações para os servidores dos quais você está baixando. E é isso que compensa um pequeno upload ...
E não é assim que você só clica, você faz mais do que isso, vamos tomar sua pergunta como um exemplo: você digitou cerca de 500 caracteres, um caractere conta como 1 byte (se o caractere ASCII, todos estão neste caso) e pode ser de 1 a 4 bytes (se for um caractere Unicode). Então, sua pergunta realmente leva 0,5 KB ou 0,00005 MB! Mas não é apenas a questão que nos é enviada, ela também é cercada por uma solicitação POST ou AJAX que pede ao servidor para armazenar sua pergunta e os próprios cabeçalhos de pacotes.
Se você adicionar tudo, será razoável atingir alguns megabytes em algumas horas.