dridslash / Web_server

This project is about writing our own HTTP server and test it with an actual browser.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

WEBSERV

Webserv Description

The project involves creating a basic web server from scratch that is capable of handling HTTP requests and serving static files. The server must support HTTP methods, status codes, MIME types, concurrent connections, and request headers.

HTTP

HTTP is an extensible protocol that relies on concepts like resources and Uniform Resource Identifiers (URIs), simple message structure, and client-server communication flow. On top of these basic concepts, numerous extensions have been developed over the years that add updated functionality and semantics with new HTTP methods or headers. this project is about writing our own HTTP server and testing it with an actual browser.

fetching_a_page

Request

http_request

Reponse

http_response

Features implemented

webserv-request-flow

Resources for multiplexing using kqueue

  1. https://people.freebsd.org/~jlemon/papers/kqueue.pdf
  2. https://habr.com/ru/articles/600123/
  3. https://freebsdfoundation.org/wp-content/uploads/2014/05/Kqueue-Madness.pdf
  4. https://blog.csdn.net/Timeinsist/article/details/80978713

RFCS for implementing HTTP Protocol

  1. https://www.rfc-editor.org/rfc/rfc7230
  2. https://www.rfc-editor.org/rfc/rfc7231
  3. https://www.rfc-editor.org/rfc/rfc7232
  4. https://www.rfc-editor.org/rfc/rfc7233
  5. https://www.rfc-editor.org/rfc/rfc7234
  6. https://www.rfc-editor.org/rfc/rfc7235

CGI

What is CGI?

The Common Gateway Interface, or CGI, is a standard for external gateway programs to interface with information servers such as HTTP servers. The current version is CGI/1.1 and CGI/1.2 is under progress.

68747470733a2f2f69312e61652f696d672f776562736572762f4347492e6a7067 (1)

Credits

Oussama Ouazize
Mohamed Khalil Naqqad

About

This project is about writing our own HTTP server and test it with an actual browser.


Languages

Language:C++ 86.0%Language:HTML 6.5%Language:PHP 3.9%Language:CSS 2.5%Language:Perl 0.5%Language:Makefile 0.5%Language:JavaScript 0.1%Language:Shell 0.0%