This project is here to make you write your own HTTP server. You will be able to test it with a real browser. HTTP is one of the most used protocol on internet. Knowing its arcane will be useful, even if you won't be working on a website.
What is a web server? A webserver is software and hardware that uses HTTP (Hypertext Transport Protocol) and other protocols to respond to client request all around the world. A webserver displays the website content through storing, processing and delivering webpages to the users.
- Hardware side:
A web server is like a computer that stores the necessary files for a website (like text, images, and design elements). It's connected to the internet, allowing it to share these files with other devices worldwide.
- Software side:
Think of the web server's software as the boss that manages how people access the website. At the core, it's like an "HTTP server." Imagine this as the server's language that understands web addresses (URLs) and the rules for showing webpages. When you type a website's name (like www.example.com) in your browser, this HTTP server takes care of delivering the website's content to your computer.
Sources:
- What is a web server?: https://developer.mozilla.org/en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_web_server
Introduction to server-side programming and how it differs from client-side https://developer.mozilla.org/en-US/docs/Learn/Server-side/First_steps/Introduction
-
TCP and HTTP, differences and why we need to use both for a web server: https://www.goanywhere.com/blog/http-vs-tcp-whats-the-difference#:~:text=TCP%20contains%20information%20about%20what,data%20in%20the%20stream%20contains.
-
What is a socket?: https://docs.oracle.com/javase/tutorial/networking/sockets/definition.html
-
HTTP Server: Everything you need to know to Build a simple HTTP server from scratch: https://medium.com/from-the-scratch/http-server-what-do-you-need-to-know-to-build-a-simple-http-server-from-scratch-d1ef8945e4fa
-
What is epoll?: https://medium.com/@avocadi/what-is-epoll-9bbc74272f7c
-
Multithreaded Server in c++ using Epoll (LINUX SPECIFIC): https://unscriptedcoding.medium.com/multithreaded-server-in-c-using-epoll-baadad32224c
-
All web status codes https://www.w3.org/Protocols/HTTP/HTRESP.html
Haseeb Qureshi | Raav Koper | Steryu |