Resposta curta, vem da conexão TCP carregando os dados HTTP. Sites e navegadores modernos trabalham juntos usando tecnologias acima e abaixo do HTTP para aumentar a experiência do usuário.
O HTTP em si é um protocolo da camada de aplicação, com verbos padrão como GET, POST, HEAD, etc. É importante entender que cada um desses verbos é "State-less" em que cada verbo é solicitado do servidor em isolamento completo de qualquer outro pedido. Também é importante entender que cada verbo implementa um emparelhamento solicitação-resposta, de tal forma que uma solicitação e sua resposta são intrinsecamente ligadas. Assim, os manipuladores de protocolo do servidor da Web sempre rastrearão informações sobre a solicitação para que ela possa enviar a resposta.
Uma conexão TCP se apresenta para um aplicativo como um par de fluxos de E / S de e para o servidor. Depois que uma conexão TCP é estabelecida, os aplicativos apenas lêem seu fluxo de entrada e gravam em seu fluxo de saída, portanto não há maneira (válida) de o aplicativo poder enviar a resposta a ninguém porque o fluxo de saída faz parte de sua conexão. Olhe para a biblioteca Berkeley Sockets se você estiver interessado em exemplos de como tudo isso vem junto.
Espero que ajude. A maneira como tudo isso se junta é complicado e leva algum tempo para crescer. Apenas lembre-se, o próprio HTTP é um protocolo notavelmente simples que possui um conjunto muito limitado de operações e, embora apresentemos recursos adicionais abaixo e acima do próprio HTTP, eles não fazem parte do HTTP.