Hi! I have done a similar task in the past in Java. What will I deliver, My web server will be coded in Java, it will run on a host and a port which can be configured from a config file. Proper logs will be displayed for each client request, their host, IP address, the type of request etc. There will be a server directory which will contain all the files of the webserver, which can be viewed on client that is web browser. The server will be able to handle multiple threads, that is it can serve many client simultaneously, It will perfectly handle GET and HEAD requests as you need, but if later you tell me to incorporate POST, DELETE, OPTIONS HTTP request, I will do that too. If a request for a file is not successful, then proper HTTP response will be sent to the client of HTTP 400, File Not Found. I will handle last modified and if modified since header, perfectly. We can discuss anything if you need from my side. I am open to answer and discus any questions you might have. Thank You!