Eu estava me perguntando certo dia, como criar um web server com java, digo no sentido tipo um Apache onde você pode enviar arquivos html, php, cgi, jsp etc para o cliente no navegador. Eu tenho uma ideia de sockets porém nao sei como fazer para lidar com requisições e respostas HTTP. Então se alguem souber ou ter uma ideia boa que eu possa usar ficaria muito grato
Todo webserver é, basicamente, um socket server.
A pergunta é: qual a razão para você precisar criar um novo web server?
Os que existem não te atendem?
O objetivo é adquirir conhecimento?
Os dois para falar a verdade, o problema são as requisições e respostas do HTTP que eu não faço nem ideia de como usar
Como o @Luis_Augusto_Santos falou tem que deixar mais claro qual teu objetivo. Em relação a criar “web server” tipo apache não posso te ajudar pois nunca precisei criar. Comece estudando sobre o protocolo HTTP. Em relação a implementar requisições e respostas via HTTP, seria em qual plataforma de desenvolvimento? Você colocou as tags java e php. Se for em Java comece por aqui: https://www.caelum.com.br/apostila-java-web e no momento de criar algo real poderá usar por exemplo: https://spring.io/guides/gs/spring-boot/
Você precisará, primeiro, estudar o funcionamento do protocolo HTTP. Talvez, ir além e estudar a pilha TCP/IP e, até mesmo, UDP (se conhece socket, já ouviu falar de datagrama).
Isso tudo irá interferir e, ao mesmo tempo, depender do que você precisa ou quer fazer.